首页 文章

ASP.NET Core 2.0 - 将LDAP组转换为角色的Windows身份验证

提问于
浏览
12

是否有人使用IIS中的Windows身份验证成功创建了一个ASP.NET Core 2.0应用程序来查询LDAP源(内部AD实例)并将组成员身份放入角色作为声明以正确地为[授权]注释加油?中间件的文档没有直接解决如何执行此操作或在某些版本的System.DirectoryServices 4.5preview for aspnetcore中的日期 . 我知道.NET Framework通过System.DirectoryService为我们提供了对组成员身份的本机访问 . 我的问题是你是否可以尝试使用过滤器而不是中间件,并为组查询LDAP并将其存储为cookie中的声明 . 有更简单的方法吗?我查询了在Novell.Directory.Ldap标准中工作的LDAP源,我可以在适当的地方使用迭代 .

提前感谢您的建议 .

1 回答

  • 0

    您可以使用Startup.cs中配置的策略来定义可以与Authorize属性一起使用的AD组 . 你'll notice, however, that instead of using the group name, you'将必须使用行 policy.RequireRole("S-1-5-4") 中的组的SID .

    public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<IISOptions>(options =>
            {
                options.AutomaticAuthentication = true;
            });
    
            services.AddAuthentication(IISDefaults.AuthenticationScheme);
    
            services.AddAuthorization(options =>
            {
                options.AddPolicy("OnlyEmployees", policy =>
                {
                    policy.AddAuthenticationSchemes(IISDefaults.AuthenticationScheme);
                    policy.RequireRole("S-1-5-4");
                });
            });
    
            services.AddMvc();
        }
    

    要使用该策略,请使用authorize属性装饰您的控制器,如下所示:

    [Authorize(Policy = "OnlyEmployees")]
    

    要查找组的SID,可以使用powershell命令 Get-ADGroup -Identity YOUR_GROUP_NAME 查询AD,该命令将返回组的SID .

    注意:找到了这个答案here,代码可用here .

相关问题