如何将自定义凭据传递给 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的主要内容,如果未能解决你的问题,请参考以下文章
如何在每个请求中将 winform 自定义用户凭据传递给 WCF 服务?