I solved this by making it into a policy which is able to call appsettings.json
. This way other people who have access to the server can then edit the group to their own.
In 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));
});
In appsettings.json
(or perhaps appsettings.production.json
if you have different):
"SecuritySettings": {
"ADGroup": "YourDomain\YourADGroup"
}
In your controllers you can then decorate it with this attribute:
[Authorize(Policy = "ADRoleOnly")]
Hope this can help other people
I have still to figure out how to apply this policy globally, so I don't have to authorize every controller, I'd figure it can be done in the services.AddMvc
somehow?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…