#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. Клиентский компьютер также должен находиться в том же домене, что и веб-сервер.