gpt4 book ai didi

passwords - 如何使用 spring security 在 LdapUserDetailsMapper 中从 LDAP 访问用户密码?

转载 作者:行者123 更新时间:2023-12-04 14:41:52 25 4
gpt4 key购买 nike

我们在基于 spring MVC 的 Web 应用程序中使用 spring security。

我们正在使用 spring security 的 LDAP 模块进行身份验证,该模块工作正常。现在我需要从 LDAP 获取用户密码以保存在数据库中。

为此,我在我的代码中使用了它。

    public class PersonContextMapper implements UserDetailsContextMapper {

public UserDetails mapUserFromContext(DirContextOperations ctx, String username, Collection<GrantedAuthority> authorities) {
Person.Essence p = new Person.Essence(ctx);

p.setUsername(username);
p.setAuthorities(authorities);

Object passwordValue = ctx.getObjectAttribute("userPassword");

return p.createUserDetails();

}

public void mapUserToContext(UserDetails user, DirContextAdapter ctx) {
Assert.isInstanceOf(Person.class, user, "UserDetails must be a Person instance");

Person p = (Person) user;
p.populateContext(ctx);
}
}

但我没有得到密码的任何值。它始终为空。

请帮忙。

附言。我的身份验证成功了。这意味着在登录表单中输入的密码与存储在 LDAP 中的密码正确匹配。

最佳答案

可能是连接的认证状态没有权限读取userPassword属性的值。大多数情况下,应用程序向目录服务器发出 BIND 请求,包括必要的适当控制。密码包含在 BIND 请求中,目录服务器在成功完成 BIND 请求后更改连接的身份验证状态。无论如何,userPassword 属性的值经常被加密或散列,应用程序无需读取该值。

关于passwords - 如何使用 spring security 在 LdapUserDetailsMapper 中从 LDAP 访问用户密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7334232/

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