【问题标题】:How to pass custom creds to spring boot ldap如何将自定义凭据传递给 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/

【问题讨论】:

    标签: spring


    【解决方案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;
            }
        };
    }
    

    【讨论】:

      猜你喜欢
      • 2015-05-14
      • 2013-03-24
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 2021-11-08
      • 2012-08-17
      • 1970-01-01
      • 2022-10-19
      相关资源
      最近更新 更多