我们正在使用spring security&使用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模式。
非常感谢任何帮助。谢谢
答案 0 :(得分:0)
bean充当指定类的构造函数(通常带有参数和/或属性)。如果只是在自己的子类中扩展该类,则可以将参数传递给supoerclass的构造函数并从子类中设置属性:
<强> CustomLdapAuthenticationProvider.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的方法/构造函数而不是静态模板。
我希望这会有所帮助。