Spring安全LDAP身份验证多dn模式

Spring安全LDAP身份验证多dn模式,spring,spring-security,spring-ldap,Spring,Spring Security,Spring Ldap,我们正在使用springsecurity&使用LDAP来验证我们的web应用程序。在我们的LDAP配置中,有多个可用的userndn模式。我想知道如何在applicationContext-security.xml文件中配置多个userdn模式。我已指定以下配置 <b:bean id="ldapProvider" class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider"&g

我们正在使用springsecurity&使用LDAP来验证我们的web应用程序。在我们的LDAP配置中,有多个可用的userndn模式。我想知道如何在applicationContext-security.xml文件中配置多个userdn模式。我已指定以下配置

<b:bean id="ldapProvider"
    class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
    <b:constructor-arg>
        <b:bean
            class="com.intl.set.him.mait.security.CustomLdapAuthenticator">
            <b:constructor-arg ref="ldapContextSource" />
            <b:property name="userDnPatterns" value="cn={0},OU=GEN,OU=Users"/>
            <b:property name= "commonNameQuery" value = "select USER_CN from emt.sec_users1 where user_id=?"/>
            <b:property name="datasource" ref="dataSourceMSSQL"/>  

</b:bean>

当我在xml文件中提供上述配置时,与特定位置的Dn模式对应的用户将只能登录。我想知道如何在xml文件中配置多个userdn模式


非常感谢您在这方面的任何帮助。谢谢

bean充当指定类的构造函数(通常带有参数和/或属性)。如果您只是在自己的子类中扩展该类,则可以将参数传递给supoerclass的构造函数,并从子类中设置属性:

customldapaauthenticationprovider.java

public class CustomLdapAuthenticationProvider extends LdapAuthenticationProvider {
    //your constructor
    public CustomLdapAuthenticationProvider(unParsedArguments) {
        //some logic to parse the arguments as desired
        super(parsedArguments);
        //set super's properties as desired

    }

    //other methods as needed/required
}
这种方法为您的应用程序设计提供了相当大的灵活性,这也是开源的动力——它很容易扩展、重写等。在大多数情况下,您已经在这样做了

然后,更改您的
applicationContext security.xml

<bean id="ldapProvider"
        class="your.project.package.CustomLdapAuthenticationProvider">
    <constructor-arg value="firstArgument"/>
    <constructor-arg value="secondArgument"/>
    <!-- etc. //-->
    <property name="fieldName" value="valueToBeSet"/>
</bean>

显然,这是人为的,但您应该看到需要做什么:根据您的逻辑而不是静态模板扩展、重写/重载和调用super的方法/构造函数


我希望这有帮助。

不要在网站上发布内部信息!!!