簡體   English   中英

使用 oauth2 進行編程身份驗證

[英]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     +------------------+

  1. 使用client_id和client_secret的令牌請求
  2. 令牌響應:帶有access_token的json
  3. 標頭為“授權:承載”的服務請求
  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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM