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的更多相关文章
随机推荐
- shell脚本检索所有mysql数据库中没有primary key的表
1.mkdir -p /root/scripts/ 2. cd /root/scripts/ vim query.sql,代码如下: SELECT CONCAT(t.table_schema,&quo ...
- 唐太宗灵州勒石 TANGTAIZONGLINZHOULESHI
唐太宗灵州勒石 唐贞观二十年(646年),在唐军和回纥部落联合打败突厥薛延陀部后,原归附薛延陀部的回纥.拔野古.斛薛等部族,越过贺兰山,进入了今宁夏的银川.吴忠一带地区.这些总族向唐朝提出,愿意臣服唐 ...
- C#高级编程笔记 (6至10章节)运算符/委托/字符/正则/集合
数学的复习,4^-2即是1/4/4的意思, 4^2是1*2*2的意思,而10^-2为0.01! 7.2运算符 符号 说明 例 ++ 操作数加1 int i=3; j=i++; 运算后i的值为4,j ...
- golang中最大协程数的限制(线程)
golang中最大协程数的限制 golang中有最大协程数的限制吗?如果有的话,是通过什么参数控制呢?还是通过每个协程占用的资源计算? 通过channel控制协程数的就忽略吧. 以我的理解,计算机资源 ...
- 磁盘I/O工作原理
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11524947.html TODO Reference https://time.geekbang.or ...
- git常用操作命令1
1. 本地库初始化操作 命令: git init 效果: Initialized empty Git repository in E:/ws/git/ws/.git/ 会在当前目录(E:/ws/git ...
- kafka-consumer.properties
# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreement ...
- 二、制作BOM表格--物料表格--Bill of Materials
二.制作BOM表格--物料表格--Bill of Materials 公司会根据这个表格进行相关元器件的采购--以及后期的贴片上彩 操作: .dsn--Tools--Bill of Materials ...
- iOS 开发加密做法
一般做法是这样的: 客户端 每一个请求的URL中加上时间的参数.对url中的参数是排序好的. 然后对这个URL进行MD5.将这个MD5作为最后一个参数(sign)拼接到url最后. 服务端 收到请求后 ...
- python中global的作用域
#python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量 . ''' a=30 声明为全局变量 a=20 为test()函 ...