У меня есть WebApi
проект, размещенный самостоятельно с использованием OWIN
.
Я хочу включить проверку подлинности Windows для некоторых действий контроллера, но разрешить анонимный вызов других действий.
Итак, следуя некоторым примерам, которые я нашел в Интернете, я настроил свой WebApi следующим образом в своем классе Statrup
:
public void Configuration(IAppBuilder appBuilder)
{
HttpListener listener = (HttpListener)appBuilder.Properties["System.Net.HttpListener"];
listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication | AuthenticationSchemes.Anonymous; //Allow both WinAuth and anonymous auth
//setup routes and other stuff
//...
//Confirm configuration
appBuilder.UseWebApi(config);
}
Затем в своем контроллере я создал два действия:
[HttpGet]
[Authorize]
public HttpResponseMessage ProtectedAction()
{
//do stuff...
}
[HttpGet]
[AllowAnonymous]
public HttpResponseMessage PublicAction()
{
//do stuff...
}
Это, однако, не работает.
Вызов действия, помеченного AllowAnonymous
, работает как положено, но вызов действия, помеченного Authorize
, всегда возвращает ошибку 401 и следующее сообщение:
{
"Message": "Authorization has been denied for this request."
}
, даже если звонящий поддерживает проверку подлинности Windows, протестирован в браузерах (Chrome и Edge) и Postman.
Что мне здесь не хватает?