Azure AD B2C单页应用程序角色

Azure AD B2C单页应用程序角色,azure,single-page-application,roles,azure-ad-b2c,msal,Azure,Single Page Application,Roles,Azure Ad B2c,Msal,我们正在尝试将Azure广告B2C集成到SPA中。我们希望在票据中包含角色,以便在api中使用AuthorizeRoles和IsInRole。我们已经看了几个例子 第一个示例不是SPA,不包括角色。根据下面的链接,在使用Azure AD B2C的票证中包括会员和组是不受支持的 上面建议的解决方法似乎是使用下面的“OnAuthorizationCodeReceived”事件将您自己的角色声明注入/添加到票证中 我们遇到的问题是,我们正在使用SPA,因此我们需要遵循示例2,我们还需要能够将我

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

第一个示例不是SPA,不包括角色。根据下面的链接,在使用Azure AD B2C的票证中包括会员和组是不受支持的

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

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


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

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

v2.0终结点不支持在ID令牌中发出角色或组声明

ID标记在v2端点的隐式流中使用,请参见此处,并在“更多信息”下阅读大约一半

底线是绝对确保v2端点(和MSAL库)能够支持您的需求

就我而言,我们最终使用v1端点和ADAL库的部分原因是这样的限制。但这里有一些在代码中使用角色的示例。请注意,这些回购协议是相当新的,我仍在构建文档。有两个repo,一个是独立的angularjs ui项目,另一个是一组api(它们是我在codecamp演示中使用的演示)。请阅读下面有关AAD中角色的内容。只有UI示例使用ADAL库(注意:ADAL和MSAL库用于管理客户端中的令牌,而不是用于锁定后端的库)

API:

用户界面:

关于AAD中角色的一些注意事项:

  • 角色是特定于应用程序的,因此在上述示例中,相同 必须为将使用的所有应用程序注册角色 它们(也包括角色Id)
  • 您可以在AAD中为一个用户提供多个角色,您只需要在选择不同角色的情况下将它们多次添加到该应用程序中。
    • 手动将用户添加到角色将无法扩展,需要在门户中进行大量单击。使用组可以更轻松地管理,但只有在AAD高级2级时,您才能获得此好处
    • 应该有一种方法可以通过编程方式添加角色,但我没有找到任何相关的方法
干杯