一位朋友告诉我,他使用 IIS 的基本身份验证来验证他的 Web 应用程序。该系统也使用 Kerberos,但基本身份验证和 Kerberos 如何协同工作?!我知道基本身份验证以 Base64(如明文)发送密码,而 Kerberos 不会通过网络发送密码,它使用票证系统。那么,Kerberos 如何与基本身份验证集成?
答案1
我认为应用程序必须做的是提示用户输入用户名和密码,然后使用该用户名和密码对某个后端 Kerberos 系统进行身份验证。此时,Web 应用程序可以模拟用户并根据需要连接到其他资源。Microsoft 对此技术进行了简要介绍这里。
总的来说,我认为这不是一个好主意,因为用户现在必须相信 Web 服务器不会隐藏他的密码和/或以不必要的方式冒充他。使用纯 Kerberos 设置,用户可以确信 Web 服务器是它声称的那个服务器,并限制委托,而不会向任何人透露他的密码。然而,防火墙、互联网和各种其他因素通常使得使用基本身份验证而不是纯 Kerberos 更有吸引力或成为必要。
答案2
大多数 Web 应用程序使用基本身份验证(也称为基于表单的身份验证),通常使用 SSL 来保护凭据。您唯一会使用集成身份验证的情况是在 Intranet 网站上(SharePoint 是一个可以利用集成身份验证的著名示例)。集成身份验证听起来很棒,但要使其正常工作并保持可靠运行可能很棘手。基于表单的身份验证通常更可靠。
Web 服务器获取用户提供的凭据,并使用 ... Kerberos 代表用户向 Active Directory 进行身份验证。如果 Web 应用程序需要模拟用户并访问 IIS 服务器外部的资源(常见情况),则需要进行 Kerberos 身份验证。(即,NTLM 身份验证在该模拟场景中不起作用)。