首先,请原谅我的英语。
我一直试图找到一个解决方案3天,但我找不到它。
我正在尝试连接到AD LDAP以执行将在应用程序中注册的用户搜索。
通过Spring-Security-CAS对应用程序进行身份验证是正确的。
我遇到的问题是Windows工作正常,但在Linux中部署应用程序时会出现身份验证错误。 我试图根据文档逃避特殊字符,但没关系,错误保持不变。
我只想连接到LDAP以进行用户查询。
我使用的配置是Spring-Ldap标准。
<security:ldap-server id="contextSource"
url="${pso.ldap.url}"
manager-dn="${pso.ldap.userDn}"
manager-password="${pso.ldap.password}"
root="${ldap.auth.search.ldap}"/>
<ldap:ldap-template id="ldapTemplate"
context-source-ref="contextSource"
ignore-partial-result="true"/>
用户ID具有此值
CN=Usuario (Autenticación LDAP),OU=xxxx8,OU=XXXXXX XXXXX,DC=DOMAIN,DC=COM
我将非常感谢可能出现的错误或缺少的其他配置。
try {
logger.info("MOSTRAR PARAMETROS CONEXION CONTEXTSOURCE....");
//CATCH WHEN TRY TO WRITE THIS IN ORDER TO VIEW DATA TO TEST.
//BUT IF COMMENT THIS LINE THEN THE ERROR IS ON search method
logger.info("PARAMETERS CNX: " + ldapTemplate.getContextSource().getReadOnlyContext().getEnvironment().toString());
String resultKeySearch = ASTERISK.concat(keySearch).concat(ASTERISK);
query = query().base(LDAP_BASE)
.attributes("cn", "userPrincipalName", "sAMAccountName", "displayName")
.where("objectclass").is("person").and("objectclass").is("user")
.and(query().where("cn")
.like(resultKeySearch)
.or("userPrincipalName").like(resultKeySearch)
.or("sAMAccountName").like(resultKeySearch)
.or("displayName").like(resultKeySearch)
);
persons = ldapTemplate.search(query, new PersonAttributesMapper());
} catch (org.springframework.ldap.NamingException e) {
logger.catching(e);
} catch (NamingException e) {
logger.catching(e);
}
它生成的错误是相同的
2017-03-20 10:56:56,794 ERROR [com.psoplaneta.auth.web.api.rest.exceptions.handler.CustomRestExceptionHandler](默认任务-17)错误:org.springframewor k.ldap.AuthenticationException: [LDAP:错误代码49 - 80090308:LdapErr:DSID-0C0903AA,注释:AcceptSecurityContext错误,数据525,v1772];嵌套的exception是javax.naming.AuthenticationException:[LDAP:错误代码49 - 80090308:LdapErr:DSID-0C0903AA,注释:AcceptSecurityContext错误,数据525,v1772]
提前致谢