gpt4 book ai didi

asp.net - ASP Core Azure Active Directory 登录使用角色

转载 作者:行者123 更新时间:2023-12-02 16:45:51 25 4
gpt4 key购买 nike

我创建了一个 Azure Active Directory 应用程序,我想使用基于角色的安全性。我按照以下教程进行操作:https://azure.microsoft.com/en-us/resources/samples/active-directory-dotnet-webapp-openidconnect-aspnetcore/

登录成功,我将角色添加到应用程序 list 中,并将角色 Approver 分配给我自己的帐户。现在我想使用这些角色。

登录后, Controller 中将执行以下操作:

[Authorize]

但是添加角色时用户未获得授权:

[Authorize(Roles="Approver")]

以下内容也返回 false:

User.IsInRole("Approver");

看起来角色没有被检索,关于如何将角色功能添加到这个演示项目有什么建议吗?

最佳答案

使用 Azure AD For Groups 时,组成员身份信息不会神奇地出现在应用程序中,您需要使用 Graph API在身份验证后获取用户的组,或配置 Azure AD 以发回代表用户组成员身份的声明。

配置 Azure AD 以发送组声明:

通过转到 Azure 门户 => Azure Active Directory => 应用程序注册 => 所有应用程序 => 选择您的应用程序 => 单击顶部操作栏中的 list 来更改应用程序 list

groupMembershipClaims更改为SecurityGroup,

enter image description here

完成后,您应该会收到来自 Azure AD 的组声明,我们可以通过迭代用户的声明属性快速看到这一点。

声明的值将是对象 ID,您需要知道一个或多个组的对象 ID。

enter image description here

enter image description here

有了 ID,您现在可以定义 ASP.NET Core 授权策略,如下所示,

        services.AddAuthorization(options => {
options.AddPolicy("Approver",
policyBuilder => policyBuilder.RequireClaim("groups",
"c63b2f53-eff9-4d68-8b47-07f151270c74"));
});

您已准备好检查此政策,如下所示:

   [Authorize("Approver")] OR
[Authorize(Policy = "Approver")]

关于asp.net - ASP Core Azure Active Directory 登录使用角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43926083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com