当前位置: 首页 > 知识库问答 >
问题:

如何将自定义creds传递给spring boot ldap

印曜灿
2023-03-14

我使用的是spring ldap和spring boot starter安全性的组合。我已经配置了基本的设置,但仍在传递用户名和密码以进行身份验证。它总是试图验证应用程序中指定的默认凭据。财产。不管怎样,通过传递登录表单中给出的信誉,是否可以正确地做到这一点。

@覆盖受保护的无效配置(AuthenticationManagerBuilder auth)引发异常{

if(Boolean.parseBoolean(ldapEnabled)) {
    auth
            .ldapAuthentication()
            .contextSource()
            .url(ldapUrls + ldapBaseDn)
            .managerDn(ldapSecurityPrincipal)
            .managerPassword(ldapPrincipalPassword)
            .and()
            .userDnPatterns(ldapUserDnPattern);
}

}

ldap.urls= ldap://localhost:10389/
ldap.base.dn= ou=users,dc=example,dc=com
ldap.username= cn=test, ou=users,dc=example,dc=com
ldap.user.dn.pattern = cn={0}


ldap.partitionSuffix=dc=example,dc=com
ldap.partition=example
ldap.principal=uid=admin,ou=system
ldap.password=secret
ldap.port=10389
ldap.url=ldap://localhost:10389/

共有1个答案

顾宸
2023-03-14

我可以通过创建一个bean来修复这个问题,该bean返回用户详细信息上下文映射器,如下所示。

@Bean
public UserDetailsContextMapper userDetailsContextMapper() {
    return new LdapUserDetailsMapper() {
        @Override
        public UserDetails mapUserFromContext(DirContextOperations ctx, String username, Collection<? extends GrantedAuthority> authorities) {
            UserDetails details = super.mapUserFromContext(ctx, username, authorities);
            return details;
        }
    };
}
 类似资料: