bla*_*k3r 47 active-directory authentication single-sign-on pki
有人告诉我,可以制作不需要登录的 Web 应用程序。用户登录到 Windows,它通过 Active Directory (LDAP) 查找进行身份验证。然后,他们应该能够访问我的 web 应用程序并且永远不会看到登录提示。这些客户一直将其称为单点登录(可能是错误的,也是我困惑的一部分)。
但是,从我从 Tomcat 文档中读到的 Single Sign On 是:
当您希望让用户能够登录到与您的虚拟主机关联的任何一个 Web 应用程序,然后让同一虚拟主机上的所有其他 Web 应用程序识别他们的身份时,可以使用单点登录阀。
这对我来说非常清楚。用户必须登录一次才能访问 tomcat 实例上的每个 web 应用程序。但是,我需要做的是以某种方式让他们登录,而无需向我的 tomcat 服务器提供任何凭据。
所以,为了让它起作用,我想:
我见过一些使用客户端证书的例子......特别是 DoD PKI 系统,这对我来说很有意义,因为在这些情况下你配置 Tomcat 来请求客户端证书,但只是登录到 Windows 我不明白这是怎么回事将工作以及浏览器将传递给服务器的信息等。这是 NTLM 的用途吗?
uni*_*010 47
首先 - 以防其他用户碰巧访问此页面 - 只有某些身份验证方法允许您进行无提示 SSO。它们是NTLM和Kerberos。另一方面,LDAP 永远不会为您提供无提示的 SSO。
NTLM其实就是NTLMv1和NTLMv2。它们非常不同,NTLMv1 由于严重的安全问题而被弃用。您应该避免使用无法正确识别是否支持 NTLMv1 或 NTLMv2 的 Java 身份验证解决方案,因为它们仅在其文档中使用“NTLM”一词。很有可能上述安全解决方案的开发人员不知道自己,这更有可能是寻找防火梯的原因。
与传统观点相反,NTLMv1 和 NTLMv2 都由 Microsoft 完整记录,但您仍然会找到声称对协议进行“逆向工程”的解决方案。确实,在 Microsoft 记录我认为在 2006 年或 2007 年左右的协议之前需要这样做。无论如何,NTLMv1 是一个禁忌。NTLMv2 本身并没有什么问题,但微软一直在其所有产品中逐步淘汰 NTLM(以任何形式)以支持 Kerberos 身份验证。NTLMv1 早已不复存在,NTLMv2 现在仅在没有域控制器可用的情况下由 Microsoft 使用。底线:NTLM(以任何形式)并不是真正的前进方向。我们实际上应该向 Microsoft 致敬,因为它在这里采用了基于标准的方法。
这给您留下了 Kerberos。Microsoft 已经创建了一个协议,用于通过 HTTP 协商和传输身份验证信息。这在 Microsoft 产品中被称为“集成 Windows 身份验证”,但它已被确定为官方标准,名称为SPNEGO。这是你应该寻找的。SPNEGO 支持 NTLMv2 和 Kerberos 作为底层身份验证机制,但由于上述原因,您应该针对 Kerberos 而不是 NTLMv2。
我已经使用SourceForge 上的SPNEGO 项目成功地将多个 Tomcat 应用程序(在 Linux/Solaris 上运行)与 Active Directory 集成。我发现这是最简单的方法。这为您提供了类似于 Sharepoint 服务器所做的无提示 SSO。这很可能是您的用户在谈论“SSO”时所期望的。在 Active Directory 中正确获取 Kerberos 配置、生成密钥和设置“虚拟”帐户可能会很麻烦,但一旦正确配置,它就会像魅力一样发挥作用。
我不喜欢SourceForge的SPNEGO 项目的唯一一件事是我不明白它执行身份验证的频率。我讨厌的怀疑是它为每个页面浏览而不是每个会话一次。也许我错了。无论如何:这突出了 SSO 解决方案中要考虑的另一件事:您不希望实施一个解决方案,该解决方案会向您的身份提供者(例如 Active Directory)发送不必要的请求。
| 归档时间: |
|
| 查看次数: |
84876 次 |
| 最近记录: |