使用非明文密码进行 Java LDAP 身份验证

标签 java security authentication ldap jndi

JNDI LDAP 身份验证需要将明文密码 (Context.SECURITY_CREDENTIALS) 传递给几乎所有安全机制(或者至少是我的理解)。看起来是这样设计的,密码源自当前的 JVM。但是如果密码必须从另一台机器发送呢?这种方法迫使它以可恢复的方式发送(最简单的是明文),安全性很低。

更具体地说,让我们考虑一个 3 层设置:客户端、java 服务器和 LDAP 服务器。用户在客户端输入用户名和密码,该用户名和密码被发送到java服务器。然后,java 服务器与 LDAP 服务器通信以授权这些凭证。有没有办法让客户端到java服务器的传输安全呢? 据我所知,我们可以使用 SSL 或其他方式来保护 channel 本身的安全,但我们必须通过此(甚至是安全的) channel 以可恢复的方式发送密码,这仍然是不好的。

我试图寻找答案,但看起来大多数人都考虑采用两层设置。还有一些 3d 方 java 库建议(而不是 JNDI),但不清楚它们是否可以处理我的任务。如果他们确实这样做了,您能否举一个利用它们来完成我的任务的例子?

我的目标平台是 Delphi XE3 客户端、Java SE 6 服务器和 AD LDAP。但我也对更理论化的讨论感兴趣,而不仅仅局限于这些具体的客户端和 LDAP。

最佳答案

This approach forces it to be sent in a recoverable fashion (the most simple is cleartext) with little security.

该方法要求您使用 SSL。就这么简单。

关于使用非明文密码进行 Java LDAP 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18685947/

相关文章:

java - 如何设置 jformattedtextfield 仅采用 2 个值?

azure - 在部署期间替换 Service Fabric 应用程序参数

rest - 如何保护 flask 上的 REST Api

php - Azure使用rest api和php将blob从一个容器复制到同一存储帐户中的另一个容器

PHP 和 mysql 的 select 出现奇怪的错误

java - 请解释此正则表达式的输出(以正面前瞻开头)

java - 我的菜单被隐藏了,尽管我定义了它

javascript - 我可以使用哪些方法来重新排列 javascript 函数的执行顺序?

java - spring + hibernate 405 不支持删除方法

c++ - 安全登录逻辑