[英]Use an ID token or access token at userinfo endpoint?
我有一個客戶端 API,這是一個機密客戶端。 當我使用開放 id 提供程序進行身份驗證時,我將使用授權代碼重定向到我的回調,該代碼會立即交換以接收刷新令牌、訪問令牌和 ID 令牌。
現在,我為經過身份驗證的用戶創建了一個具有 uuid 的會話 cookie。 當用戶提出請求時,我是否...
在使用刷新令牌時,我看到 2 個選項:
想法?
先說幾點:
但最重要的是:刷新令牌不應該用於獲取新的 ID 令牌,它應該只刷新訪問令牌; 用戶需要在場才能獲得與原始 ID 具有相同語義的新 ID 令牌。
簡而言之,您只使用身份驗證令牌來訪問 userinfo_endpoint uri。
OpenID Connect 允許使用“發現文檔”,這是在眾所周知的位置找到的 JSON 文檔,其中包含提供有關 OpenID Connect 提供程序配置的詳細信息的鍵值對,包括授權的 URI、令牌、撤銷、用戶信息、和公鑰端點。
您可以從他們的文檔中研究每個應用程序的唯一發現頁面 uri,例如這里是Google
您向發現文檔 uri 發出 get 請求,並從該文檔中找到 userinfo_endpoint uri。
來自微軟的示例響應
GET https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration
{
"authorization_endpoint": "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize",
"token_endpoint": "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token",
"token_endpoint_auth_methods_supported": [
"client_secret_post",
"private_key_jwt"
],
"jwks_uri": "https://login.microsoftonline.com/{tenant}/discovery/v2.0/keys",
"userinfo_endpoint": "https://graph.microsoft.com/oidc/userinfo",
"subject_types_supported": [
"pairwise"
],
...
}
Google 的發現文檔 uri
GET https://accounts.google.com/.well-known/openid-configuration
獲取授權令牌。 例如,拉起 Network -> Fetch/XHR 現在環顧四周並嘗試找到帶有密鑰“授權”的請求標頭。 復制 'Bearer {the id}' 並放入一個 get 請求的頭部,如下圖所示。
GET or POST /oidc/userinfo HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJub25jZSI6Il…
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.