全部
我们的IT部门已决定通过在AD的userPrincipalName中添加一个不同的后缀到实际使用的域中来更改AD中的用户后缀。
例如我们的域名是xxx.com,但userPrincipalName现在是“ usera@zzz.tech”,而以前是“ usera@xxx.com”。
由于这个原因,我认为Spring LDAP AD认证将不再与此配合使用: userPrincipalName是在尝试进行身份验证时使用名称+域构建的。
我需要以某种方式覆盖它-但是请保持Spring Security 3.1版(理想情况下!)
这是我们使用的安全性豆
<bean id="ldapActiveDirectoryAuthProvider" class="org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider">
<constructor-arg value="$websec{authentication.base}" />
<constructor-arg value="$websec{ldap.providerUrl}" />
<property name="authoritiesMapper" ref="dataAutomationGrantedAuthoritiesMapper" />
<property name="useAuthenticationRequestCredentials" value="true" />
</bean>
我该如何忽略这种行为?
谢谢
答案 0 :(得分:0)
我们最终修改了该类的原始Spring代码:ActiveDirectoryLdapAuthenticationProvider并更改了方法createBindPrincipal以允许与安全根具有不同域的userPrincipalName 要授权的域。
/**
* Create bind principal by appending configured user domain to username if it doesn't already contain a domain.
*
* @param username User name for which to create bind principal.
*
* @return username, if configured domain is null or the username already contains a domain; otherwise username
* appended with the configured user domain.
*/
String createBindPrincipal(final String username) {
if (domain == null || username.contains("@")) {
return username;
}
return username + "@" + userDomain;
}