我从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中吗?
答案 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
属性来访问它。