- OAuth 2實戰寶典
- 糜鵬程編著
- 1199字
- 2024-01-18 11:43:22
1.2.4 授信客戶端模式
1.授權請求示例
授信客戶端(Client Credentials Grant)模式的標準模式常用于第三方應用直接訪問開放平臺的場景,在這種場景下不需要用戶進行授權,而是由第三方應用直接發起授權,并獲取授權信息。
授信客戶端模式在實際應用中有變種授信客戶端模式,主要用于自研應用的授權,即自研應用通過傳遞自身的client_id和client_secret,獲取在創建應用時被賦予的所有權限。
注意
一般用戶在創建自研應用時會綁定自己的賬號,所以獲取的權限為綁定賬號的權限。
步驟1 無論是標準授信客戶端模式還是變種授信客戶端模式,在進行授權時,發起的請求沒有任何區別,會直接創建如示例1.9所示的授權請求。

示例1.9 授信客戶端模式的授權請求
示例1.9中各參數的含義如下。
? client_id:第三方應用在開放平臺注冊完成后獲取的唯一標識。
? client_secret:第三方應用在開放平臺注冊完成后獲取的密碼。
? grant_type:OAuth 2規定在標準授信客戶端模式下,該字段的值為client_credentials;在變種授信客戶端模式下,該字段的值為self_credentials。授權系統會根據該字段進行場景必要參數的校驗,在驗證通過后執行相關流程。
步驟2 授權系統收到請求后,根據grant_type進行后續流程。
? 如果grant_type為client_credentials,則進行標準的授信客戶端模式的授權流程,即只返回access_token信息。標準授信客戶端模式的授權信息如示例1.10所示。該模式返回的access_token信息,只能調用開放平臺所開放給第三方應用的、與用戶無關的能力。


示例1.10 標準授信客戶端模式的授權信息
? 如果grant_type為self_credentials,則獲取綁定的用戶信息并生成授權信息,如示例1.6所示。
2.系統交互流程
下面通過圖1-4來介紹變種授信客戶端模式在grant_type為self_credentials時的授權流程。

圖1-4 變種授信客戶端模式的授權流程
在注冊成自研應用時,為第三方應用綁定用戶信息。
步驟1 第三方應用發起綁定用戶信息請求。
步驟2 授權系統通過后臺接口驗證用戶信息。
步驟3 認證系統校驗成功后會返回用戶的真實信息。
步驟4 在授權系統中綁定用戶信息與應用信息。
步驟5 授權系統向第三方應用返回綁定成功的信息。
下面是第三方應用的授權流程。
步驟6 第三方應用向授權系統請求獲取access_token信息,詳見示例1.9。
步驟7 授權系統向第三方應用返回access_token信息,詳見示例1.6。
標準授信客戶端模式的授權流程比較簡單,只需第三方應用直接發起如示例1.9所示的請求,此時grant_type為client_credentials,即可直接獲取如示例1.10所示的授權信息。
總結
關于四種授權模式的應用場景。
? 隱式授權模式由于存在安全問題,在工作實踐中應用較少。
? 授權碼授權模式基于前后端通道分離的方式,提供了很強的安全性,因此成為應用最為廣泛的授權模式。
? 授信客戶端密碼模式會直接暴露密碼給第三方應用,在使用該模式時要求第三方應用有良好的安全措施,并且是完全值得信任的伙伴,如子公司。
? 在OAuth 2所定義的授信客戶端模式(標準授信客戶端模式)中,主要是開放平臺將開放系統中與用戶無關的功能開放給第三方應用。在變種授信客戶端模式中,由于已經將開放系統的用戶與第三方應用進行了綁定,因此在進行授權時,可以獲取所綁定的用戶數據和相關功能。這種變種授信客戶端模式一般用于自研應用的授權場景。
- C#完全自學教程
- Java EE 7 Performance Tuning and Optimization
- Java零基礎實戰
- Unity&VR游戲美術設計實戰
- 編寫高質量代碼:改善Objective-C程序的61個建議
- HTML5開發精要與實例詳解
- 寫給程序員的Python教程
- Nagios Core Administration Cookbook(Second Edition)
- 深入解析Java編譯器:源碼剖析與實例詳解
- Django Design Patterns and Best Practices
- Instant Automapper
- .NET 4.0面向對象編程漫談:應用篇
- 多媒體技術及應用
- Flask開發Web搜索引擎入門與實戰
- Java程序性能優化實戰