JNDI LDAP 身份验证需要将明文密码(Context.SECURITY_CREDENTIALS)传递给几乎所有的安全机制(或者至少我理解它的方式)。它看起来像是以某种方式设计的,密码来自当前的 JVM。但是,必须从另一台机器发送的密码呢?这种方法迫使它以可恢复的方式(最简单的是明文)发送,几乎没有安全性。
更具体地说,让我们考虑一个 3 层设置:客户端、Java 服务器和 LDAP 服务器。用户在客户端输入用户名和密码,发送到 java 服务器。然后 java 服务器与 LDAP 服务器通信以授权这些凭据。有没有办法使从客户端到 java 服务器的传输安全?我知道,我们可以使用 SSL 或其他方式来保护通道本身,但是我们必须通过这个(甚至是安全的)通道以可恢复的方式发送密码仍然没有好处。
我试图寻找答案,但看起来他们中的大多数人都考虑使用 2 层设置。还有一些 3d 方 java 库推荐(而不是 JNDI),但不清楚它们是否可以处理我的任务。如果他们真的这样做了,你能举个例子来利用它们来完成我的任务吗?
我的目标平台是 Delphi XE3 Client、Java SE 6 Server 和 AD LDAP。但我也对不限于这些具体客户端和 LDAP 的更多理论讨论感兴趣。