使用Spring Security的LDAP身份验证为任何userDn抛出LDAP错误49,52e

时间:2014-06-01 18:44:40

标签: spring spring-security active-directory ldap

我从spring security下载了基本示例3.2.4 ldap-xml脚本。修改的唯一部分是application security context.xml指向我的ldap服务器而不是虚拟服务器。

<bean id="contextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
    <constructor-arg value="ldap://server:389"/>
    <property name="userDn" value="cn=myUsername"/>
    <property name="password" value="myPassword"/>
</bean>

现在的事情是,无论我在userDn值中提供什么,无论是“afdjljaf”还是“1234244”甚至是“”。我得到错误

  

“LDAP:错误代码49 - 80090308:LdapErr:DSID-0C0903A9,评论:   AcceptSecurityContext错误,数据52e“。

使用AdFind.exe“http://www.joeware.net/freetools/tools/adfind/usage.htm”,使用相同的userDn(假设我的userDn是XYZ,密码是passxyz),我可以使用命令登录ldap服务器

  

“Adfind.exe -h server:port -u XYZ -up passxyz”

我能够成功连接到ldap服务器并浏览目录。

有人可以告诉我userDn和密码属性的等价值,我应该把它放在安全上下文xml中吗?

2 个答案:

答案 0 :(得分:1)

userDN应该是那样的&#34; cn = myUsername,ou = myDepartment,dc = mydomain,dc = com&#34;。您的用户名应包含分区名称,另一项可以使用spring security标记。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:s="http://www.springframework.org/schema/security"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/security
       http://www.springframework.org/schema/security/spring-security.xsd">

    <s:ldap-server id="contextSource" url="${ldap.url}" manager-dn="${ldap.userDn}"
                   manager-password="${ldap.password}"/>


</beans>

<强>更新

您的服务器网址也应该包含分区名称。 &#34; LDAP://10.0.0.1:389 / DC = myCompany中,DC = COM,DC = TR&#34;

答案 1 :(得分:0)

一般来说,DN或专有名称包含具有活动目录的对象的完整路径。

CN=myUsername不是有效的DN。首先,你放置myUsername的位置,实际应该是对象的名称(不是他们的samAccountName或UserPrincipalName,即用户名,或者他们的displayName),并且应该包含域名和容器,例如这个例子:

CN=Joe Bloggs,OU=Users,OU=Company,DN=domainname,DN=local

可以通过查看活动目录对象的distinguishedName属性来访问它。