gpt4 book ai didi

java - Spring Boot 中自定义 LdapUserDetailsS​​ervice 始终无法匹配密码

转载 作者:行者123 更新时间:2023-12-01 16:41:32 37 4
gpt4 key购买 nike

我目前正在为我的 Spring boot 应用程序构建自定义 LdapUserDetailsS​​ervice。在使用自定义 UserDetailsS​​ervice 之前,我使用了 AuthenticationManagerBuilder 类的 ldap 身份验证功能。我的自定义 userDetailsS​​ervice 扩展了 LdapUserDetailsS​​ervice。我按如下方式启动类(class):

public CustomLdapUserDetailsService(LdapContextSource contextSource, ServerSettings serverSettings) {
super(setLdapUserSearch(contextSource, serverSettings), setDefaultLdapAuthoritiesPopulator(contextSource, serverSettings));
}

private static LdapUserSearch setLdapUserSearch(LdapContextSource contextSource, ServerSettings serverSettings) {
LdapSettings ldapSettings = serverSettings.getSecurity().getLdap();
return new FilterBasedLdapUserSearch(ldapSettings.getUserSearchBase(), ldapSettings.getUserSearchFilter(), contextSource);


}

private static DefaultLdapAuthoritiesPopulator setDefaultLdapAuthoritiesPopulator(LdapContextSource contextSource, ServerSettings serverSettings) {
LdapSettings ldapSettings = serverSettings.getSecurity().getLdap();
DefaultLdapAuthoritiesPopulator defaultAuthoritiesPopulator = new DefaultLdapAuthoritiesPopulator(contextSource, ldapSettings.getGroupSearchBase());
defaultAuthoritiesPopulator.setGroupSearchFilter(ldapSettings.getGroupSearchBase());
return defaultAuthoritiesPopulator;
}

此处使用的 ServerSettings 对象与我之前用于配置 AuthenticationManagerBuilder 的 ldap 对象的对象相同。但是,现在使用我的自定义 LDAP 身份 validator ,身份验证总是因凭据无效而失败。 (我检查了凭证 - 它们是正确的!=D)。所以我所做的是检查 BCryptPasswordEncoder 的 match() 方法。我检索了 rawPassword (GoodNewsEveryone) 和encodedPassword ($2a$10$YsCMR1SguyMe31DsWof0v.8Pr3rHWKzSZEud.tqnO0ZO2Kx4XjXsy) 并在 bcrypt-generator.com 上检查它们是否匹配。当然不会(即使密码是正确的!)

目前我不太确定错误可能出在哪里,所以也许有人遇到了同样的问题,或者谁知道问题可能出在哪里?

最佳答案

好的,我发现了。对于遇到同样问题的任何人:将自定义 UserDetailsS​​ervice 添加到安全配置时,您需要添加密码解码器。 LDAP 本身不使用 bcrypt 之类的编码,而是使用 sha 算法。所以只要添加一个 sha 密码编码器就可以了。为此,您首先调用 AuthenticationManagerBuilder 的 addUserDetailsS​​ervice 方法,然后调用将您的密码解码器添加为参数的 passwordDencoder 方法。

关于java - Spring Boot 中自定义 LdapUserDetailsS​​ervice 始终无法匹配密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61850358/

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