OAuth 2.0 筆記 (4.4) Client Credentials Grant Flow 細節
即 Client ID + Client Secret 。適用於跑在 Server 的 Client 。
如果是以下情況的話,就可以使用這個流程:
- Client 自己就是 Resource Owner ,Client 取用的是自己擁有的 Protected Resources
- Client is requesting access to protected resources based on an authorization previously arranged with the authorization server. (這個我看不懂,所以保留原文,求解釋…)
這個流程只能用在 Confidential Client 。
這是 OAuth 2.0 內建的四個流程之一。相對於別的流程來說簡單很多。本文整理自 Section 4.4。
流程圖
+---------+ +---------------+
| | | |
| |>--(A)- Client Authentication --->| Authorization |
| Client | | Server |
| |<--(B)---- Access Token ---------<| |
| | | |
+---------+ +---------------+
Figure 6: Client Credentials Flow
(A) Client 向 Authorization Server 認證自己,並且發 Request 到 Token Endpoint
(B) Authorization Server 認證 Client ,如果正確的話,核發 Access Token。
(A) Access Token Request
【Client】POST ▶ 【Token Endpoint】
參數
grant_type | 必 | client_credentials |
scope | 選 | 申請的存取範圍 |
Authorization Server 的處理程序
這個 Request 進來的時候, Authorization Server 必須認證 Client,細節見系列文第 2 篇。(跟 Authorization Code Grant Type / Resource Owner Credentials Grant Type 不同,這個強制要求認證)
範例
POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
(B) Access Token Response
【Client】 ◀ 【Token Endpoint】
若 Access Token Request 合法且有經過授權,則核發 Access Token,但是最好不要核發 Refresh Token。如果 Client 認證失敗,或 Request 不合法,則依照 Section 5.2 的規定回覆錯誤。
詳細核發 Access Token 的細節寫在系列文第 5 篇。
(除了「建議不要發 Refresh Token」這一點之外,大致上同 Authorization Code Grant Flow。)
範例
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"2YotnFZFEjr1zCsicMWpAA",
"token_type":"example",
"expires_in":3600,
"example_parameter":"example_value"
}
转自:https://blog.yorkxin.org/2013/09/30/oauth2-4-4-client-credentials-grant-flow
相关推荐
Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 Java Servlet为支持http会话做了哪些事儿。 基于session认证机制的运作流程。 基于token认证机制的运作流程。 理解Spring Security的工作原理,Spring ...
OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth 1.0(即完全废止了OAuth1.0)。 OAuth 2.0关注客户端开发者的简易性。要么通过组织在资源拥有者和HTTP服务商之间的被批准的交互动作代表用户,要么允许第三方应用...
springboot 集成oauth2.0服务器,基于oauth2.0授权码形式集成
完整Oauth 2.0 代码实现,包含数据库脚本,使用说明,导入数据库脚本,修改数据库配置可直接运行。
通过点击viewbutton获取用户openid,实现方式oauth2.0认证
基于Owin中间件的OAuth2.0身份认证,文章位置https://blog.csdn.net/u013938578/article/details/82956188
OAUTH2.0+OpenLDAP技术框架,及适用场景,综合价值等PPT文档,可修改!!!
cas3.5.0集成oauth2.0协议,模拟cas3.5.0通过oauth2.0协议与集成了coauth2.0的cas进行模拟通信。可以实现 与新浪微博等第三方身份验证平台对接,实现单点登录。
基于Django2.1.2的OAuth2.0授权登录 大学生课程设计 基于Django2.1.2的OAuth2.0授权登录的课程设计 自己大二写的课程设计
在服务端,基于 Owin OAuth, 针对 Resource Owner Password Credentials Grant 的授权方式,只需重载 OAuthAuthorizationServerProvider.GrantResourceOwnerCredentials() 方法即可
Oauth2.0,第三方登录鉴权验证教程。
Java的oauth2.0 服务端与客户端的实现.zip 封装了oauth2.0的基本架构和实现,对照我的博客http://blog.csdn.net/jing12062011/article/details/78147306使用该源码。 下载项目压缩包,解压,里面两个maven项目:...
Java的oauth2.0 服务端与客户端的实现源码下载,里面两个maven项目:oauthserver和oauthclient01。
OAuth2.0协议原理与实现
spring security oauth2.0 需要的基础 sql 文件
OAuth2.0协议中文版,方便了解OAuth2.0协议
Oauth2.0协议 整合php框架 客户端 服务端授权码模式小demo
换句话说,如果你的项目使用OWIN实现OAuth 2.0 之客户端模式,但是没有配置machineKey,也没有在认证服务中自定义认证。那么我就可以利用OWIN实现OAuth 2.0 之客户端模式的基本原理生成一个token,你会发现我这个...