[英]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 策略,並將其發放到令牌中
然后使用它從 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.