我正在阅读有关IIS7 中的 Windows 身份验证的信息
我从经验中知道,Windows 身份验证在技术上使用 IIS 在 Internet 上可以正常工作——这意味着用户面临 401 未授权的挑战,并且大多数浏览器(Chrome、FF、IE、Safari)都会提示输入 Windows 域\用户和密码,如果身份验证成功,如果授权,用户将获得请求的页面。
但后来我读到了这个:
Windows 身份验证不适合在 Internet 环境中使用,因为该环境不需要或加密用户凭据。
HTTPS 可用于加密,但我正在寻求另一部分的澄清。
“不需要用户凭据”是什么意思?
基于此,真正的问题是:除了使用 HTTPS 进行加密之外,我如何以安全的方式实现 Windows 身份验证以在 Internet 环境中使用?
微软的说法似乎没有根据。我知道如果使用 NTLM 而不是 Kerberos,您将失去与受信任的第三方身份提供者的直接连接,但这并不能向我解释为什么如果实施得当则不需要凭据。求那个方法。谢谢。
您不应该对面向 Internet 的站点进行本地身份验证的主要原因是,如果您的网络服务器受到威胁,那么您的所有本地帐户都会受到威胁。使用 Kerberos,您可以更新密码,并集中控制身份验证。
现在 kerberos 身份验证可以使用 SPN 密钥表,并且您有不同类型的加密https://uit.stanford.edu/service/kerberos/keytabs而 NTLM 仅部分使用加密https://blogs.msdn.microsoft.com/chiranth/2013 /09/20/ntlm-想知道它是如何工作的/。除非您的操作系统完全支持和更新 NTLMSPP,否则您将以纯文本形式发送凭据http://www.cisco.com/c/en/us/support/docs/security/web-security-appliance/118487-technote -wsa-00.html和https://en.wikipedia.org/wiki/NTLMSSP。NTLM 当前未扩展,也不是首选协议https://msdn.microsoft.com/en-us/library/windows/desktop/aa378749(v=vs.85).aspx。
如您所见,根据 MS 文档,用户名是纯文本,密码是散列的。针对 NTLM 的“简单”攻击是可能的——传递哈希,或预测会话中生成的随机数,然后从中获取密码。最重要的是,NTLM 支持 56 和 128 加密,因此它低于任何最近的方法。
没有办法为面向 Web 的服务安全地实施本地身份验证。请让我知道这是否有意义。
most of em don't use https either (even over internet) because they are too cheap to pay for certificates
.将网站配置为需要 Https 将提供合理的安全措施。如果您因为他们不想使用/支付证书而正在寻找其他东西,那么您就是在浪费每个人的时间。在不需要 SSL 的情况下通过 Internet 实现 Windows 身份验证是不负责任的,因为集成的 Windows 身份验证机制可能由于各种原因无法正常工作。发生这种情况时,他们将被要求输入凭据,如果不需要 SSL,这些凭据将以纯文本形式通过网络传输。
我们甚至没有考虑数据是否需要加密。
此外,NTLM 和 Kerberos 都会随每个数据包发送 http 授权标头有效负载,并且该标头包括散列/经过处理的凭据。Kerberos 将比 NTLM 更安全,但如果不使用 SSL,两者都可能受到 MITM 重放攻击。
根据我的经验,即使在内部网络上也很难让 Windows Auth 可靠地工作,并且当它不起作用时提示通过未加密的 http 连接提供凭据是一个不容忽视的弱点。在多种情况下它可能不起作用,包括由于组成员身份和/或 IIS 配置设置不足而导致令牌/身份验证标头太大,或者 Windows 凭据在客户端和 Active Directory 域之间不同步。令牌大小太大的问题只发生在 Kerberos 中,因为组成员身份存储在 Kerberos PAC 中。