1

我按照(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 上搜索了几篇文章,并尝试了大部分答案,但没有运气。我希望有人能发现我的配置中缺少的东西,并把我送到正确的方向。

我很高兴发布您可能需要查看的更多代码。

提前致谢。

4

1 回答 1

0

您的命令行 LDAP 绑定测试使用 DN,"ou=People,o=our.edu,o=cp"但配置文件指定ou=People,o=edu,o=cp. 那些不一样。

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位于配置文件中。

于 2013-02-21T10:32:46.820 回答