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
相关推荐
换句话说,如果你的项目使用OWIN实现OAuth 2.0 之客户端模式,但是没有配置machineKey,也没有在认证服务中自定义认证。那么我就可以利用OWIN实现OAuth 2.0 之客户端模式的基本原理生成一个token,你会发现我这个...
Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 Java Servlet为支持http会话做了哪些事儿。 基于session认证机制的运作流程。 基于token认证机制的运作流程。 理解Spring Security的工作原理,Spring ...
OAuth 2.0 主要分为四个角色:资源所有者(Resource Owner)、客户端(Client)、授权服务器(Authorization Server)和资源服务器(Resource Server)。资源所有者是拥有数据的用户,客户端是请求访问这些资源的...
OAuth 2.0 协议中文译本共分为九大部分,分别介绍了 OAuth 2.0 协议的背景知识、术语中英对照表、OAuth 2.0 协议的中文译本、OAuth 2.0 协议的工作流程、OAuth 2.0 协议的安全机制、OAuth 2.0 协议的优点、OAuth 2.0...
**OAuth2.0协议概述** OAuth2.0是一种授权框架,允许第三方应用在用户许可的情况下,访问特定资源。它主要用于安全地实现用户数据的共享,比如社交媒体登录、云存储服务等。OAuth2.0的核心是将用户的授权过程与实际...
在Java中,客户端通常需要实现OAuth2的四个授权模式:授权码模式(Authorization Code Grant)、隐式模式(Implicit Grant)、客户端凭据模式(Client Credentials Grant)和刷新令牌模式(Refresh Token Grant)。...
第三方应用需要在你的OAuth2.0服务器注册,获取client_id和client_secret,这些信息在请求授权时需要用到。 6. **授权流程**: 用户通过浏览器重定向到授权页面,选择是否允许第三方应用访问其资源。如果用户同意...
首先,OAuth2.0协议主要包括四个角色:资源所有者(Resource Owner)、客户端(Client)、资源服务器(Resource Server)和授权服务器(Authorization Server)。在服务端授权码模式下,客户端通过引导用户访问授权...
微信OAuth2.0是微信开放平台提供的一种授权机制,用于帮助第三方应用安全地获取微信用户的个人信息。PHP客户端client则是开发者用来实现这一授权流程的代码库。在这个特定的案例中,我们有一个名为`weixin_oauth2....
### OAuth2.0协议原理与实现 #### 一、OAuth2.0协议概述 OAuth2.0协议是一种广泛应用于第三方登录及授权的标准协议。相比于OAuth1.0版本,OAuth2.0进行了多方面的优化和改进,例如简化了授权流程、取消了Token的...
**OAuth2.0简介** OAuth2.0是一种授权框架,广泛应用于Web API的身份验证和授权。它允许第三方应用在用户授权的情况下,访问该用户的特定资源,而无需获取用户的用户名和密码。OAuth2.0的核心是将认证和授权分离,...
微信OAuth2.0授权是一种广泛应用于移动应用和网站的第三方登录解决方案,主要目的是为了安全地获取用户的微信身份标识——openid,以便提供个性化服务或者与其他微信功能集成。在本文中,我们将详细探讨微信OAuth2.0...
在提供的压缩包中,包含两个Maven项目,一个是`oauthserver`,代表了OAuth 2.0的服务端,另一个是`oauthclient01`,代表了客户端。 ### 1. OAuth 2.0 服务端(oauthserver) 服务端是OAuth协议的核心,负责验证...
1. **授权码 Grant Type**:OAuth2.0中最常见的授权类型,它引导用户在服务提供商(如QQ或新浪)上进行登录并同意授权。用户授权后,服务提供商返回一个授权码,这个授权码用于换取访问令牌。 2. **客户端(Client...
SpringBoot集成OAuth2.0是将流行的OAuth2.0安全框架与SpringBoot应用程序相结合的过程,以便为API和Web应用提供安全的访问控制。OAuth2.0是一个授权框架,允许第三方应用在用户授权的情况下访问其受保护的资源,而...
OAuth2.0主要包括四个角色:资源所有者(User)、客户端(Client)、授权服务器(Authorization Server)和资源服务器(Resource Server)。流程大致如下: - 用户打开第三方应用并请求访问资源。 - 第三方应用...
OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth 1.0(即完全废止了OAuth1.0)。 OAuth 2.0关注客户端开发者的简易性。要么通过组织在资源拥有者和HTTP服务商之间的被批准的交互动作代表用户,要么允许第三方应用...
OAuth2.0是一种广泛应用于各种在线服务的授权框架,它允许第三方应用安全地访问用户的受保护资源,而无需用户直接共享他们的登录凭证。在Java环境中实现OAuth2.0,通常会依赖于一些特定的jar包。这些jar包包含了处理...
首先,OAuth 2.0的核心概念包括四个角色:资源所有者(Resource Owner)、客户端(Client)、资源服务器(Resource Server)和授权服务器(Authorization Server)。资源所有者是拥有数据的用户,客户端是请求访问...