2016-11-18 90 views
0

我试图让Web API 2使用Windows身份验证和SSL。它看起来可以与其中一个或另一个协同工作,但是当我同时启用Windows身份验证和SSL时,我始终从服务器获取401个响应。自托管的OWIN .NET 4.5 Web API 2不支持Windows身份验证和https

这就是我们如何启用Windows身份验证:

HttpListener listener = (HttpListener)appBuilder.Properties["System.Net.HttpListener"]; 
listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication; 

当只有HTTP(HTTPS无)上运行,Windows身份验证似乎工作。我看到401响应,然后是200响应。

我也试图让它在我的本地机器上使用HTTPS。

我通过以下步骤去启用HTTPS:

  • 添加映射到服务器的名字在我的hosts文件
  • 安装了证书(与this post帮助)
  • 保留一个网址(https://+:10001/
  • 然保留URL下的服务

圣arting服务:

var startOptions = new StartOptions(); 
startOptions.Urls.Add(baseUrl); // baseUrl is "https://+:10001/" 
_webApplication = WebApp.Start<Startup>(startOptions); 

如果我禁用Windows认证(注释出2行以上HttpListener),我可以使用HTTPS协议访问该服务。浏览器识别证书。

当我启用Windows身份验证时,我总是收到401个响应(在Fiddler中,我可以看到一个请求最多可以有6 401个响应)。浏览器不断提示我登录,并且在用401代码进行多次尝试后失败。

我一直在试图找到面临类似问题的人。 This post看起来很有希望。但是,作者似乎对OWIN的.NET 4.5版本没有任何问题。

任何人都可以请指教?谢谢!

回答

0

我们的问题是身份验证而不是SSL。

  • 使用AuthenticationSchemes.Ntlm帮助
  • 另一个问题是组织内的服务器名的正确注册,以便客户端(开发者机器)可以访问它