我有以下情况。网络核心网站和网络核心API。网站需要调用api。我正在使用Azure AD保护两个站点。我可以验证用户身份并使用jwt令牌调用api。我想使用appRoles来控制对网站页面和api方法的访问。
我可以编辑网站清单并添加我要使用的appRoles。在企业应用程序->用户和组中,我可以将用户添加到角色中。因此,之后我可以使用[Authorize(Roles =“ AdminMember”)]
之类的东西保护我的网页我可以使用API进行同样的操作。
两个应用程序都使用相同的角色和相同的用户,所以我的问题是:
只能配置一次appRoles吗?如果我有很多用户,则需要在两个企业应用程序中都进行配置。如果我删除或更改了某些内容,则需要在两个应用程序中都执行相同的操作。我可以通过其他方式在其他应用程序中使用api或网站中定义的角色吗?
是否有任何方法可以让中心配置角色?
谢谢!
在Azure AD中,组等同于角色。因此,您创建组,然后将所需的用户添加到该组。因此,当这些用户通过身份验证时,他们的令牌将具有包含其所属的组信息的声明。因此,是的,您可以对在Azure AD实例中注册的所有应用程序使用相同的组。
所以它的工作方式如下:
在您的应用程序注册清单文件中,设置“ groupMembershipClaims”:“ SecurityGroup”。在.net核心API中,您可以执行
services.AddAuthorization( options => {
options.AddPolicy("admin-only", p => {
p.RequireClaim("groups","id of your admin group");
});
});
在控制器操作中,您可以执行
[Authorize("admin-only")]
如果将用户添加到管理员组并尝试访问上述操作,则将成功,否则将拒绝该用户。希望有帮助。