spring LDAP模板认证

我正在尝试通过 spring ldap 对用户进行身份验证。以下是初始化 ldap 模板的代码。


contextSource = new LdapContextSource();

contextSource.setUrl("ldaps://ldap.example.com");

contextSource.setBase("DC=example,DC=com");

contextSource.setUserDn("backend-app");

contextSource.setPassword("password");

contextSource.afterPropertiesSet();


PoolingContextSource pooledContextSource = new PoolingContextSource(); 

pooledContextSource.setDirContextValidator(new 

DefaultDirContextValidator());

pooledContextSource.setContextSource(contextSource);


ldapTemplate =  new LdapTemplate(pooledContextSource); 

ldapTemplate.afterPropertiesSet();

当我尝试使用 ldapTemplate 身份验证方法时,它返回 false。


// below line fails

ldapTemplate.authenticate("OU=Service Accounts,OU=Pseudo-Users", "frontend-web", "password");

但是当我使用目录上下文时它可以工作


DirContext ctx = null;

try {

  ctx = contextSource.getContext("frontend-web", "password");

  return true;

} catch (Exception e) {

  logger.error("Login failed", e);

  return false;

} finally {

  LdapUtils.closeContext(ctx);  

}

问题 1:无论如何要使 ldaptemplate 身份验证方法起作用吗?


问题二:直接使用DirectoryContext时为什么不用提供baseDn。ldap 如何知道在哪里可以找到用户“frontend-web”。它是否在整个目录中搜索用户“frontend-web”


任何人都可以帮忙。


大话西游666
浏览 550回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java