我创建了一个 Azure Active Directory 应用程序,我想使用基于角色的安全性。我按照以下教程进行操作:https://azure.microsoft.com/en-us/resources/samples/active-directory-dotnet-webapp-openidconnect-aspnetcore/ https://azure.microsoft.com/en-us/resources/samples/active-directory-dotnet-webapp-openidconnect-aspnetcore/
登录正常,我将角色添加到应用程序清单中并分配了角色Approver
到我自己的帐户。现在我想使用这些角色。
登录后,控制器中将进行以下操作:
[Authorize]
但是添加角色时,用户没有被授权:
[Authorize(Roles="Approver")]
另外,以下返回 false:
User.IsInRole("Approver");
似乎角色没有被检索,关于如何将角色功能添加到这个演示项目有什么建议吗?
使用 Azure AD For Groups 时,组成员身份信息不会神奇地出现在应用程序中,您需要使用图形API https://learn.microsoft.com/en-us/rest/api/graphrbac/Users/GetMemberGroups在身份验证后获取用户的组,或配置 Azure AD 以发回代表用户组成员身份的声明。
配置 Azure AD 以发送组声明:
通过转到 Azure 门户 => Azure Active Directory => 应用程序注册 => 所有应用程序 => 选择您的应用程序 => 单击顶部操作栏中的清单来更改应用程序清单
Change 团体会员声明到安全组,
完成后,您应该会收到来自 Azure AD 的组声明,我们可以通过迭代用户的声明属性快速看到这一点。
声明的值将是对象 ID,您需要知道一个或多个组的对象 ID。
有了 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")]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)