繁体   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