Azure AD B2C 单页应用角色
Posted
技术标签:
【中文标题】Azure AD B2C 单页应用角色【英文标题】:Azure AD B2C Single Page App Roles 【发布时间】:2018-09-18 16:33:33 【问题描述】:我们正在尝试将 Azure AD B2C 集成到 SPA 中。我们希望在票证中包含角色,以便我们可以在 api 中使用 AuthorizeRoles 和 IsInRole。我们已经查看了几个示例。
Example 1
Example 2
第一个示例不是 SPA,也不包含角色。根据以下链接,不支持使用 Azure AD B2C 在票证中包含成员资格和组。
Azure AD B2C Group Membership Feature Feedback
上面建议的解决方法似乎是使用下面的“OnAuthorizationCodeReceived”事件向票证注入/添加您自己的角色声明。
Workaround
我们遇到的问题是我们正在使用 SPA,因此我们需要遵循示例 2,我们还需要能够将我们自己的托管角色添加到票证中,这不是受支持的功能,但微软表示有如图所示的解决方法。但是,解决方法不适用于示例 2 中的 MSAL.js。
我们如何使用 MSAL.js 库将我们自己的托管角色包含到票证中,以便将 Azure AD B2C 集成到我们的 SPA 中,从而使我们能够在 api 中使用 AuthorizeRoles 和 IsInRole?
【问题讨论】:
这能回答你的问题吗? Authorize By Group in Azure Active Directory B2C 【参考方案1】:首先,您提到您正在使用 MSAL.js 库,这意味着 v2 端点。目前(截至 2018 年 5 月 16 日),v2 端点对角色和组有限制,请参阅v2 limitations,其中指出:
v2.0 端点不支持在 ID 令牌中发布角色或组声明。
ID 令牌在 v2 端点的隐式流中使用,请参阅此处Azure AD v2 Spa Guided Setup 并在更多信息
下阅读大约一半底线是绝对确保 v2 端点(和 MSAL 库)可以支持您的要求。
就我自己而言,我们最终选择了 v1 端点和 ADAL 库,部分原因在于此类限制。但这里有一些在代码中使用角色的例子。请注意,这些存储库是相当新的,我仍在构建文档。有两个 repos,一个是独立的 angularjs ui 项目,另一个是一组 API(它们是我在 codecamp 演示中使用的演示)。请阅读下文了解 AAD 中的角色。只有 UI 示例使用 ADAL 库(注意:ADAL 和 MSAL 库用于管理客户端中的令牌,而不是用于锁定后端的库)。
API:https://github.com/BgRva/aad_adal_api_dn_std/tree/Step_C
用户界面:https://github.com/BgRva/aad_adal_ui_ng_js/tree/Step_C
关于 AAD 中角色的一些说明:
角色是特定于应用程序的,因此在上面的示例中,相同 必须为将使用的所有应用程序注册角色 他们(这也包括角色 ID) 您可以在 AAD 中为用户提供多个角色,您只需将它们多次添加到该应用程序并选择不同的角色。 手动将用户添加到角色将无法扩展,并且需要在门户中多次单击。使用群组可以更轻松地进行管理,但只有在 AAD 高级级别 2 时,您才能获得此好处 据说有一种以编程方式添加角色的方法,但我没有找到任何相关信息干杯
【讨论】:
以上是关于Azure AD B2C 单页应用角色的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Azure AD B2C 保护 Blazor Wasm 应用访问的 Azure 函数?
azure 应用服务身份验证模块是不是支持 azure ad b2c?
Azure AD B2C:注销社交帐户(使用 OIDC 的 Azure AD)