我已经启动并运行了AngularJS和Web.API WAAD身份验证。对于客户端,我使用了很棒的库ADAL.JS。对于后端,我使用Microsoft.Owin.Security.OAuth。这部分进展顺利。
现在我想基于角色实现授权(将映射到WAAD组)。组不包含在身份验证令牌中,因此我必须向他们询问Azure Graph API。我看到了各种方法,使用自定义声明提供程序,向项目添加Web服务等。一些示例已经提供了在[Authorize]
属性中使用的组和角色之间的映射。
但是,当我已经过身份验证时,如何从WAAD获取用户ID或用户名的组ID /名称列表的最简单示例是什么?
此外,有没有办法让这些数据在JS中用于Angular前端,或者我应该创建一个Angular应该调用角色信息的API服务?
答案 0 :(得分:1)
在非JS案例中,在令牌中获取组的最简单方法是选择。下载应用程序的清单,找到“groupMembershipClaims”条目,将其值更改为“SecurityGroup”或“All”,然后上传回来清单。 但请注意,这不适用于您的场景,因为它使用隐式授权 - 此处令牌在URI片段中返回,因此一个大令牌可能会超出浏览器的URL长度限制。 您可以随时向图表请求组,并通过API上的自定义操作将其提供给您的前端,但是根据您编写的内容,您已熟悉它。让我在这里讨论这个问题 - 如果有一个更简单的方法可以在SPA中使这个工作,我将回到这个线程。 HTH V. 更新:我已经验证,在隐式授权案例中,您将始终通过超额索赔接收组。请参阅https://github.com/AzureADSamples/WebApp-GroupClaims-DotNet/tree/master/WebApp-GroupClaims-DotNet - 它将向您展示如何处理超额索赔以检索群组。您需要做的就是将相同的指南应用于Web API,如果您需要向客户提供信息,则会公开一个或多个操作。