gpt4 book ai didi

Azure AD B2C 单页应用程序角色

转载 作者:行者123 更新时间:2023-12-01 18:05:21 25 4
gpt4 key购买 nike

我们正在尝试将 Azure AD B2C 集成到 SPA 中。我们希望在票证中包含角色,以便我们可以在 api 中使用 AuthorizeRoles 和 IsInRole。我们已经研究了几个例子。

Example 1

Example 2

第一个示例不是 SPA,也不包含角色。不支持在使​​用 Azure AD B2C 的票证中包含成员资格和组,这一点已被接受,如下链接所示。

Azure AD B2C Group Membership Feature Feedback

上面建议的解决方法似乎是使用“OnAuthorizationCodeReceived”事件(如下所示)将您自己的角色声明注入(inject)/添加到票证中。

Workaround

我们遇到的问题是,我们正在使用 SPA,因此我们需要遵循示例 2,我们还需要能够将我们自己的托管角色添加到票证中,这不是受支持的功能,但 Microsoft 表示有如图所示的解决方法。但是,该解决方法不适用于 MSAL.js,如示例 2 所示。

如何使用 MSAL.js 库将我们自己的托管角色包含到票证中,以便将 Azure AD B2C 集成到我们的 SPA 中,从而使我们能够在 api 中使用 AuthorizeRoles 和 IsInRole?

最佳答案

首先,您提到您正在使用 MSAL.js 库,这意味着 v2 端点。目前(截至 2018 年 5 月 16 日),v2 端点对角色和组有限制,请参阅 v2 limitations其中指出:

The v2.0 endpoint does not support issuing role or group claims in ID tokens.

ID token 在 v2 端点的隐式流程中使用,请参阅此处 Azure AD v2 Spa Guided Setup并在更多信息下阅读大约一半

最重要的是要绝对确保 v2 终结点(和 MSAL 库)能够支持您的要求。

对于我自己来说,我们最终选择了 v1 端点和 ADAL 库,部分原因是这样的限制。但这里有一些在代码中使用角色的示例。请注意,这些存储库相当新,我仍在构建文档。有两个存储库,一个是独立的 angularjs ui 项目,另一个是一组 API(它们是我在 Codecamp 演示中使用的演示)。请阅读下文了解 AAD 中的角色。只有 UI 示例使用 ADAL 库(注意:ADAL 和 MSAL 库用于管理客户端中的 token ,而不是用于锁定后端的库)。

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 Premium 2 级时您才能获得此优势
    • 据说有一种以编程方式添加角色的方法,但我还没有找到任何相关内容

干杯

关于Azure AD B2C 单页应用程序角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49730197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com