Spring security LDAP是以明文形式还是以编码文本形式存储用户密码?
我将阅读这篇spring LDAP集成文章: 本文包含一个示例LDIF文件,其中密码以明文形式显示Spring security LDAP是以明文形式还是以编码文本形式存储用户密码?,spring-security,ldap,spring-ldap,spring-security-ldap,Spring Security,Ldap,Spring Ldap,Spring Security Ldap,我将阅读这篇spring LDAP集成文章: 本文包含一个示例LDIF文件,其中密码以明文形式显示 dn: uid=bob,ou=people,dc=springframework,dc=org objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson cn: Bob Hamilton sn: Hamilton uid: bob userPassword: b
dn: uid=bob,ou=people,dc=springframework,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Bob Hamilton
sn: Hamilton
uid: bob
userPassword: bobspassword
但是这个用户密码是加密的
dn: uid=ben,ou=people,dc=springframework,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Ben Alex
sn: Alex
uid: ben
userPassword: $2a$10$c6bSeWPhg06xB1lvmaWNNe4NROmZiSpYhlocU/98HNr2MhIOiSt36
所以我想知道,这是LDAP服务器上可配置的吗。为什么一个用户的密码是加密的而其他用户的密码不是
然而,我看到本例中的spring安全性配置为使用BCrypt密码编码器
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.ldapAuthentication()
.userDnPatterns("uid={0},ou=people")
.groupSearchBase("ou=groups")
.contextSource()
.url("ldap://localhost:8389/dc=springframework,dc=org")
.and()
.passwordCompare()
.passwordEncoder(new BCryptPasswordEncoder())
.passwordAttribute("userPassword");
}
建议登录的演示用户是
ben
,密码为benpassword
。只是想知道如果我以另一个用户的身份登录会发生什么,我想我应该被拒绝,因为spring使用bcrypt,ldap中其他用户的密码没有编码。这将取决于ldap服务器,特别是密码的处理方式。但是,是的,它们通常以某种加密/散列方式存储。例如,在Oracle Directory Server中,密码策略有一个“密码存储方案”,用于控制密码的存储方式。在某些目录服务器中,可以以明文形式存储用户密码。在这种情况下,任何具有密码读取权限的人都可以从用户帐户中提取密码。我没见过在沙箱外设置的东西
您正在查看的LDIF将密码以明文形式提供给服务器,但服务器会在将其存储到对象上之前根据服务器/密码策略配置对值进行哈希/加密。这取决于LDAP服务器,具体而言,取决于密码的处理方式。但是,是的,它们通常以某种加密/散列方式存储。例如,在Oracle Directory Server中,密码策略有一个“密码存储方案”,用于控制密码的存储方式。在某些目录服务器中,可以以明文形式存储用户密码。在这种情况下,任何具有密码读取权限的人都可以从用户帐户中提取密码。我没见过在沙箱外设置的东西 您正在查看的LDIF将密码以明文形式提供给服务器,但服务器会在将其存储到对象上之前根据服务器/密码策略配置对值进行哈希/加密。
“密码存储方案”
。太棒了答案是这样的。“密码存储方案”
。太棒了这就是答案。