![](/img/trans.png)
[英]Best practice for id_token vs. access_token use in AWS Lambda
[英]OAuth 2 access_token vs OpenId Connect id_token
雖然我之前使用過 OAuth 2,但我是 Open ID Connect 的新手。
閱讀教程和文檔,我遇到了access_token和id_token ,其中access_token 是根據 OAuth 2 生成的隨機唯一字符串, id_token 是 JSON Web 令牌,其中包含用戶的 id、算法、發行者和各種其他信息,可以用於驗證它。 我還見過提供 access_token 和 id_token 的 API 提供商,據我所知,這是為了向后兼容。
我的問題是是否可以同時使用 access_token 和 id_token 來訪問受保護的資源? 還是 id_token 僅用於驗證目的,而 access_token 用於獲取對受保護資源的訪問權限?
最初,OAuth 和 OpenId 是為不同的目的而設計的:OpenId 用於身份驗證,OAuth 用於授權。 OpenId Connect 是兩者的統一,為兩者服務,但不改變它們原有的功能。 記住這一點,你應該能夠找到自己。 ;-)
id_token 用於標識經過身份驗證的用戶,例如 SSO。 access_token 必須用於證明對受保護資源的訪問權限,例如 OpenId Connect 中的 userinfo 端點。
提供答案的另一個角度:
如果你想閱讀更多: oidc 和 oauth 中的令牌類型
access_token可用於調用 Auth0 中的某些 API(例如 /userinfo)或您在 Auth0 中定義的 API。
id_token是一個 JWT,代表登錄的用戶。 它經常被您的應用程序使用。
是否可以同時使用 access_token 和 id_token 來訪問受保護的資源?
不完全,首先需要使用id_token登錄,
第二,你會得到一個accessToken,
最后,使用 accessToken 訪問數據。
這里有一篇文章描述了為什么引入 id_token 以及它的最初目的是什么: Why we need a id_token in OpenID Connect & Facebook Connect 。 簡而言之,他們試圖標准化 Facebook 使用的混合流程。
我們考慮使用 id_token 作為 access_token。 我們拒絕了該選項,因為:
- 許多供應商已經為難以更改的端點提供了現有的 OAuth 令牌格式。
- 我們不希望將長期訪問令牌作為 cookie 存儲在瀏覽器中。
- 從長遠來看,兩個令牌的接收者顯然是分開的,這兩個令牌的語義過載會降低靈活性並增加復雜性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.