我按照(https://wiki.jasig.org/display/CASUM/Best+Practice+-+Setting+Up+CAS+Locally+using+the+Maven2+WAR+Overlay+Method)的说明来构建CAS服务器,然后按照LDAP(https://wiki.jasig.org/display/CASUM/LDAP)进行身份验证的说明进行操作。但是,我在Tomcat日志中不断收到以下错误消息:
[LDAP:错误代码34 - 无效的DN];嵌套异常是javax.naming.InvalidNameException:[LDAP:错误代码34 - 无效DN]
我已经验证我的绑定用户凭据是正确的,因为我能够从命令行执行以下搜索:
ldapsearch -x -H ldaps://fuller.edu:636 -b“ou = People,o = fuller.edu,o = cp”-D“cn =目录管理员”-w“密码”“(sn =史密斯)“cn sn pdsLoginId
搜索结果是正确的,几乎是即时的。
此时,我并不完全确定我所缺少的东西。以下是我的deployerConfigContext.xml文件的片段。
<bean class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler"
p:filter="pdsLoginId=%u"
p:searchBase="ou=People,o=fuller.edu,o=cp"
p:contextSource-ref="contextSource" />
<bean id="contextSource"
class="org.springframework.ldap.core.support.LdapContextSource">
<property name="pooled" value="true"/>
<property name="url" value="ldaps://fuller.edu:636" />
<property name="userDn" value="cn=Directory Manager"/>
<property name="password" value="our password"/>
<property name="baseEnvironmentProperties">
<map>
<entry key="com.sun.jndi.ldap.connect.timeout" value="3000" />
<entry key="com.sun.jndi.ldap.read.timeout" value="3000" />
<entry key="java.naming.security.authentication" value="simple" />
</map>
</property>
</bean>
我在stackoverflow.com搜索过几篇帖子,并尝试了大部分答案,但没有运气。我希望有人会发现我的配置中缺少的东西并向我发送正确的方向。
我很高兴发布您可能需要查看的更多代码。
提前致谢。
答案 0 :(得分:0)
您的命令行LDAP绑定测试使用"ou=People,o=our.edu,o=cp"
的DN,但配置文件指定ou=People,o=edu,o=cp
的DN。那些不一样。
o=our.edu
或o=edu
评论解释为ou=People,o=fuller.edu,o=cp
下一步是查看是否需要使用反斜杠转义句点,以便在命令行上运行的ou=People,o=fuller.edu,o=cp
可能在配置文件中为ou=People,o=fuller\.edu,o=cp
。