ASP.NET Core通过web.config授权AD组

在我的旧.NET MVC应用程序中,我可以在IIS中启用Windows身份validation并禁用匿名。 然后在我的web.config文件中,我只需要输入:

     

在.NET Core 2.0中,这将无法正常工作 – 它会正确拒绝匿名,但无论如何都会授权所有用户。

如果我这样做:

 [Authorize(Roles = "Domain\\MyADGroupToHaveAccess")] 

在我的HomeController ,它可以工作,但我不想在我的项目中对此设置进行硬编码,因为它需要针对其他环境进行更改。

如何使web.config与AD授权一起使用? 或者是否有另一种方法可以在ASP.NET Core中不对此设置进行硬编码?

我通过将其变成一个能够调用appsettings.json的策略来解决这个问题。 这样,有权访问服务器的其他人可以将组编辑为自己的组。

Startup.cs

 services.AddAuthorization(options => { options.AddPolicy("ADRoleOnly", policy => policy.RequireRole(Configuration["SecuritySettings:ADGroup"])); }); services.AddMvc(config => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); config.Filters.Add(new AuthorizeFilter(policy)); }); 

appsettings.json (或者如果你有不同的话,也可能是appsettings.production.json ):

 "SecuritySettings": { "ADGroup": "YourDomain\\YourADGroup" } 

在控制器中,您可以使用以下属性对其进行装饰:

 [Authorize(Policy = "ADRoleOnly")] 

希望这可以帮助其他人

我还要弄清楚如何全局应用这个策略,所以我不必授权每个控制器,我想它可以在services.AddMvc以某种方式完成?