Windows 集成 (NTLM) 身份验证与 Windows 集成 (Kerberos)

Posted

技术标签:

【中文标题】Windows 集成 (NTLM) 身份验证与 Windows 集成 (Kerberos)【英文标题】:Windows integrated (NTLM) authentication vs Windows integrated (Kerberos) 【发布时间】:2011-10-08 08:03:57 【问题描述】:

Windows 集成 (NTLM) 身份验证和 Windows 集成 (Kerberos) 有什么区别?

如何在 IIS6 中实现这些

w.r.t. MSDN

【问题讨论】:

另见serverfault.com/questions/254813/… 【参考方案1】:

Kerberos 和 NTLM 是用于验证用户密码的不同算法,无需向服务器透露密码。有关NTLM 和Kerberos 的更多信息,请访问***。

如果您启用 Windows 身份验证,通常会首选 Kerberos,如果不可用,它将回退到 NTLM。

NTLM 仅需要客户端与 Web 服务器通信才能进行身份验证。 Web 服务器处理与域控制器的通信。对于无法从 Internet 访问 DC 的公共站点来说,这是一个优势。不幸的是,NTLM 使用的密码学已经过时,不再被认为是安全的。 NTLM 只能通过 https 使用。 Kerberos 需要客户端从域控制器获取票证,这使得它更适合 Intranet 场景。然而,Kerberos 更安全并且可以处理委托,其中 Web 服务器可以使用客户端的身份访问其他资源(例如文件服务器)。

【讨论】:

【参考方案2】:

这是一个很好的链接:

http://msdn.microsoft.com/en-us/library/aa480475.aspx

这还会显示 kerberos (Negotiate) 是否开启(在您的网络服务器上):

cscript adsutil.vbs get w3svc/nnn/NTAuthenticationProviders

注意:nnnn 是 MetaBase 站点 ID

过去,kerberos 给我带来了一些问题(当用户拥有太多权限时)导致“400 Bad Request”错误

见: http://blogs.technet.com/b/surama/archive/2009/04/06/kerberos-authentication-problem-with-active-directory.aspx

【讨论】:

【参考方案3】:

NTLM(Windows 质询/响应)是在包括运行 Windows 操作系统的系统和独立系统在内的网络上使用的身份验证协议。NTLM 凭据基于交互式登录过程中获得的数据,并由域名组成、用户名和用户密码的单向哈希。

Kerberos 是一种基于票证工作的计算机网络身份验证协议,允许通过非安全网络进行通信的节点以安全的方式相互证明其身份。它基于客户端-服务器模型工作,并提供相互验证——用户和服务器都验证彼此的身份。

请参阅以下链接以获得清晰的信息。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa378749(v=vs.85).aspx

http://technet.microsoft.com/en-us/library/cc780469(v=ws.10).aspx

http://windowsitpro.com/security/comparing-windows-kerberos-and-ntlm-authentication-protocols

【讨论】:

【参考方案4】:

Kerberos 可以被认为是比 NTLM 更好的选择: 1. 更快的身份验证 2. 相互认证 3. Kerberos 是一个开放标准 4.支持认证委托

以下链接是我研究此主题的最佳答案:

Comparing Windows Kerberos and NTLM Authentication Protocols

【讨论】:

以上是关于Windows 集成 (NTLM) 身份验证与 Windows 集成 (Kerberos)的主要内容,如果未能解决你的问题,请参考以下文章

Safari 访问受 Windows 集成身份验证 (aka NTLM) 保护的网站时出现问题

NTLM 身份验证 - 在 PHP 中获取 Windows 登录名、域和主机

curl:如何在 Windows 上使用 Kerberos 而不是 NTLM 身份验证?

使用 Windows Auth NTLM 进行身份验证

在 Axios 中使用 NTLM 身份验证

在 Windows 上配置 Git 以使用 NTLM 代理身份验证