`

[转]OAuth 2.0 筆記 (4.4) Client Credentials Grant Flow 細節

阅读更多

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"
}

 

OAuth 2.0 系列文目錄

转自:https://blog.yorkxin.org/2013/09/30/oauth2-4-4-client-credentials-grant-flow

分享到:
评论

相关推荐

    OWIN实现OAuth 2.0 之客户端模式(Client Credential)

    换句话说,如果你的项目使用OWIN实现OAuth 2.0 之客户端模式,但是没有配置machineKey,也没有在认证服务中自定义认证。那么我就可以利用OWIN实现OAuth 2.0 之客户端模式的基本原理生成一个token,你会发现我这个...

    Spring Security OAuth2.0学习笔记.zip

    Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 Java Servlet为支持http会话做了哪些事儿。 基于session认证机制的运作流程。 基于token认证机制的运作流程。 理解Spring Security的工作原理,Spring ...

    完整Oauth 2.0实现实例

    OAuth 2.0 主要分为四个角色:资源所有者(Resource Owner)、客户端(Client)、授权服务器(Authorization Server)和资源服务器(Resource Server)。资源所有者是拥有数据的用户,客户端是请求访问这些资源的...

    OAuth2.0协议中文版

    OAuth 2.0 协议中文译本共分为九大部分,分别介绍了 OAuth 2.0 协议的背景知识、术语中英对照表、OAuth 2.0 协议的中文译本、OAuth 2.0 协议的工作流程、OAuth 2.0 协议的安全机制、OAuth 2.0 协议的优点、OAuth 2.0...

    cas3.5.0集成oauth2.0协议

    **OAuth2.0协议概述** OAuth2.0是一种授权框架,允许第三方应用在用户许可的情况下,访问特定资源。它主要用于安全地实现用户数据的共享,比如社交媒体登录、云存储服务等。OAuth2.0的核心是将用户的授权过程与实际...

    oauth2.0服务端客户端代码jar包

    在Java中,客户端通常需要实现OAuth2的四个授权模式:授权码模式(Authorization Code Grant)、隐式模式(Implicit Grant)、客户端凭据模式(Client Credentials Grant)和刷新令牌模式(Refresh Token Grant)。...

    基于Django2.1.2的OAuth2.0授权登录

    第三方应用需要在你的OAuth2.0服务器注册,获取client_id和client_secret,这些信息在请求授权时需要用到。 6. **授权流程**: 用户通过浏览器重定向到授权页面,选择是否允许第三方应用访问其资源。如果用户同意...

    Oauth2.0 协议 服务端 客户端 thinkphp5.0

    首先,OAuth2.0协议主要包括四个角色:资源所有者(Resource Owner)、客户端(Client)、资源服务器(Resource Server)和授权服务器(Authorization Server)。在服务端授权码模式下,客户端通过引导用户访问授权...

    微信Oauth2.0 PHP 客户端 client

    微信OAuth2.0是微信开放平台提供的一种授权机制,用于帮助第三方应用安全地获取微信用户的个人信息。PHP客户端client则是开发者用来实现这一授权流程的代码库。在这个特定的案例中,我们有一个名为`weixin_oauth2....

    OAuth2.0协议原理与实现

    ### OAuth2.0协议原理与实现 #### 一、OAuth2.0协议概述 OAuth2.0协议是一种广泛应用于第三方登录及授权的标准协议。相比于OAuth1.0版本,OAuth2.0进行了多方面的优化和改进,例如简化了授权流程、取消了Token的...

    webapi基于Owin中间件的oauth2.0身份认证

    **OAuth2.0简介** OAuth2.0是一种授权框架,广泛应用于Web API的身份验证和授权。它允许第三方应用在用户授权的情况下,访问该用户的特定资源,而无需获取用户的用户名和密码。OAuth2.0的核心是将认证和授权分离,...

    微信oauth2.0授权

    微信OAuth2.0授权是一种广泛应用于移动应用和网站的第三方登录解决方案,主要目的是为了安全地获取用户的微信身份标识——openid,以便提供个性化服务或者与其他微信功能集成。在本文中,我们将详细探讨微信OAuth2.0...

    Java的oauth2.0 服务端与客户端的实现(源码)

    在提供的压缩包中,包含两个Maven项目,一个是`oauthserver`,代表了OAuth 2.0的服务端,另一个是`oauthclient01`,代表了客户端。 ### 1. OAuth 2.0 服务端(oauthserver) 服务端是OAuth协议的核心,负责验证...

    c# OAuth2.0

    1. **授权码 Grant Type**:OAuth2.0中最常见的授权类型,它引导用户在服务提供商(如QQ或新浪)上进行登录并同意授权。用户授权后,服务提供商返回一个授权码,这个授权码用于换取访问令牌。 2. **客户端(Client...

    springboot集成oauth2.0

    SpringBoot集成OAuth2.0是将流行的OAuth2.0安全框架与SpringBoot应用程序相结合的过程,以便为API和Web应用提供安全的访问控制。OAuth2.0是一个授权框架,允许第三方应用在用户授权的情况下访问其受保护的资源,而...

    OAuth2.0代码模拟实现

    OAuth2.0主要包括四个角色:资源所有者(User)、客户端(Client)、授权服务器(Authorization Server)和资源服务器(Resource Server)。流程大致如下: - 用户打开第三方应用并请求访问资源。 - 第三方应用...

    OAuth2.0协议中文版.pdf

    OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth 1.0(即完全废止了OAuth1.0)。 OAuth 2.0关注客户端开发者的简易性。要么通过组织在资源拥有者和HTTP服务商之间的被批准的交互动作代表用户,要么允许第三方应用...

    OAuth2.0 使用到的jar包

    OAuth2.0是一种广泛应用于各种在线服务的授权框架,它允许第三方应用安全地访问用户的受保护资源,而无需用户直接共享他们的登录凭证。在Java环境中实现OAuth2.0,通常会依赖于一些特定的jar包。这些jar包包含了处理...

    java实现oauth2.0服务端+客户端(含JWT)

    首先,OAuth 2.0的核心概念包括四个角色:资源所有者(Resource Owner)、客户端(Client)、资源服务器(Resource Server)和授权服务器(Authorization Server)。资源所有者是拥有数据的用户,客户端是请求访问...

Global site tag (gtag.js) - Google Analytics