簡體   English   中英

ASP.NET Core 2 - AD 組未映射到安全角色

[英]ASP.NET Core 2 - AD Groups not mapping to security roles

我一直在通過 User.Identity.Name 檢索用戶名,但是我需要一種方法來限制通過 Active Directory 中的組訪問某些頁面。

例如,“域管理員”可以查看所有頁面,而“查看用戶”只能查看登錄頁面和其他頁面。

在 Startup.cs 中

services.AddAuthentication(IISDefaults.AuthenticationScheme);

            services.AddAuthorization(options =>
            {
                options.AddPolicy("AdminRoleOnly", policy => policy.RequireRole(Configuration["SecuritySettings:AdminGroup"]));
            });

            services.AddMvc(config =>
            {
                var policy = new AuthorizationPolicyBuilder()
                    .RequireAuthenticatedUser()
                    .Build();

                config.Filters.Add(new AuthorizeFilter(policy));
            });

配置:

  "SecuritySettings": {
    "AdminGroup": "MYDOMAIN\\Domain Admins"
  }

在我的頁面模型上(我沒有控制器):

[Authorize(Policy = "AdminRoleOnly")]
    public class RequestsModel : PageModel

我只是收到一條錯誤消息,說無論如何我都沒有獲得授權

最后我自己寫了一個處理程序(在另一篇文章的幫助下):

 public class CheckADGroupHandler : AuthorizationHandler<CheckADGroupRequirement>
    {
        protected override Task HandleRequirementAsync(AuthorizationHandlerContext context,
                                                       CheckADGroupRequirement requirement)
        {

        var groups = new List<string>();
        var wi = (WindowsIdentity)context.User.Identity;
        if (wi.Groups != null)
        {
            foreach (var group in wi.Groups)
            {
                try
                {
                    groups.Add(group.Translate(typeof(NTAccount)).ToString());
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                }
            }

            foreach (string policygroup in requirement.GroupName)
            {

                if (groups.Contains(policygroup))
                {
                    context.Succeed(requirement);
                }
            }
        }

        return Task.CompletedTask;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM