如何将自定义凭据传递给 Spring Boot ldap

Posted

技术标签:

【中文标题】如何将自定义凭据传递给 Spring Boot ldap【英文标题】:How to pass custom creds to spring boot ldap 【发布时间】:2018-12-02 17:47:18 【问题描述】:

我正在使用 spring-ldap 和 spring-boot-starter 安全性的组合。我已经配置了基本设置,但停留在传递用户名和密码以进行身份​​验证。它总是试图验证 application.properties 中指定的默认凭据。无论如何通过传递登录表单中给出的凭据来正确执行此操作。

@覆盖 protected void configure(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】:

我可以通过创建一个返回用户详细信息上下文映射器的 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;
        
    ;

【讨论】:

以上是关于如何将自定义凭据传递给 Spring Boot ldap的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义参数传递给事件处理程序

Android - 如何将自定义对象传递给片段

如何在每个请求中将 winform 自定义用户凭据传递给 WCF 服务?

是否存在某种方式将自定义参数传递给 Firebase 上的短动态链接?

将自定义启动参数传递给 detox

将自定义表单参数传递给表单集