gpt4 book ai didi

java - LDAP 是否支持 BCrypt?尝试在 Java Spring Security 中实现 BCrypt

转载 作者:行者123 更新时间:2023-11-30 07:06:50 28 4
gpt4 key购买 nike

我目前正在尝试在我的 Spring Security 中使用 LDAP 实现 BCrypt。我的问题是 LDAP 是否支持此功能,如果支持,我该如何实现?查看下图,我没有将 BCrypt 视为 LDAP 透视图中密码编辑器 View 中的一个选项。我当前的基本身份验证使用纯文本密码;但是,我想加强安全性。

LDAP Options within Editor of LDAP perspective

我当前的 security-context.xml 是:

<authentication-manager>
<ldap-authentication-provider
user-search-filter="(uid={0})"
user-search-base="ou=users,${ldap.base}"
group-search-filter="(uniqueMember={0})"
group-search-base="ou=roles,${ldap.base}"
group-role-attribute="cn"
role-prefix="ROLE_">


</ldap-authentication-provider>

</authentication-manager>

我如何在我的案例中实现 BCrypt?我在某处读到我们可能必须使用 UserDetailsS​​ervice?

如有任何帮助,我们将不胜感激。谢谢。

最佳答案

听起来您可能误解了启用 bcrypt(或任何其他哈希)实际上会实现什么,以及它会在哪里实现。例如,它不会对基本身份验证的工作方式产生任何影响。这仍然会以明文形式将密码发送到您的应用程序。然后密码散列将在服务器端完成,并根据存储的散列值进行检查。在非 LDAP 应用程序中,Spring Security 会在从数据库加载密码哈希后执行此验证。

LDAP 添加了另一层。在这种情况下,Spring Security 是 LDAP 服务器的客户端,并将在 LDAP 绑定(bind)操作中使用提供的用户名和密码来尝试以用户身份进行身份验证。密码再次以明文形式发送,这次散列和比较由 LDAP 服务器完成。

因此,如果您的目标是保护传输中的密码,则散列是无关紧要的。这就是您需要使用安全连接的原因。

理论上,您可以更像数据库一样使用 LDAP,以您希望的任何哈希格式存储密码,让 Spring Security 读取它们并自行进行验证。这可能是您引用的 UserDetailsS​​ervice 选项。然而,这不是正常的做法,它可能会破坏绑定(bind)身份验证的使用(因为 LDAP 服务器本身不会理解密码编码),并且需要授予对密码字段的读取权限,这通常是不受欢迎的。

正如@EJP 所说,您应该坚持使用 SSHA 选项并使用安全连接到您的应用程序,也可能连接到您的 LDAP 服务器。

关于java - LDAP 是否支持 BCrypt?尝试在 Java Spring Security 中实现 BCrypt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25389681/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com