Spring Ldap LDAP:错误代码 32 - 0000208D
Spring Ldap LDAP: error code 32 - 0000208D
我正在处理使用 LDAP 进行身份验证的应用程序。我正在使用 spring LDAP 模板进行身份验证,但收到以下响应
{
"message": "[LDAP: error code 32 - 0000208D: NameErr: DSID-031001E5, problem 2001 (NO_OBJECT), data 0, best match of:\n\t''\n\u0000]; nested exception is javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-031001E5, problem 2001 (NO_OBJECT), data 0, best match of:\n\t''\n\u0000]; remaining name '/'"
}
以下是 spring
的配置
<beans:bean id="contextSource"
class="org.springframework.ldap.core.support.LdapContextSource">
<beans:property name="base" value="" />
<beans:property name="url" value="<LDAP-URL>" />
<beans:property name="userDn" value="<USER-DN>" />
<beans:property name="password" value="<PASSWORD>" />
</beans:bean>
<beans:bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate">
<beans:constructor-arg ref="contextSource" />
</beans:bean>
Java代码:
AndFilter filter = new AndFilter();
filter.and(new EqualsFilter("objectclass", "person")).and(new EqualsFilter("sAMAccountName", username));
boolean result = ldapTemplate.authenticate(LdapUtils.emptyLdapName(), filter.toString(), password);
我是 LDAP 的新手,任何帮助或示例都非常棒。
当你已经设置了基础时,你不需要在进一步的操作中指定完整的 dn。你确定你有正确的服务器规格吗?错误 32 通常是搞砸了前缀或目录配置!
根据之前的正确答案,searchBase 必须为空。我的正确过滤器是:
FilterBasedLdapUserSearch userSearch = new FilterBasedLdapUserSearch("", "(&(CN={0})(memberOf=cn=Group-BioBank,OU=HyperV,OU=Services,DC=bob,DC=uk))", contextSource);
这个过滤器非常有用。 (Spring4.x)
过滤器说明:
https://confluence.atlassian.com/kb/how-to-write-ldap-search-filters-792496933.html
我正在处理使用 LDAP 进行身份验证的应用程序。我正在使用 spring LDAP 模板进行身份验证,但收到以下响应
{
"message": "[LDAP: error code 32 - 0000208D: NameErr: DSID-031001E5, problem 2001 (NO_OBJECT), data 0, best match of:\n\t''\n\u0000]; nested exception is javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-031001E5, problem 2001 (NO_OBJECT), data 0, best match of:\n\t''\n\u0000]; remaining name '/'"
}
以下是 spring
的配置<beans:bean id="contextSource"
class="org.springframework.ldap.core.support.LdapContextSource">
<beans:property name="base" value="" />
<beans:property name="url" value="<LDAP-URL>" />
<beans:property name="userDn" value="<USER-DN>" />
<beans:property name="password" value="<PASSWORD>" />
</beans:bean>
<beans:bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate">
<beans:constructor-arg ref="contextSource" />
</beans:bean>
Java代码:
AndFilter filter = new AndFilter();
filter.and(new EqualsFilter("objectclass", "person")).and(new EqualsFilter("sAMAccountName", username));
boolean result = ldapTemplate.authenticate(LdapUtils.emptyLdapName(), filter.toString(), password);
我是 LDAP 的新手,任何帮助或示例都非常棒。
当你已经设置了基础时,你不需要在进一步的操作中指定完整的 dn。你确定你有正确的服务器规格吗?错误 32 通常是搞砸了前缀或目录配置!
根据之前的正确答案,searchBase 必须为空。我的正确过滤器是:
FilterBasedLdapUserSearch userSearch = new FilterBasedLdapUserSearch("", "(&(CN={0})(memberOf=cn=Group-BioBank,OU=HyperV,OU=Services,DC=bob,DC=uk))", contextSource);
这个过滤器非常有用。 (Spring4.x)
过滤器说明: https://confluence.atlassian.com/kb/how-to-write-ldap-search-filters-792496933.html