1 回答

TA貢獻1853條經驗 獲得超9個贊
您混淆了不同的 OAuth 流程。用戶進行身份驗證的流程通常是 authorization_code 流程,而您要使用的流程應該是 client_credentials 流程。
讓我們將您的應用程序稱為“A”,將您使用其服務的組織稱為“B”。
在 client_credentials 流程中,A 會將他的 client_id 和 client_secret 發送給 B 的授權服務器。該服務器將返回一個訪問令牌,您現在可以使用它來調用 B 的資源服務器(服務本身)。
+---------------+ +------------------+
| Application A | 1 | Authorization |
| +----------+ serveur |
+---------------+ 2 +------------------+
+---------------+ +------------------+
| Application A | 3 |Resource Server |
| +----------+ |
+---------------+ 4 +------------------+
帶有 client_id 和 client_secret 的令牌請求
令牌響應:帶有 access_token 的 json
標題為“Authorization: Bearer”的服務請求
服務響應一如既往。
令牌請求通常采用以下格式:
POST /token HTTP/1.1
Host: authorization-server.com
grant_type=client_credentials
&client_id=xxxxxxxxxx
&client_secret=xxxxxxxxxx
但有些人可能會選擇強制執行其他選項:在授權標頭中傳遞客戶端信息:
POST /token HTTP/1.1
Host: authorization-server.com
Authorization: Basic base64(client_id:client_secret)
grant_type=client_credentials
Base64 在這里是函數,而不是文字字符串。

TA貢獻1810條經驗 獲得超5個贊
我贊成這個問題和海龜的回答。我認為任何像我一樣查過這個問題的人也會從中受益:
https://auth0.com/docs/authorization/flows/which-oauth-2-0-flow-should-i-use
有不同的流量。在代碼之前在方框/握手圖中考慮它們。
添加回答
舉報