Я пытаюсь реализовать схему проверки подлинности на основе политики с использованием проверки подлинности Windows и пользовательских утверждений.Все компилируется и работает нормально, но авторизация не проходит по неизвестным причинам.Вот что я делаю:
1 - в файле startup.cs мы добавляем аутентификацию Windows в качестве схемы аутентификации, добавляем политику «BASIC_USER», требующую утверждения «BASIC_USER», и вводим преобразователь утверждений.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddTransient<IClaimsTransformation, ClaimsTransformer>();
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddAuthorization(options =>
{
options.AddPolicy("BASIC_USER", policy => policy.RequireClaim("BASIC_USER"));
});
}
2 - наш преобразователь утверждений добавляет требование к ClaimsPrincipal при каждом запросе.(Обычно это добавляет заявки на основе ролей, управляемых данными, но редактируется для краткости.)
public async Task<ClaimsPrincipal> TransformAsync(ClaimsPrincipal principal)
{
Claim claim = new Claim(ClaimTypes.Role, "BASIC_USER");
((ClaimsIdentity)principal.Identity)
.AddClaim(claim);
return await Task.FromResult(principal);
}
}
3 - Мы украшаем наш контроллер атрибутом Authorize:
public class MyController : Controller
{
[Authorize(Policy = "BASIC_USER")]
public async Task<ActionResult> Get()
{
...
}
}
Когда я шаг #1 и # 2 выше, кажется, все в порядке - политика добавляется при запуске, и требование добавляется по запросу, но все равно контроллер возвращает правильно сформированный 403. Есть ли способ отладки процесса авторизации или яздесь что-то упущено?