簡體   English   中英

Azure AD B2C:: 訪問令牌中缺少角色聲明

[英]Azure AD B2C :: Roles claim is missing in access token

我在 Azure AD B2C 中有兩個注冊的應用程序:azure 函數應用程序和前端 spa 應用程序。 我從前端應用程序調用 azure 函數並使用隱式授權流程。 我使用 MSAL npm package 請求訪問令牌。

我按照這篇文章為用戶設置角色: https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps

但是我在前端應用程序中收到的 access_token 缺少“角色”聲明以及 id_token。 這是我收到的訪問令牌:

{
  "typ": "JWT",
  "alg": "RS256",
  "kid": "X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk"
}.{
  "iss": "https://<tenant_name>.b2clogin.com/<id>/v2.0/",
  "exp": 1595333452,
  "nbf": 1595329852,
  "aud": "3d6123b2-b436-46c0-bcde-e0b61b0ad827",
  "oid": "e98c46c4-f13d-428e-9b7d-28ba3abeb060",
  "sub": "e98c46c4-f13d-428e-9b7d-28ba3abeb060",
  "name": "Basic User",
  "emails": [
    "basicuser@gmail.com"
  ],
  "tfp": "B2C_1_signin_v2",
  "nonce": "a70eece3-31d2-4cc3-8abb-0a56a95d4ba1",
  "scp": "demo.read",
  "azp": "d7787de1-6642-409f-b0b9-2f5608476367",
  "ver": "1.0",
  "iat": 1595329852
}.[Signature]

為什么里面沒有角色?

Azure AD B2C 目前不支持應用程序角色。

您可以為您的請求提出用戶意見 Azure 反饋門戶或投票給現有的門戶。

目前,您可以從 AAD B2C 自定義策略調用 MS Graph,可以使用 OAuth 客戶端憑據調用自定義策略中的 API。

您可以查詢用戶組成員,然后將數據直接返回給 B2C 策略,並將其發放到令牌中

https://docs.microsoft.com/en-us/azure/active-directory-b2c/secure-rest-api#oauth2-bearer-authentication

然后使用它從 MS Graph 中獲取數據

https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-rest-api-claims-exchange

或者

您需要使用任一組來管理它,或者在 B2C 租戶內創建一個 AAD 應用程序並在那里執行應用程序角色分配。 然后在 B2C 策略執行期間,調用 REST API 以查詢用戶的角色並將其插入 B2C 令牌中。 您需要為此使用自定義策略。 請參考與此類似的github 樣品

據我所知,B2C 不支持角色聲明。 我過去不得不使用自定義聲明, Sven Glöckner 寫了一篇文章,描述了與我所做的類似的事情。

就我而言,我已將角色聲明值添加為默認為“appMember”,這就像網站上用戶的主要角色,如果他有我們公司的 UPN 擴展,他將獲得類似“internalUser”的角色'。 這就是我們區分適用於安全修整和下游調用的權限的方式。

暫無
暫無

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

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