美文网首页ionic
SSO单点登录与 OAuth2.0授权简单介绍

SSO单点登录与 OAuth2.0授权简单介绍

作者: 谢大见 | 来源:发表于2017-09-25 11:47 被阅读239次

    在一个单位中,可能是存在多个不同的应用,比如学校会有财务的系统会有学生工作的系统,还有图书馆的系统等等,如果每个系统都用独立的账号认证体系,会给用户带来很大困扰,也给管理带来很大不便。所以需要设计一种统一登录的解决方案。比如我登陆了百度账号,进贴吧时发现已经登录了,进糯米发现也自动登录了。常见的有两种情况,一种是SSO(单点登录)效果是一次输入密码多个网站可以识别在线状态;还有一种是多平台登录,效果是可以用一个账号(比如QQ账号)登录多个不同的网站。

    SSO与多平台登录
    SSO一般用于同一单位的多个站点的登陆状态保持,技术上一般参考CAS协议;多平台登录一般是Oauth体系的协议,有多种认证模式但是不具备会话管理和状态保持。不过从本质上讲,我觉得两者都是通过可信的第三方进行身份验证,如果说同一单位的多个子系统共同只围绕一个第三方账户(可以称为认证中心)进行多平台登录验证,那么在第三方平台登录后再访问其他网站,效果和统一登录是差不多的。此外,Oauth2还有个好处就是可以实现跨平台的登录管理,因为他的认证过程不依赖于session和cookie,比如对于移动端设备,以及在前后端分离后这种登录认证方式也可以起到很大作用。

    oauth2的基本概念
    在Oauth中至少是有用户,应用服务器,认证服务器这几个角色在交互。OAuth的作用就是让"客户端"安全可控地获取"用户"的授权,与"应用服务器"进行互动。
    OAuth2的基本流程

    • 用户通过浏览器访问一个应用,比如我要上慕课网学习。
    • 网站要求我登录,我选择使用QQ登录,这里的QQ登录就是那个认证服务器。
    • 这个时候慕课提供的QQ登录链接会把我带到QQ登录页面
    • 在QQ的登录页面完成登录后,选择授权,也就是允许慕课网获取我的资料。
      这个时候我们看到浏览器经过几次跳转后返回慕课网,这个时候我们已经完成了登录。

    重点在于几次跳转的过程中,慕课网和QQ登录的服务之间还有过几次交互。
    1.我们选择了授权的时候QQ登录服务器会根据慕课跳转到QQ时候给出的重定向链接返回给慕课网一个code,这个code代表QQ的登录服务器认可慕课网这个应用服务器的这个请求是合法的予以放行.
    2.慕课这个时候就会用这个code再次向QQ登录服务发起请求服务令牌(token)。
    3.拿到这个令牌之后,接下来慕课需要用户的一些基本信息时就可以通过在向QQ服务提交的请求头里带上这个令牌,令牌验证通过就可以拿到用户资源。

    这一部分的操作是应用服务器和验证服务器之间的交互,这个过程对用户是透明的。这个过程中慕课网是不需要知道用户的账号密码也可以完成对用户身份的认证,这个token就可以用来标识用户资源。官方的运行流程图是这样的:

    基于OAUTH2的统一认证的实例解析_
    OAuth的几种认证模式
    上述讲的是OAuth2中支持的授权码(CODE)方式的认证流程,也是其支持的四种认证方式里最复杂的,其他的三种种包括:
    简化模式(implicit),(在redirect_uri 的Hash传递token; Auth客户端运行在浏览器中,如JS,Flash)
    密码模式(resource owner password credentials),将用户名,密码传过去,直接获取token;
    客户端模式(client credentials),无用户,用户向客户端注册,然后客户端以自己的名义向'服务端'获取资源;详细的OAuth2资料参考理解OAuth 2.0|阮一峰的网络日志分别适用不同场景,复杂度也比授权码模式要低,所以这里就只说说授权码模式的具体过程。

    参考链接:http://www.imooc.com/article/10931#comment
    参考链接:理解OAuth 2.0|阮一峰的网络日志

    相关文章

      网友评论

        本文标题:SSO单点登录与 OAuth2.0授权简单介绍

        本文链接:https://www.haomeiwen.com/subject/tgmrextx.html