一般资源服务器和授权服务器是一个
资源拥有者
客户端应用
资源服务器
授权服务器
客户端类型
OAuth 2.0 规范定义了两种客户端类型:
保密的: web 应用
公有的: 用户代理原生
下图是一个保密的客户端应用即 web 应用
授权
授权批准由资源服务器及其相关的授权服务器给客给予户端应用 OAuth 2.0 四种不同类型授权批准:
授权码
契约
资源拥有者密钥证书
客户端证书
下面是当用授权码授权客户端应用时的授权过程:
端点
OAuth 2.0 定义了一系列端点端点就是 web 服务器上的 URI 这些端点定义有:
授权端点 user--->server
令牌端点 client--->server
重定向端点 user--->client
请求和响应
取决于授权类型, 下面只记录一下授权码授权的请求和响应
授权码授权总共有 2 个请求和 2 个响应组成一个授权请求 + 响应, 一个信息请求 + 响应
授权请求:
response_type | 必须。必须被设置到代码里 |
---|---|
client_id | 必须。当客户端被注册时,授权服务器要标识的客户端。 |
redirect_uri | 可选。通过客户端注册的重定向 URI。 |
scope | 可选。请求可能的作用域。 |
state | 可选 (推荐的)。任何需要被传递到客户端请求的 URI 客户端的状态。 |
授权响应:
code | 必须。授权码 |
---|---|
state | 如果出现在请求中,必须包含。如果有的话,和客户端请求中发送的 state 参数一样。 |
授权错误:
error | 必须。必须是预先定义的错误码之一。参见规范查查这些错误码及它们的含义。 |
---|---|
error_description | 可选。一段 UTF-8 编码的描述错误的文本。适用于开发者,而不是最终用户。 |
error_uri | 可选。 一个指向包含人类可读的错误信息网页的 URI。 |
state | 必须。如果出现在授权请求期间,和请求中的 state 参数一样。 |
令牌请求:
grant_type | 必须。必须被设置到授权码中。 |
---|---|
code | 必须。被授权服务器接收到的授权码。 |
redirect_uri | 必须。如果请求 URI 包括在授权请求中,之后必须是相同的。 |
令牌响应:
- { "access_token" : "...",
- "token_type" : "...",
- "expires_in" : "...",
- "refresh_token" : "...",
- }
参考
我所知道的关于 OAuth 2 的资料
理解 OAuth 2.0 - 阮一峰
OAuth 2.0 Tutorial
OAuth 2.0 系列教程
- OAuth 2.0 - The Good, The Bad & The Ugly
- https://github.com/ameizi?tab=repositories
来源: http://www.bubuko.com/infodetail-2519199.html