gpt4 book ai didi

c# - IntegratedWindowsAuthentication 与协商有什么区别?

转载 作者:行者123 更新时间:2023-11-30 20:46:34 28 4
gpt4 key购买 nike

在设置我的 owin 自托管项目时,我想将其设置为使用 Windows 域进行身份验证。据我了解,这是通过协商协议(protocol)执行的,它会尝试 Kerberos 并在不可用时故障回复到 NTLM。我在网上查了一下,代码片段是这样的

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

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

最佳答案

枚举定义为:

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

这更能回答问题......

IWA 与 Negotiate 有何不同,当 Negotiate 退回到 Ntlm 时,您想知道吗?区别在于 Ntlm 消息在 Http header 中的发送方式。普通 Ntlm 消息将通过 WWW-Authenticate 发送标题看起来像 NTLM <some base 64 encoded data> ,而协商协议(protocol)的 Ntlm 消息将在附加协议(protocol)内容中包装 NTLM 数据。 Web 服务器可能会发送多种类型的 Authenticate header ,以防客户端不支持其中一种。

因此,虽然 Ntlm 和 Negotiate 都可以进行 Ntlm 身份验证,但线路协议(protocol)是不同的。

关于c# - IntegratedWindowsAuthentication 与协商有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26722161/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com