0

我正在使用 OpenAM 及其嵌入式 OpenDJ 作为 LDAP 服务,以保护我在 JBoss 7 上运行的 Web 应用程序。

当我启动我的 JBoss 时,我收到此错误:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ldapUserDN'
...
Caused by: javax.naming.NameNotFoundException: ldap/idp/userDN -- service jboss.naming.context.java.ldap.idp.userDN

所以显然 Spring 正在寻找 JNDI 节点ldap/idp/userDN。但是我在项目中获得的 jboss 配置文件有以下条目:

            <simple name="ldap/opendj/url" value="ldap://localhost:50389"/>
            <simple name="ldap/opendj/userDN" value="cn=Directory Manager"/>
            <simple name="ldap/opendj/password" value="mypassword"/>
            <simple name="ldap/opendj/baseDN" value="dc=opensso,dc=java,dc=net"/>

这些属性被添加到我在 JBoss 上的 JNDI 树中。

例如,如果我将这些更改为“ldap/idp/userDN”,那么我就可以摆脱错误,但我想知道是否有任何地方应该将“ldap/opendj/userDN”映射到“ldap/idp/userDN” “,我错过了。

4

1 回答 1

1

如果您使用的是 Spring LDAP,则 ldap-context-source 的实际配置位于 spring 配置文件中,可能如下所示:

<jee:jndi-lookup jndi-name="ldap/idp/url" id="ldapUrl"/>
<jee:jndi-lookup jndi-name="ldap/idp/userDN" id="ldapUserDN"/>
<jee:jndi-lookup jndi-name="ldap/idp/password" id="ldapPassword"/>
<jee:jndi-lookup jndi-name="ldap/idp/baseDN" id="ldapBaseDN"/>
<ldap:context-source url="#{ldapUrl}"  
    username="#{ldapUserDN}"
    password="#{ldapPassword}"      
    base="#{ldapBaseDN}"
    native-pooling="true"/>

所以你的 jboss 配置文件中的 jndi 条目应该与上面的匹配。

于 2014-12-12T11:12:06.503 回答