简介和区别

  • SSO, single sign on,单点登录。sso多用于多个应用之间的切换,例如百度论坛、百度知道、百度云、百度文库等,在其中一个系统中登录, 切换到另一个系统的时候,不必再次输入用户名密码。
  • oauth2.0,开放授权,不兼容oauth1.0.允许第三方应用代表用户获得访问权限。可以作为web应用、桌面应用和手机等设备提供专门的认证流程。例如,用qq账号登录豆瓣、美团、大众点评;用支付宝账号登录淘宝、天猫等。
  • 区别:sso和oauth2.0在应用场景上的区别在于,SSO是为了解决一个用户在鉴权服务器登陆过一次以后,可以在任何应用(通常是一个厂家的各个系统)中畅通无阻。OAuth2.0解决的是通过令牌(token)而不是密码获取某个系统的操作权限(不同厂家之间的账号共享)。

SSO

传统的多应用切换,面临 cookie 跨域和session共享的问题,只要解决了上面两块问题都可以是实现SSO。
下面介绍了一种单点登录的方式CAS(中央认证服务Central Authentication Service)。
CAS介绍
2012年,Jasig和另一个有影响的组织Sakai Foundation合并,组成Apereo。Apereo是一个由高等学术教育机构发起组织的联盟,旨在为学术教育机构提供高质量软件,当然很多软件也被大量应用于商业环境,譬如CAS。目前CAS由Apereo社区维护。
CAS的官方网址是: https://www.apereo.org/projects/cas
Github地址:https://github.com/apereo/cas

主要特征:

  1. CAS服务是保障各业务系统的用户资源的安全 。
  2. 各个业务系统获得的信息是,这个用户能不能访问我的资源。
  3. 单点登录,资源都在各个业务系统这边,不在CAS服务那一方。 用户在给CAS服务器提供了用户名密码后,作为业务系统并不知道这件事。CAS随便给业务系统一个ST,那么业务系统是不能确定这个ST是用户伪造的,还是真的有效,所以要拿着这个ST去CAS服务器再问一下,这个用户给我的ST是否有效,是有效的我才能让这个用户访问。

上图是CAS官网上的标准流程,具体流程如下:

  1. 用户访问app系统,app系统是需要登录的,但用户现在没有登录。
  2. 跳转到CAS server,即SSO登录系统,以后图中的CAS Server我们统一叫做SSO系统。SSO系统也没有登录,弹出用户登录页。
  3. 用户填写用户名、密码,SSO系统进行认证后,将登录状态写入SSO的session,浏览器(Browser)中写入SSO域下的Cookie。
  4. SSO系统登录完成后会生成一个ST(Service Ticket),然后跳转到app系统,同时将ST作为参数传递给app系统。
  5. app系统拿到ST后,从后台向SSO发送请求,验证ST是否有效。
  6. 验证通过后,app系统将登录状态写入session并设置app域下的Cookie。

至此,跨域单点登录就完成了。以后我们再访问app系统时,app就是登录的。接下来,我们再看看访问app2系统时的流程。

  1. 用户访问app2系统,app2系统没有登录,跳转到SSO。
  2. 由于SSO已经登录了,不需要重新登录认证。
  3. SSO生成ST,浏览器跳转到app2系统,并将ST作为参数传递给app2。
  4. app2拿到ST,后台访问SSO,验证ST是否有效。
  5. 验证成功后,app2将登录状态写入session,并在app2域下写入Cookie。

这样,app2系统不需要走登录流程,就已经是登录了。SSO,app和app2在不同的域,它们之间的session不共享也是没问题的。

302 表示临时性重定向。访问一个Url时,被重定向到另一个url上,常用于页面跳转。

oauth2.0

OAuth2 RFC6749中文翻译:http://colobu.com/2017/04/28/oauth2-rfc6749/

OAuth 2.0授权框架支持第三方支持访问有限的HTTP服务,通过在资源所有者和HTTP服务之间进行一个批准交互来代表资源者去访问这些资源,或者通过允许第三方应用程序以自己的名义获取访问权限。

为了方便理解,可以想象OAuth2.0就是在用户资源和第三方应用之间的一个中间层,它把资源和第三方应用隔开,使得第三方应用无法直接访问资源,从而起到保护资源的作用。

为了访问这种受保护的资源,第三方应用(客户端)在访问的时候需要提供凭证。即,需要告诉OAuth2.0你是谁你要做什么。

你可以将用户名和密码告诉第三方应用,让第三方应用直接以你的名义去访问,也可以授权第三方应用去访问。

可以联想一下微信公众平台开发,在微信公众平台开发过程中当我们访问某个页面,页面可能弹出一个提示框应用需要获取我们的个人信息问是否允许,点确认其实就是授权第三方应用获取我们在微信公众平台的个人信息。这里微信网页授权就是使用的OAuth2.0。

