对SSO单点登陆和OAuth2.0的区别和理解

SSO是Single Sign On的缩写,OAuth是Open Authority的缩写,这二者都是使用令牌的方式来代替用户密码访问应用。流程上来讲他们很是类似,但概念上又十分不一样。浏览器

  • SSO你们应该比较熟悉,它将登陆认证和业务系统分离,使用独立的登陆中心,实现了在登陆中心登陆后,全部相关的业务系统都能免登陆访问资源。
  • OAuth2.0原理可能比较陌生,但平时用的却不少,好比访问某网站想留言又不想注册时使用了微信受权。

以上二者,你在业务系统中都没有帐号和密码,帐号密码是存放在登陆中心或微信服务器中的,这就是所谓的使用令牌代替帐号密码访问应用。tomcat

SSO

二者有不少类似之处,下面咱们来解释一下这个过程。先来说解SSO,经过SSO对比OAuth2.0,才比较好理解OAuth2.0的原理。SSO的实现有不少框架,好比CAS框架,如下是CAS框架的官方流程图。服务器

8ouOB9.png

上面的流程大概为:微信

  • 用户输入网址进入业务系统Protected App,系统发现用户未登陆,将用户重定向到单点登陆系统CAS Server,并带上自身地址service参数
  • 用户浏览器重定向到单点登陆系统,系统检查该用户是否登陆,这是SSO(这里是CAS)系统的第一个接口,该接口若是用户未登陆,则将用户重定向到登陆界面,若是已登陆,则设置全局session,并重定向到业务系统
  • 用户填写密码后提交登陆,注意此时的登陆界面是SSO系统提供的,只有SSO系统保存了用户的密码,
  • SSO系统验证密码是否正确,若正确则重定向到业务系统,并带上SSO系统的签发的ticket
  • 浏览器重定向到业务系统的登陆接口,这个登陆接口是不须要密码的,而是带上SSO的ticket,业务系统拿着ticket请求SSO系统,获取用户信息。并设置局部session,表示登陆成功返回给浏览器sessionId(tomcat中叫JSESSIONID)
  • 以后全部的交互用sessionId与业务系统交互便可

OAuth2.0

OAuth2.0有多种模式,这里讲的是OAuth2.0受权码模式,OAuth2.0的流程跟SSO差很少markdown

  • 用户在某网站上点击使用微信受权,这里的某网站就相似业务系统,微信受权服务器就相似单点登陆系统
  • 以后微信受权服务器返回一个确认受权页面,相似登陆界面,这个页面固然是微信的而不是业务系统的
  • 用户确认受权,相似填写了帐号和密码,提交后微信鉴权并返回一个ticket,并重定向业务系统。
  • 业务系统带上ticket访问微信服务器,微信服务器返回正式的token,业务系统就可使用token获取用户信息了

以上,就是个人SSO和OAuth2.0的理解session

参考资料

相关文章
相关标签/搜索