Смешивание интегрированной проверки подлинности и анонимности с помощью автономного хостинга Katana

#asp.net-web-api #owin #katana

#asp.net-web-api #owin #katana

Вопрос:

У меня есть базовое приложение web API, которое пытается поддерживать интегрированную проверку подлинности и анонимность. Пример кода приведен ниже,

 using (WebApp.Start("http://localhost:8080/", (app) =>
{
    HttpConfiguration config = new HttpConfiguration();
    config.MapHttpAttributeRoutes();
    config.EnsureInitialized();

    HttpListener listener = (HttpListener)app.Properties["System.Net.HttpListener"];
    listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication | AuthenticationSchemes.Anonymous;

    app.UseWebApi(config);
}))       



public class TestController : ApiController
{
    [Authorize]
    [Route("Secret")]
    public int Get()
    {
        return 42;
    }

    [Route("Public")]
    public int GetNoSecurity()
    {
        return 42;
    }
}
  

Ожидается, что ~/Secret требует учетных данных, а ~/Public — нет.

С Fiddler все работает нормально, но не с браузером. Нажатие ~/Secret из chrome / IE не приводит к появлению окна сообщения о учетных данных.

Комментарии:

1. Что возвращает заголовок www-authenticate, как в fiddler?

2. Интегрированная проверка подлинности Windows не предназначена для открытия диалогового окна, она использует учетные данные домена текущего пользователя. Это должно работать в IE, но я не думаю, что это работает в Chrome. Клиентский компьютер также должен находиться в том же домене, что и веб-сервер.