OAuth_2
角色:
OAuth2.0为用户和应用定义了如下角色:
资源拥有者、资源服务器、客户端应用、授权服务器
资源拥有者:拥有共享数据的人或应用,比如Facebook的用户就是
资源拥有者,但资源拥有者也可以是一个应用
资源服务器:托管资源的服务器。比如Facebook
客户端应用:请求访问存储在资源服务器资源的应用。资源被资源拥有者所
拥有。客户端应用可以是一个请求访问用户Facebook账号的第三方游戏
授权服务器:授权客户端应用能够访问资源拥有者所拥有的资源。授权服务器和资源
服务器可以是同一个服务器,但不是必须的,如果这二个服务器是分开的,OAuth2.0
没有讨论二个服务器应该如何通信,这是由资源、授权服务器自行决定的
客户端类型:
保密、公有
保密的客户端能够对外部保持客户端密码保密。该客户端密码是由授权
服务器分配给客户端应用的。为了避免欺骗,该密码是授权服务器用来
识别客户端的。例如一个保密的客户端可以是web应用,除了管理员,没有
任何人能够访问服务器和看到该密码。
公有的客户端不能使客户端密码保密。比如移动手机应用或桌面应用汇将
密码嵌入在内部。这样的应用可能被破解,并且泄露密码。
客户端配置:
web应用、用户代理、原生
web应用:运行在web服务器内的应用,实际上,web应用一般由浏览器和服务端
组成。如果web应用需要访问资源服务器(Facebook账号),然后客户端密码被保存
在服务器上,因此密码是保密的。
用户代理: 用户代理应用比如运行在浏览器上的JavaScript应用,浏览器
是用户代理,用户代理应用可以保存在web服务器上,但应用程序只运行一次
下载的用户代理。
原生应用:比如桌面应用或移动手机应用。
授权:
客户端标识,客户端秘钥和重定向URI:
在客户端应用能请求访问资源服务器的资源之前,客户端应用程序
必须先在资源服务器相关联的授权服务器中进行注册。注册一个一次性
的任务。一旦注册了,除非客户端注册被取消了,注册将持续有效。注册
后客户端应用将由授权服务器分配客户端标识和秘钥。在授权服务器上,
客户端标识和秘钥是唯一标识客户端应用的,如果客户端应用注册了多个授权
带我去,每一个授权 服务器将 发出唯一的标识给该客户端应用。无论什么时候客户端
应用,想要访问同样资源服务器上的资源,都需要通过发送客户端标识和秘钥到授权服务器
来验证自己。在注册过程中,客户端应用也注册了一个重定向URI,当资源拥有者授权给客户 应用时,该重定向URI会被使用。当资源拥有者成功的通过授权服务器给客户端应用时,
资源拥有者被重定向回客户端应用,再跳转到该重定向URI
授权批准类型:
授权码、契约、资源拥有者秘钥证书、客户端证书
授权码:资源拥有者访问客户端应用,客户端应用告诉用户通过授权
服务器Facebook来登录到客户端应用。 为了通过授权服务器登录,用户
通过客户端被重定向到授权服务器。客户端应用发送它的客户端标识给授权服务器
那么授权服务器就知道哪个应用尝试访问守保护的资源。当被重定向回客户端应用时
授权服务器发送给用户特定的重定向URI,即客户端已经提前与授权服务器注册。随着
重定向,授权服务器发送一个代表授权的授权码。 当在客户端应用的重定向被URI被访问时,
客户端应用直接连接授权服务器,客户端应用发送授权码,客户端标识及秘钥,如果客户端
应用能接受这些值,那么授权服务器返回一个访问令牌。 现在客户端应用就可以用该访问
令牌请求资源服务器的资源了,该访问令牌可作为客户端授权和授权访问资源。
契约: 契约授权类似授权码授权,除了用户完成授权后,访问令牌返回给客户端
应用外。当用户代理被重定向到重定向URI,访问令牌因此被返回。这意味着访问
令牌可以被用户的代理访问,或者在契约授权过程中参与的原生应用。访问令牌在
web服务器上不上安全存储的。 进一步说,客户端应用可以只发送它的客户端标识给
授权服务器。如果客户也发送它的秘钥,那么客户端秘钥将不得不保存在用户代理或原生
应用里,那将使它很容易被破解。 契约授权大多数用在用户代理或原生应用中。用户代理
或原生应用将收到授权服务器的访问令牌
资源拥有者秘钥证书: 资源拥有者证书授权方法通过客户端应用访问资源
拥有者证书来工作。比如用户可以在客户端应用输入他的Facebook用户名
及秘钥(证书) 该客户端应用就可以用用户名和秘钥访问用户在Facebook的资源
客户端证书: 客户端证书授权对应客户端需要在资源服务器访问资源或调用函数的情形
使用,与特定的资源拥有者无关
OAuth_2的更多相关文章
随机推荐
- 设置intellij IDEA编辑框背景色
首先是打开idea开发工具,然后点击左上角的File,选择Settings设置 应用即时生效,无需重启idea
- Codeforces Round #584 - Dasha Code Championship - Elimination Round (rated, open for everyone, Div. 1 + Div. 2)
怎么老是垫底啊. 不高兴. 似乎 A 掉一道题总比别人慢一些. A. Paint the Numbers 贪心,从小到大枚举,如果没有被涂色,就新增一个颜色把自己和倍数都涂上. #include< ...
- [Java复习] 微服务
1. 怎么样定义一个微服务,或划分服务比较合理?业务导向的共性? 对应服务拆分,先设计高内聚低耦合的领域模型(DD),再实现相应的分布式系统是一种比较合理的方式. 微服务是手段,不是目的.目的是为了让 ...
- 测试md代码折叠功能
展开查看 System.out.println("Hello to see U!");
- Halo(十)
Spring Converter(转换器) @FunctionalInterface public interface Converter<S, T> { //一对一转换 @Nullabl ...
- boost Filesystem
The library Boost.Filesystem makes it easy to work with files and directories. Paths Paths can be bu ...
- Android自动化测试框架UIAutomator原理浅析
UIAutomator是一个Android自动化测试框架,是谷歌在Android4.1版本发布时推出的一款用Java编写的UI测试框架,它只能用于UI即黑盒方面的测试.所以UIAutomator只能运 ...
- POJ 2396 Budget (上下界网络流有源可行流)
转载: http://blog.csdn.net/axuan_k/article/details/47297395 题目描述: 现在要针对多赛区竞赛制定一个预算,该预算是一个行代表不同种类支出.列代表 ...
- vue.js样式绑定
vue.js样式绑定 class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性. Vue.js v-bind 在处理 class 和 styl ...
- Ubuntu 14.04修复grub
1.进livecd 2.sudo fdisk -l 找到安装分区 3.sudo mount /dev/sda? /mnt 挂载安装分区 4.sudo mount --bind /dev /mnt/de ...