随着互联网的发展,web应用的复杂度也一直在提升,慢慢的单一的web应用已经不能满足复杂的业务需求。例如百度的搜索、新闻、百科、贴吧,其实本质上都是不同的网站。当用户使用这些平台的时候,我们当然不希望用户在每一个平台都有一个单独的账号,不然的话用户和开发者可能都会有想哭的冲动。所以我们就需要一种用户登录一次就可以访问所有相互信任的应用的系统,这种系统我们就管它叫单点登录(sso,Single Sign On)系统。

简单实现

在本系列的上一章的最后一节中我们介绍了基于cookie的认证模式,基于这种模式我们其实很容易实现一个单点登录系统。一般我们同一个系统的多个站点会在同一个顶级域名下(如,.baidu.com.cn),这样我们就可以让这些站点共享同一个顶级域名的cookie。这样只要一个站点登录了,所有的站点就都可以拿到登录认证信息。但是这种做法有两个缺点:

1、我们不一定能够保障我们所有的子系统都在同一个顶级域名下。

2、各个站点要分别实现一套登录认证功能。

鉴权与授权

在讨论如何解决仅仅基于cookie实现的单点登录系统的缺点之前,我们要先讨论另一个话题,就是鉴权与授权的分离。

我们一般说的登录系统指的是:识别用户身份,然后允许用户访问符合其身份权限的资源。这里边其实有两件事,识别用户身份这一步我们称之为鉴权,允许用户访问符合其身份权限的资源这一步我们称之为授权。在传统的单站点应用中,我们很少会将鉴权与授权分开来讨论,因为当时的登录功能简单。可是当代web站点的鉴权与授权都趋于多样化。比如在鉴权的时候我们可以使用账号密码、手机短信验证码、OAuth、人脸识别等等;同样不同站点对于授权的需求和权限的体系都是各不相同的。由于两者的多样化与不同,为了降低耦合,提高内聚,我们就有必要将鉴权与授权过程分开看待。

实现单点登录系统

当我们理解了鉴权与授权的概念之后,我们就很自然的会发现,一般来讲当各站点需要同一套认证体系的时候,其实他们的鉴权体系是统一的,而授权过程则可能各不相同。

我们来思考一下现实生活中我们是如何解决类似的问题的:当我们认定一个人是我们公司的员工的时候,我们就会有一个统一的部门制作和发放给我们员工一张工作证;然后员工更具这张工作证上的信息不同,决定了他在公司各个部门中能干什么不能干什么。

同样的我们可以制作一个统一认证站点来负责鉴权这步。当用户访问我们的一个站点的受保护资源的时候,我们先将用户重定向到统一认证站点;如果用户未登录,则跳到统一认证站点的登录界面进行登录,登录成功之后生成一个用户的身份票据(就像工作证一样),然后将票据信息返回给用户访问的站点;如果用户已登录,则跳过登录步骤,直接将用户的身份票据返回给用户访问的站点;然后不同的站点再根据自己的授权体系,决定用户是否能够访问响应的资源。

这样我们既解决了域名可能不统一的问题,又只需要实现统一分登录认证功能。

