谁能详细说明不同之处?
我目前正在使用 ntlmssp.authenticate ( jcifs) 但似乎无法执行 getPassword()。它总是返回 null
它们是有区别的。
使用Kerberos,您必须向域管理员询问您的 Web 应用程序的服务主体名称 (SPN)。本质上,这是 Active Directory 中的一个条目,其中包含一个加密密钥,可让您的 Web 应用程序解码身份验证请求。
使用NTLM,您不需要管理员的合作。您的 Web 应用程序将从客户端(即浏览器)获取一些信息,可用于尝试登录到域控制器。来自客户端的信息不包括用户的密码——这太不安全了。相反,NTLM 筛选器从域控制器获得质询,将其传递给客户端。客户端将密码与质询进行哈希处理以创建响应。当此响应作为登录请求发送回域控制器时,域控制器将告诉 jcifs 过滤器密码是否正确。
一些 jcifs 类有一个 getPassword 方法,因为它允许您直接从用户名和密码创建登录请求。如果您使用这种方法,那么除了设置密码之外,您还可以检索它。但这不是让浏览器为您进行身份验证时使用的方法,因此您将无法检索实际密码。