IntegratedWindowsAuthentication与Negotiate有什么区别?

时间:2014-11-03 20:02:00

标签: c# asp.net-web-api windows-authentication owin

设置我的owin self hosted投影时,我想将其设置为使用Windows域进行身份验证。据我所知,这是通过协商协议执行的,它尝试Kerberos并在无法使用时返回NTLM。我在线查看,代码片段看起来像这样

public void Configuration(IAppBuilder app)
{
    HttpListener listener =
       (HttpListener)app.Properties["System.Net.HttpListener"];
    listener.AuthenticationSchemes =
        AuthenticationSchemes.IntegratedWindowsAuthentication;
   ...
}

在那里我发现了AuthenticationSchemas枚举。枚举是一个标志枚举,但我试图找出集成窗口和协商之间的区别是什么?两者似乎都在为NTLM提供Kerberos和故障恢复方面做同样的事情。我为什么要使用其中一个?文档对此事没有多大帮助。

3 个答案:

答案 0 :(得分:3)

枚举定义为:

[System.Flags]
public enum AuthenticationSchemes
{
    None = 0,
    Digest = 1,
    Negotiate = 2,
    Ntlm = 4,
    IntegratedWindowsAuthentication = Ntlm | Negotiate,
    Basic = 8,
    Anonymous = 32768,
}

而是回答了这个问题......

IWA与谈判有什么不同,看到Negotiate回到Ntlm,你想知道吗?不同之处在于如何在Http头中发送Ntlm消息。普通的Ntlm消息将通过WWW-Authenticate标头来看起来像NTLM <some base 64 encoded data>,而Negotiate协议的Ntlm消息将在其他协议内容中包装NTLM数据。如果客户端不支持,则Web服务器可以发送许多类型的Authenticate标头。

因此,虽然Ntlm和Negotiate都可以进行Ntlm身份验证,但有线协议也不同。

答案 1 :(得分:0)

IWA是IIS调用的功能

Negotiate是用于实现它的有线协议的名称

答案 2 :(得分:0)

这里似乎没有太多关于它的文档http://msdn.microsoft.com/en-us/library/system.net.authenticationschemes(v=vs.110).aspx

我必须猜测并说它们是相同的,或者IWA选项将推迟到其他系统默认设置,例如IIS的配置,而强制Negotiate会覆盖它。您可以尝试使用IWA,然后在IIS中更改它(使用OWIN / Katana)。

请注意,它在System.Net命名空间中不是OWIN,因此您可能需要进行一些测试

相关问题