【问题标题】:Azure role based - Web and API using same app roles基于 Azure 角色 - 使用相同应用角色的 Web 和 API
【发布时间】:2020-09-24 14:03:00
【问题描述】:

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

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

之类的方法保护我的网页

我可以用 API 做同样的事情。

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

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

有没有什么方法可以有一个中心点来配置角色?

谢谢!

【问题讨论】:

    标签: azure asp.net-core azure-active-directory azure-web-app-service


    【解决方案1】:

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

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

    【讨论】:

    • 我不能使用群组...只有赞许。登录网站后,我需要在 User.Identity 上拥有与在 api 上相同的 approles,但只在一个地方定义它们。如果我使用 api 的范围请求访问令牌,我可以在 jwt 令牌中检索 api 的角色。但我不知道使用它来授权或不授权网站控制器
    • 关注this 链接。它推荐的使用应用程序角色授权 api 控制器中的操作的方法。和 this 链接以在 Azure AD 中配置应用角色。
    • 我知道如何使用approles保护api和我们的站点。但是我仍然无法在两个地方声明批准。因此,当我登录网站时,User.Identity.Claims 来自一个应用程序注册,而 jwt 令牌中的 api 声明来自另一个应用程序注册。而且我需要维护两个应用程序注册。我只想使用一个应用注册。例如,仅在 api 应用注册时创建 approles,并在登录网站后使用来自 api 的声明更新 user.identity。或者我不知道是否可以在登录过程中检索 api 声明
    • 通常在api应用注册时设置角色。您需要在客户端应用注册时配置应用角色吗?因此,通常的流程是您从前端应用程序调用以获取将具有应用程序角色的令牌,然后您使用它来确定要在客户端应用程序上显示/隐藏的内容,并将相同的令牌发送到后端 - end 这将授权您执行您可以在后端 api 上执行的不同操作。
    • 我登录网站,在 Microsoft 登录后,我被重定向到我的网站。如果我想打开另一个受角色保护的页面......当我获得带有声明的 jwt 令牌时?我知道如何检索令牌,但不知道在哪个 pont 中进行,以及如何添加到网站内的每个请求。每次我调用 Api 时,我都需要在标头中发送 jwt 令牌......但是当网页之间调用时如何做到这一点?
    猜你喜欢
    • 1970-01-01
    • 2016-05-22
    • 2018-09-07
    • 2015-04-07
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    相关资源
    最近更新 更多