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的更多相关文章
随机推荐
- jquery 小知识
$("p:eq(0)") :表p标签的第一个元素 $("p:eq(1)") :表p标签的第二个元素
- struts2中的Action实现的三种方式
Action类创建方式有哪些? 方式一:直接创建一个类,可以是POJO,即原生Java类,没有继承任何类,也没有实现任何接口 这种方式使得strust2框架的代码侵入性更低,但是这种方式是理想状态,开 ...
- Python中的"Special Method"
The first thing to know about special methods is that they are meant to be called by the Python inte ...
- yield关键字详解与三种用法
本篇文章比较硬核, 适合有一定Python基础的读者阅读, 如果您对Python还不甚了解可以先关注我哦, 我会持续更新Python技术文章 yield详解 yield与return相同每次调用都会返 ...
- mysql查看sql执行情况的几种方法
mysql系统变量分为全局变量和会话变量,全局变量的修改影响到整个服务器,会话变量修改只影响当前的会话. 查看log日志是否开启 show variables like 'general_log' s ...
- CentOS 7在VMware 12中共享文件看不见的问题?
前言 由于rhel 7.2因为没有注册导致yum无法使用,包括自己配置本地源,这个命令在你没有注册都不能使用,每次使用rpm去装软件,自己去找缺少的依赖包,实在是麻烦.于是不如就换一个系统,CentO ...
- yarn 国内加速,修改镜像源
为什么慢 由于默认情况下执行 yarn 各种命令是去国外的 yarn 官方镜像源获取需要安装的具体软件信息,所以在不使用代理.不翻墙的情况下,从国内访问国外服务器的速度相对比较慢 可以通过以下命令快速 ...
- Python Django 编写一个简易的后台管理工具2-创建项目
django-admin 创建项目 pycharm 创建项目
- idhttp提交post
var Param:TStringList; RStream:TMemoryStream;begin Param:=TStringList.Create; RStream:=TMemoryStream ...
- Mac版-python环境配置(二):编译器pycharm下载安装
简介 PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完成.单元测试.版本 ...