Azure AD B2C单页应用程序角色

6
我们正在尝试将Azure AD B2C集成到SPA中。我们希望在票证中包含角色,以便我们可以在API中使用AuthorizeRoles和IsInRole。我们已经查看了几个示例。 示例1 示例2 第一个示例不是SPA,也不包括角色。根据下面的链接,使用Azure AD B2C在票证中包含成员身份和组不受支持。 Azure AD B2C Group Membership Feature Feedback 如上所建议的解决方法似乎是使用"OnAuthorizationCodeReceived"事件来将自己的角色声明注入/添加到票证中。 解决方法 我们遇到的问题是,我们正在使用单页应用程序,因此需要遵循示例2,我们还需要能够将自己的托管角色添加到票证中,这不是支持的功能,但Microsoft表示有一种解决方法,如所示。然而,这个解决方法在示例2中无法与MSAL.js一起使用。
我们如何使用MSAL.js库将我们自己的托管角色包含到票证中,以便将Azure AD B2C集成到我们的单页应用程序中,使我们能够在API中使用AuthorizeRoles和IsInRole?

这个回答解决了你的问题吗?在Azure Active Directory B2C中通过组进行授权 - Ogglas
1个回答

2
首先,你提到正在使用MSAL.js库,这意味着使用的是v2端点。截至目前(2018年5月16日),v2端点在角色和组方面存在一些限制,请参见 v2 limitations,其中提到:

v2.0端点不支持在ID令牌中发布角色或组声明。

ID令牌确实在使用v2端点的隐式流程中使用,请参见此处 Azure AD v2 Spa Guided Setup 并在“更多信息”下面阅读一半。
总之,请务必确保v2端点(和MSAL库)能够支持您的要求。
对于我自己而言,我们最终选择了v1端点和ADAL库,部分原因是像这样的限制。但是这里有一些在代码中使用角色的示例。请注意,这些存储库相当新,我仍在构建文档。这里有两个存储库,一个是独立的AngularJS UI项目,另一个是一组API(它们是我在CodeCamp演示中使用的演示)。请继续阅读有关AAD中角色的内容。只有UI示例使用ADAL库(请注意:ADAL和MSAL库用于管理客户端中的令牌,并非用于锁定后端的库)。
APIs: https://github.com/BgRva/aad_adal_api_dn_std/tree/Step_C UI: https://github.com/BgRva/aad_adal_ui_ng_js/tree/Step_C 关于AAD中角色的一些说明:
角色是应用程序特定的,因此在上述示例中,相同的角色必须为将使用它们的所有应用程序注册(这也包括角色 ID)。您可以在 AAD 中向用户分配多个角色,只需多次添加它们到该应用程序,并选择不同的角色。手动将用户添加到角色不会扩展并且需要在门户中进行许多单击。使用组可以更轻松地管理,但仅在 AAD 高级 2 级别才能获得此功能。据说有一种编程方式可以添加角色,但我还没有找到相关信息。祝好!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接