随着互联网的发展,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. BZOJ5068: 友好的生物(状压 贪心)

    题意 题目链接 Sol 又是一道神仙题??.. 把绝对值拆开之后状压前面的符号?.. 下界显然,但是上界为啥是对的呀qwq.. #include<bits/stdc++.h> using ...

  2. 洛谷P3763 [TJOI2017]DNA(后缀数组 RMQ)

    题意 题目链接 Sol 这题打死我也不会想到后缀数组的,应该会全程想AC自动机之类的吧 但知道这题能用后缀数组做之后应该就不是那么难了 首先把\(S\)和\(S0\)拼到一起跑,求出Height数组 ...

  3. css常见的快捷开发代码汇总(长期更新)

    http://caibaojian.com/popular-css-snippets.html

  4. VC学习笔记---ATL MFC CLR三个库的区别

    MFC.ATL和CLR是VC2005内置的三大库,涵盖了Windows的各种开发方法和开发应用.当然关于C++开发的库不止这三个,不过这三个是微软推荐. 从编程所处层次而言,WIN32为最底层,其次是 ...

  5. C/C++遍历进程和进程ID的小工具

    原文:http://blog.csdn.net/qq78442761/article/details/54646010 当我们写某些具有破坏性的程序时就需要对进程进行遍历和提取ID 对于上述功能,我们 ...

  6. SSM 框架-02-MyEclipse 2017 安装与破解

    SSM 框架-02-MyEclipse 2017 安装与破解 现在在学J2EE,然后使用的工具就是 MyEclipse,现在就抛弃 Eclipse 了,我就不多说它俩的区别了,但是 MyEclipse ...

  7. android头像上传(获取头像加剪切)

    因为项目中需要用到头像上传的功能,所以就下个Ddmo先来实现下. demo我是类似仿微信的,在一个GridView中展示所有的图片,其中第一个item可以去照相:获取到图片后再进行剪切. 图片的剪切是 ...

  8. 【分享】BS大神的C++ 11 keynotes

    看到infoQ上面有BS大神的keynotes讲C++ 11的,有点长,但是值得一看.   http://www.infoq.com/presentations/Cplusplus-11-Bjarne ...

  9. 几种常见的Windows 服务器无法联网/无法连接远程桌面等故障解决方案

    SEO优化扫我一.服务器无法连接远程桌面 1.Ping不通IP,网站打不开,不可以远程连接.可能是服务器死机了,或者网络有问题,请尝试Web重启服务器或联系服务商确认. 2.Ping正常,网站可以打开 ...

  10. FTP作业

    实现一个FTP网盘的功能 pa's's