[英]Programmatic authentication with oauth2
我們已經使用了一些組織的 API,但現在他們開始使用 OAuth2 進行身份驗證。 他們的 API 完全由我們的應用程序以編程方式使用。 所以現在我們必須使用 OAuth2 進行身份驗證,以便我們可以再次使用他們的 API。
我對這個身份驗證過程有點困惑。 有沒有辦法以編程方式使用 OAuth 進行身份驗證? 它說在進行身份驗證時,將要求用戶在繼續身份驗證之前登錄,您如何僅從代碼中實現這種登錄? 或者您是否需要先使用瀏覽器進行身份驗證,然后使用訪問令牌來處理來自應用程序的進一步請求。 這種場景下 OAuth2 認證的典型流程是什么?
編輯:只有一個用戶是我們的應用程序用於訪問其數據的帳戶。 該用戶最終注冊為 API 的使用者。
您混淆了不同的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 +------------------+
令牌請求通常具有以下格式:
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是函數,而不是文字字符串。
我對這個問題和 Turtle 的回答都投了贊成票。 我認為任何像我一樣查過這個問題的人也會受益於:
https://auth0.com/docs/authorization/flows/which-oauth-2-0-flow-should-i-use
有不同的流量。 在編寫代碼之前在方框/握手圖中考慮它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.