簡體   English   中英

我們可以使用 ID Token 作為訪問令牌嗎?

[英]can we use ID Token as an Access Token?

據我所知,ID 令牌如下所示:

{
  "iss": "http://YOUR_DOMAIN/",
  "sub": "authentication",
  "aud": "clien id",
  "exp": 1512285980,
  "iat": 1512280980,
  "name": "omid",
  "given_name": "omid",
  "family_name": "haghighatgoo",
  "gender": "male",
  "birthdate": "1987-10-31",
  "email": "a@b.com",

}

和訪問令牌是這樣的:

{
  "iss": "https://YOUR_DOMAIN/",
  "sub": "authentication",
  "aud": [
    "api-identifier",
    "https://YOUR_DOMAIN/userinfo"
  ],
  "azp": "clientid",
  "exp": 1512285980,
  "iat": 1512280980,
  "scope": "profile email"
}

因為很明顯,訪問令牌中的所有參數也可以在 id 令牌中。 那么為什么我們不應該使用 id 令牌作為訪問令牌呢? 我的意思是如果使用 JWT,它們都可以由一個令牌處理。

OpenID 連接建立在 OAuth2 之上,並添加了 ID 令牌作為一項額外功能。 OpenID 和 OAuth2 都沒有說明訪問令牌的格式應該是什么(它不必是 JWT),所以你應該在你的問題中解釋為什么你說它有這種格式(即你是哪個 OpenID 提供者(OP)使用)。 訪問令牌可以很容易地成為授予存儲在 OP 上的數據的不透明引用(例如,它還允許撤銷訪問)。

為了提供最簡單的答案,您可能無法這樣做,因為如果您這樣做,您的 OP 將拒絕該請求。 ID 令牌的受眾是客戶端,而訪問令牌的受眾是 OP。 它們用於不同的目的,將以不同的方式進行編碼和驗證。

ID 令牌是客戶端應用程序的信息,用於告訴它經過身份驗證的用戶是誰。 它可能會使用非對稱算法進行簽名,以便客戶端可以驗證它是由 OP 發布的。

客戶端應用程序根本不需要知道訪問令牌的內容或對其進行驗證。 當 OP 在userinfo端點收到請求時,它只需要被 OP 理解和驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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