簡體   English   中英

Azure AD 在交換訪問令牌的 OAuth2 代碼時返回非 JWT 令牌

[英]Azure AD returns non JWT Tokens when exchanging the OAuth2 code for an access token

我的租戶上有一個 Azure AD 應用程序,該應用程序配置為接受多個租戶和個人帳戶。

我按照此處說明的程序檢索 AccessToken: https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow

當我從 Microsoft web 頁面收到我的應用程序中的“代碼”時,我將其交換為調用端點“https://login.microsoftonline.com/common/oauth2/v2.0/token”的訪問令牌。

在這里,無論登錄用戶是工作帳戶還是個人帳戶,行為都會有所不同。

使用工作帳戶,我收到一個正常的 JWT 令牌,每個人都很高興:我可以解碼令牌並閱讀聲明。

對於個人賬戶,我收到另一個令牌,它不是 JWT 令牌,我不知道如何:

  1. 驗證此令牌
  2. 從用戶那里讀取一些信息(具體是用戶的email)

你能幫我理解如何執行這兩個動作嗎?

注意:我在這里看到了答案: Microsoft 作為個人帳戶的 OAuth2 提供者不會發出 JWT 訪問令牌,但我的情況略有不同,因為我不想使用此令牌訪問 MS Graph,我只需要檢索 email用戶的。

謝謝!

切爾西

根據 OAuth 規范,OAuth2 中的access_token不需要是 JWT。
但是,Microsoft 支持提供id_tokenOpenID Connect id_token始終是 JWT。

要將您的 OAuth 請求“升級”為 OpenID Connect 請求,您只需添加 scope openid (可能還有email以確保您收到電子郵件)。
然后,當您將code交換為access_token時,您還會獲得一個id_token

暫無
暫無

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

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