基于Azure角色-使用相同应用角色的Web和API

问题描述 投票:0回答:1

我有以下情况。网络核心网站和网络核心API。网站需要调用api。我正在使用Azure AD保护两个站点。我可以验证用户身份并使用jwt令牌调用api。我想使用appRoles来控制对网站页面和api方法的访问。

我可以编辑网站清单并添加我要使用的appRoles。在企业应用程序->用户和组中,我可以将用户添加到角色中。因此,之后我可以使用[Authorize(Roles =“ AdminMember”)]

之类的东西保护我的网页

我可以使用API​​进行同样的操作。

两个应用程序都使用相同的角色和相同的用户,所以我的问题是:

只能配置一次appRoles吗?如果我有很多用户,则需要在两个企业应用程序中都进行配置。如果我删除或更改了某些内容,则需要在两个应用程序中都执行相同的操作。我可以通过其他方式在其他应用程序中使用api或网站中定义的角色吗?

是否有任何方法可以让中心配置角色?

谢谢!

azure asp.net-core azure-active-directory azure-web-sites
1个回答
0
投票

在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")]

如果将用户添加到管理员组并尝试访问上述操作,则将成功,否则将拒绝该用户。希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.