Spring security LDAP是以明文形式还是以编码文本形式存储用户密码?

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

我将阅读这篇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: 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将密码以明文形式提供给服务器,但服务器会在将其存储到对象上之前根据服务器/密码策略配置对值进行哈希/加密。

“密码存储方案”
。太棒了答案是这样的。
“密码存储方案”
。太棒了这就是答案。