我按照(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: error code 34 - Invalid DN]
我已经验证我的绑定用户凭据是正确的,因为我能够从命令行执行以下搜索:
ldapsearch -x -H ldaps://fuller.edu:636 -b "ou=People,o=fuller.edu ,o=cp" -D "cn=Directory Manager" -w "password" "(sn=Smith)" 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 上搜索了几篇文章,并尝试了大部分答案,但没有运气。我希望有人能发现我的配置中缺少的东西,并把我送到正确的方向。
我很高兴发布您可能需要查看的更多代码。
提前致谢。