身份认证系统(二)多WEB应用的单点登录的更多相关文章

  1. 八幅漫画理解使用JSON Web Token设计单点登录系统

    用jwt这种token的验证方式,是不是必须用https协议保证token不被其他人拦截? 是的.因为其实只是Base64编码而已,所以很容易就被解码了.如果你的JWT被嗅探到,那么别人就可以相应地解 ...

  2. 八幅漫画理解使用 JSON Web Token 设计单点登录系统

    原文出处: John Wu 上次在<JSON Web Token – 在Web应用间安全地传递信息>中我提到了JSON Web Token可以用来设计单点登录系统.我尝试用八幅漫画先让大家 ...

  3. [转]八幅漫画理解使用JSON Web Token设计单点登录系统

    上次在<JSON Web Token - 在Web应用间安全地传递信息>中我提到了JSON Web Token可以用来设计单点登录系统.我尝试用八幅漫画先让大家理解如何设计正常的用户认证系 ...

  4. 介绍 ASP.NET Identity - ASP.NET 应用程序的成员身份认证系统

    ASP.NET Identity 是构建 ASP.NET web 应用程序的一种新的身份认证系统.ASP.NET Identity 可以让您的应用程序拥有登录功能,并可以轻松地自定义登录用户的相关数据 ...

  5. 基于DDD + SD.Framework实现的统一身份认证系统

    项目地址 http://git.oschina.net/lishilei0523/ShSoft.UAC 项目说明 本项目开发的目的有三: 1.作为一个使用SD.Framework框架开发的项目样板 2 ...

  6. 中国科学技术大学统一身份认证系统CAS

    CAS | Apereohttps://www.apereo.org/projects/cas 中国科学技术大学统一身份认证系统https://passport.ustc.edu.cn/login?s ...

  7. 身份认证系统(一)单WEB应用的身份认证

    身份认证技术,也就是所谓的登录功能,是现代WEB系统最常见的功能之一.本系列文章就试图为大家详细的介绍身份认证技术. Basic认证模式 Basic认证模式是较早被广泛应用的一种HTTP标准提供的认证 ...

  8. Django用户认证系统(二)Web请求中的认证

    在每个Web请求中都提供一个 request.user 属性来表示当前用户.如果当前用户未登录,则该属性为AnonymousUser的一个实例,反之,则是一个User实例. 你可以通过is_authe ...

  9. Django认证系统实现的web页面

    结合数据库.ajax.js.Djangoform表单和认证系统的web页面 一:数据模块 扩展了Django中的user表,增加了自定义的字段 from django.db import models ...

随机推荐

  1. 用CSS3 & jQuery创建apple TV海报视差效果

    用CSS和jQuery来实现它,尽量看起来和原效果一样. 最终效果图 本教程里,我将使用CSS,HTML和jQuery来创建一个近似Apple TV视差效果,如果你正在阅读,我假设你对上述三种技术都有 ...

  2. OSMC Vs. OpenELEC Vs. LibreELEC – Kodi Operating System Comparison

    Kodi's two slim-and-trim kid brothers LibreELEC and OpenELEC were once great solutions for getting t ...

  3. 图片(imageView)

    图片(imageView): 常用属性: android:scaleType(图片显示的格式) android:src(图片源,一般使用的资源) android:scaleType属性的常用取值 0. ...

  4. php 3des加密 兼容JAVA 多么痛的领悟呀

    最近和别人做接口用到SOCKET TCP/IP方式 其中需要对账号和密码进行3DES加密 对方提供了一个加密比对的软件和JAVA的实现代码 并且给了我们一个长度为32位的密钥 这边需要用PHP来实现! ...

  5. 在 Windows Server Container 中运行 Azure Storage Emulator(一):能否监听自定义地址?

    我要做什么? 改 ASE 的监听地址.对于有强迫症的我来说,ASE 默认监听的是 127.0.0.1:10000-10002,这让我无法接受,所以我要将它改成域名 + 80 端口的方式: 放到容器中. ...

  6. Java学习---JFreeChart动态图表

    JFreeChart是Java中开源的制图组件,主要用于生成各种动态图表.在Java的图形报表技术中,JFreeChart组件提供了方便.快捷.灵活的制图方法.作为一个功能强大的图形报表组件,JFre ...

  7. 7 Dockerfile指令详解 && VOLUME 指令

    格式为: VOLUME ["<路径1>", "<路径2>"...] VOLUME <路径> 之前我们说过,容器运行时应该尽量 ...

  8. 乘风破浪:LeetCode真题_011_Container With Most Water

    乘风破浪:LeetCode真题_011_Container With Most Water 一.前言 下面我们继续进行编程练习,可以说对于实际问题的活学活用是非常重要的.比如我们这次的题目,就需要从中 ...

  9. C/S结构软件测试要点汇总

    C/S结构测试要点   1.安装/卸载: 1.安装包:完整性,安装包大小是否达到要求,显示基本信息是否正确,步骤是否明确,内容是否合理. 2.首次安装: 1)是否与其他已安装的软件冲突. 2)各种杀毒 ...

  10. poi导出excel出现本工作薄不能再使用其他新字体的解决方法

    最近使用POI处理EXCEL,当处理的单元格太多时,就会出现,本工作薄使用字体过多,不能再使用其他新的字体的是提示. 网上很多方法告诉我,要怎么修改excel文件,但是这个解决不了问题啊,难道让客户去 ...