Azure AD B2C 是否支持 JWT 令牌中的“角色”声明以进行授权?

问题描述 投票:0回答:3

我正在使用 Azure AD B2C,并且我有一个关于在 JWT 令牌中包含“角色”声明以用于授权目的的要求。我的目标是根据应用程序中的用户角色分配不同的访问级别和权限。

预期结果:

我希望 Azure AD B2C 能够为 JWT 令牌中的“角色”声明提供本机支持,使我能够在授权期间轻松管理和验证用户角色。

实际结果:

但是,我对此主题的研究尚未得出有关 Azure AD B2C 是否支持“角色”声明的明确信息。 Microsoft 官方文档没有提供专门解决这方面问题的最新信息。

我尝试过的:

我彻底搜索了各种资源,包括 SO、Microsoft 文档和开发人员论坛,以查找有关此问题的任何更新或见解。但是,我找不到明确说明 Azure AD B2C 是否支持 JWT 令牌中的“角色”声明或提供任何推荐方法来处理用户角色的具体信息。

为什么它不能满足我的需求:

缺乏具体信息使我很难使用 Azure AD B2C 实现基于角色的授权。由于不清楚 Azure AD B2C 是否支持“角色”声明,我不确定实现所需功能的最佳方法。

Azure AD B2C 是否支持 JWT 令牌中的“角色”声明,或者是否有其他方法或解决方法可以在 Azure AD B2C 中实现基于角色的授权?

authentication jwt authorization azure-ad-b2c role-based-access-control
3个回答
2
投票

并不是说 B2C 不支持

roles
声明,而是它不支持 B2C 租户内的管理角色(某种程度上)。

您始终可以拥有角色的外部存储,或在 B2C 的 AAD 目录中分配的角色,然后使用 API/Graph API 检索这些角色并填充

roles
声明,作为 B2C 旅程的一部分。但是,您将需要在 B2C 之外实现和托管该 API。

如果您使用自定义策略和本地帐户(即存储在 B2C 目录中的电子邮件和密码),您可以采取另一种方法,但它没有记录,也不受官方支持。

本地帐户在自定义策略中的工作方式是 B2C 对底层 AAD 进行 ROPC 调用,为 IdentityExperienceFramework 应用程序请求令牌。该 ROPC 调用可以返回角色,并且这些角色可以映射到 B2C 中的

roles
声明,并作为用户
id_token
access_token
的一部分返回给依赖方。

要实现这一目标,您需要更新 IdentityExperienceFramework 应用程序的清单以公开用户角色(这些将是分配给单个用户的角色)。然后,您需要将用户分配给该应用程序,为他们提供其中一种角色。最后,您需要将角色声明作为输出声明添加到 ROPC 调用、进行 ROPC 调用的自断言页面以及依赖方定义。


0
投票

假设我正确理解了您的问题,简短的回答是:不,截至目前,Azure Active Directory B2C 不支持自定义应用程序的“角色”声明中的角色。 至少 Azure AD B2C 的官方文档没有描述此功能。欲了解更多信息,请参阅这篇文章

但是,根据您的使用案例,您可以使用常规的 Azure Active Directory。常规版本允许您在应用程序中创建自定义角色,这些角色在访问令牌的“角色”声明中发送。遗憾的是,这仅允许您的用户通过其 Microsoft 帐户之一(工作、学校或个人)登录。请参阅文档了解这一点。因此,它不提供例如通过 Azure AD B2C 等其他提供商进行社交登录。

如果您可以选择使用 Azure AD,请参阅本文,了解向 Azure AD 应用程序添加角色的信息。


0
投票

假设我正确理解你的问题,AD B2C 不支持“角色”或“访问权限”声明。

但是,有一种方法可以使用自定义属性和 API 连接器来实现此目的。在这种情况下,您需要在 B2C 之外维护您的角色访问控制,并在使用 B2C 登录时将其添加为声明。

例如,您有一个包含所有角色和访问凭据的数据库表。您创建一个可以获取该数据的 REST API。使用 API 连接器将该 API 添加到 B2C 登录用户流程。您声明将被添加到签名令牌中。

© www.soinside.com 2019 - 2024. All rights reserved.