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