【发布时间】:2020-05-09 01:10:08
【问题描述】:
我在 AzureAdd AppRegistrations 中注册了我的应用,并在 manifest 中为我的应用添加了 AppRoles,即管理员角色。在 Azure 企业应用程序菜单中,我添加了一个用户,并为其分配了管理员角色,我可以选择该角色。
在我的应用程序的 Startup 类中,我添加了 AddAuthorization 部分并定义了一个策略 RequireRole("Admin")。
我将[Authorize(Roles = "Admin")] 用于我的控制器类,并在导航栏局部视图中添加了((await AuthorizationService.AuthorizeAsync(User, "Admin")).Succeeded)。
但是,当我调试时,我找不到 {http://schemas.microsoft.com/ws/2008/06/identity/claims/role: Admin} 条目,并且 User.IsInRole("Admin") 返回 false。但是,用户凭据是正确的。
据我所知,我已经完成了所有步骤。我唯一能想到的是,我的 azure 订阅不允许添加组,但我看不出这如何与我设置的任何东西相关联。我不使用组,只使用个人用户。
我在这里想念什么?为什么我看不到用户角色?
清单:
{
"allowedMemberTypes": [
"User"
],
"description": "Admin's have access to everything.",
"displayName": "Admin",
"id": "d1c2ade8-98f8-45fd-ba4b-6d06b947c66f",
"isEnabled": true,
"lang": null,
"origin": "Application",
"value": "Admin"
},
"groupMembershipClaims": "SecurityGroup",
Startup.cs
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
services.AddAuthorization(options =>
{
options.AddPolicy("Admin", policy => policy.RequireRole("Admin"));
options.AddPolicy("Packager", policy => policy.RequireRole("Packager"));
});
查看:
@if ((await AuthorizationService.AuthorizeAsync(User, "Admin")).Succeeded)
{
<li><a asp-area="" asp-controller="Home" asp-action="Admin">Admin</a></li>
}
编辑(5 月 8 日):
使用来自微软的this doc,我让它工作了。添加到我的Startup.cs:
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
options.Authority = options.Authority + "/v2.0/"; // Microsoft identity platform
options.TokenValidationParameters.ValidateIssuer = false; // accept several tenants (here simplified)
});
【问题讨论】:
-
您使用哪个 .net 核心版本?
-
我的.net核心版本是2.1
标签: c# azure azure-active-directory asp.net-core-2.1