jboss与LDAP集成

时间:2015-03-26 05:30:29

标签: java jboss ldap

我有一个应用程序,它当前使用JDBC来验证登录到应用程序的用户。但现在我想它应该能够使用LDAP登录我的应用程序。我的老板希望我将LDAP与JBOSS集成以实现它。我是LDAP新手,不知道需要做什么。任何人都能提出建议吗?

1 个答案:

答案 0 :(得分:1)

您可以在JBoss的standalone.xml中添加自定义安全域。 在此域中,您可以配置LDAP设置。 See this for some details. LDAP设置取决于您使用的LDAP,因此没有常规工作设置。

以下是一个例子:

<subsystem xmlns="urn:jboss:domain:security:1.0">
<security-domains>
    <security-domain name="other" cache-type="default">
        <authentication>
            <login-module code="Disabled" flag="required"/>
        </authentication>
    </security-domain>
    <security-domain name="test_ldap_security_domain">
        <authentication>
            <login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="required">
                <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
                <module-option name="java.naming.provider.url" value="ldap://10.10.10.10:389"/>
                <module-option name="bindDN" value="cn=abc,cn=Users,dc=mydomain,dc=com"/>
                <module-option name="bindCredential" value="Test@123"/>
                <module-option name="baseCtxDN" value="cn=Users,dc=mydomain,dc=com"/>
                <module-option name="baseFilter" value="(userPrincipalName={0})"/>
                <module-option name="rolesCtxDN" value="cn=Users,dc=mydomain,dc=com"/>
                <module-option name="roleFilter" value="(userPrincipalName={0})"/>
                <module-option name="roleAttributeID" value="memberOf"/>
                <module-option name="roleNameAttributeID" value="cn"/>
                <module-option name="roleAttributeIsDN" value="true"/>
                <module-option name="allowEmptyPasswords" value="false"/>
                <module-option name="Context.REFERRAL" value="follow"/>
                <module-option name="throwValidateError" value="true"/>
                <module-option name="searchScope" value="SUBTREE_SCOPE"/>
                <module-option name="allowEmptyPasswords" value="true"/>
            </login-module>
            <login-module code="org.jboss.security.auth.spi.RoleMappingLoginModule" flag="optional">
                <module-option name="rolesProperties" value="/home/userone/jboss-as-7.0.1.Final/standalone/configuration/test-roles.properties"/>
                <module-option name="replaceRole" value="false"/>
            </login-module>
        </authentication>
    </security-domain>
</security-domains>
</subsystem>

根据应用程序的类型,您需要在应用中使用一些配置才能使应用使用此域。

如果您有一个Web应用程序(.war),则需要一个jboss-web.xml:

<jboss-web>
    <security-domain>java:/jaas/test_ldap_security_domain</security-domain>
</jboss-web>

您现在可以使用标准的JavaEE身份验证/授权机制。例如。在web.xml中。