Azure AD B2C单页应用角色

时间:2018-04-09 09:56:15

标签: azure single-page-application roles azure-ad-b2c msal

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

Example 1

Example 2

第一个示例不是SPA,也不包含角色。包括会员资格在内的会议被接受。根据以下链接,不支持使用Azure AD B2C的故障单中的组。

Azure AD B2C Group Membership Feature Feedback

上面建议的解决方法似乎是使用下面的“OnAuthorizationCodeReceived”事件将您自己的角色声明注入/添加到故障单。

Workaround

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

我们如何使用MSAL.js库将我们自己的托管角色包含到故障单中,以便我们可以将Azure AD B2C集成到我们的SPA中,使我们能够使用AuthorizeRoles& amp; isInRole在api?

1 个答案:

答案 0 :(得分:1)

首先,您提到您正在使用MSAL.js库,这意味着v2端点。目前(截至2014年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 Premium Level 2才能获得此优惠
    • 据说有一种方法可以通过编程方式添加角色,但我还没有找到任何关于它的信息

干杯