OAuth定义了四种角色:

  1. resource owner(资源所有者)
  2. resource server(资源服务器)
  3. client(客户端):代表资源所有者并且经过所有者授权去访问受保护的资源的应用程序
  4. authorization server(授权服务器):在成功验证资源所有者并获得授权后向客户端发出访问令牌
    授权类型有四种:authorization code, implicit, resource owner password credentials, and client credentials

参考 https://blog.csdn.net/tclzsn7456/article/details/79550249

SSO(CAS)和Oauth2.0区别和原理相关推荐

  1. OAuth2.0第三方授权原理与实战

  2. OAuth2.0学习(2-1)Spring Security OAuth2.0 开发指南

    开发指南:http://www.cnblogs.com/xingxueliao/p/5911292.html Spring OAuth2.0 提供者实现原理: Spring OAuth2.0提供者实际 ...

  3. oauth2.0 php简化模式,OAuth2.0学习(1-5)授权方式2-简化模式(implicit grant type)

    授权方式2-简化模式(implicit grant type) 简化模式(implicit grant type)不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了"授 ...

  4. OAuth2.0的一些疑问

    目录 1. 授权码(code)不担心暴露么? 2. 图示OAuth完整流程 3. 每次第三方登录,都需要重新走第二步的全部流程么? 4. OAuth 2.0 CSRF攻击 4. OAuth1.0和OA ...

  5. SSO单点登录和OAuth2.0的区别和理解

    一.概述 SSO是Single Sign On的缩写,OAuth是Open Authority的缩写,这两者都是使用令牌的方式来代替用户密码访问应用.流程上来说他们非常相似,但概念上又十分不同.SSO ...

  6. sso和oauth2.0的简单了解学习

    sso,单点登录,single sign on 缩写.sso多用于多个应用之间的切换,例如百度论坛.百度知道.百度云.百度文库等,在其中一个系统中登录,(登录有效期内)切换到另一个系统的时候,不必再次 ...

  7. OAuth2.0(及OIDC 1.0)选型建议及SSO、SLO方案

    目录 1. 关于认证 2. OAuth 2.0 3. OIDC 1.0 4. OIDC选型建议 4.1 PKCE 5. SSO方案 5.1 SSO SPA 5.2 SSO WEB 6. SLO方案 6 ...

  8. SSO和Oauth2的区别

    一.简介和区别 SSO, single sign on,单点登录.sso多用于多个应用之间的切换,例如百度论坛.百度知道.百度云.百度文库等,在其中一个系统中登录, 切换到另一个系统的时候,不必再次输 ...

  9. OAuth2.0 原理流程及其单点登录和权限控制

    作者:王克锋 kefeng.wang/2018/04/06/oauth2-sso 单点登录是多域名企业站点流行的登录方式.本文以现实生活场景辅助理解,力争彻底理清 OAuth2.0 实现单点登录的原理 ...

最新文章

  1. iOS 13 如何删除SceneDelegate
  2. 9大数据集6大度量指标完胜,周志华等提出深度森林处理多标签学习
  3. keepalive 配合mysql主主复制
  4. 轻量级分布式文件系统FastDFS使用安装说明手册(新手入门级)
  5. 物联网时代,对产品经理有哪些新的要求?
  6. @NotNull 、@NotBlank、@NotEmpty区别
  7. npm包的语义版本控制(Semantic Versioning of Packages)
  8. 如何重新安装win2008服务器系统分区,怎么解决安装server2008后磁盘分区消失的方法步骤...
  9. 如何利用 Flutter 实现炫酷的 3D 卡片和帅气的 360° 展示效果
  10. 窘境遇到HR Manager
  11. html怎么给div加半透明背景色,CSS_div背景半透明 覆盖整个可视区域的遮罩层效果,html代码很简单 div class= - phpStudy...
  12. android 投屏与控制,android投屏pc及电脑adb控制手机
  13. ubuntu虚拟机上外网设置
  14. 家中为什么要用软路由
  15. 基于Tushare的上证综指行情分析与影响其涨跌的因素(以美债为例)
  16. 数据预处理 - 类型转换(离散型)
  17. Android GPS根据经度获取时区
  18. 苹果联通 VoLTE 来了!
  19. Linux SPI驱动学习——调用SPI读写函数
  20. 365天挑战LeetCode1000题——Day 117 数位DP II

热门文章

  1. 开源, 一种全新的创业模式,正在悄然袭来
  2. Linux查看tomcat服务进程号,Linux下启动停止查看杀死Tomcat进程
  3. WebSocket实现消息推送
  4. 软件工程(三)—— 结构化方法
  5. 思维导图用在了课堂教学中
  6. 新疆理化所计算机复试科目,2018年中科院新疆理化技术研究所考研专业目录
  7. SQL语句 改写 / 插入转换快捷键
  8. 航模遥控器FM/PCM与FM/PPM区别_上海无线模型航模遥控飞机专卖店_百度空间
  9. 魔兽争霸【war3】(1.20E 1.24B 1.24E)内存地址全公开
  10. HTML网页页面如何进行元素审查,和审查功能简介