gpt4 book ai didi

java - 盐渍 SHA 类型中的 Spring LDAP 身份验证错误凭据密码

转载 作者:行者123 更新时间:2023-12-03 20:18:21 24 4
gpt4 key购买 nike

我有一个使用 REST 服务进行 LDAP 身份验证的项目。我的 LDAP 配置有 Salted SHA (SSHA) 密码哈希方法。在 Spring 的 LDAP 身份验证最佳实践指南中支持 SHA 方法,当我使用时,我得到了错误的凭据,而凭据正常。

我的配置类引用:

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.ldapAuthentication()
.userSearchFilter("uid={0}")
.contextSource(contextSource())
.passwordCompare()
.passwordEncoder(new LdapShaPasswordEncoder())
.passwordAttribute("userPassword");
}

@Bean
public DefaultSpringSecurityContextSource contextSource() {
return new DefaultSpringSecurityContextSource(Arrays.asList("ldap://localhost:8389/"), "dc=springframework,dc=org");
}
}

我的ldif配置;
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: {SSHA}pcFdFhO/NS98EhTRup60PMkHMWFRDkJ3jUu1Zg==

我的原密码是 Test1234 .我的 pom.xml文件 ;
   <dependency>
<groupId>org.springframework.ldap</groupId>
<artifactId>spring-ldap-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-ldap</artifactId>
</dependency>
<dependency>
<groupId>com.unboundid</groupId>
<artifactId>unboundid-ldapsdk</artifactId>
</dependency>

如何使用我的用户名/密码通过 SSHA 密码加密对 ldap 服务器进行身份验证?

最佳答案

试试这个方法

auth
.ldapAuthentication()
.userSearchFilter("uid={0}")
.contextSource(contextSource())
.passwordCompare().passwordAttribute("userPassword")
.and()
.passwordEncoder(passwordEncoder());

并创建自定义密码编码器
private PasswordEncoder passwordEncoder() {
final LdapShaPasswordEncoder sha = new LdapShaPasswordEncoder();
return new PasswordEncoder() {
@Override
public String encode(CharSequence rawPassword) {
return sha.encodePassword(rawPassword.toString(), null);
}
@Override
public boolean matches(CharSequence rawPassword, String encodedPassword) {
return sha.isPasswordValid(encodedPassword, rawPassword.toString(), null);
}
};
}

我有同样的问题,它对我有用。

希望对你有帮助!

关于java - 盐渍 SHA 类型中的 Spring LDAP 身份验证错误凭据密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44871406/

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