Todos,

Nuestro departamento de TI ha decidido cambiar el sufijo de nuestros usuarios en AD agregando un sufijo diferente al userPrincipalName en AD para el dominio real que se está utilizando.

P.ej. nuestro dominio es xxx.com pero userPrincipalName ahora es "usera@zzz.tech" mientras que antes era "usera@xxx.com".

La autenticación Spring LDAP AD ya no funciona con esto debido a esta razón, creo que: userPrincipalName se crea usando nombre + dominio cuando intenta autenticarse.

Necesito anular esto de alguna manera, pero sigo con Spring Security versión 3.1 (¡idealmente!)

Este es el bean de seguridad que usamos

<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>

¿Cómo puedo anular este comportamiento?

Gracias

0
NottmTony 4 oct. 2019 a las 10:57

1 respuesta

La mejor respuesta

Terminamos modificando el código Spring original para la clase: ActiveDirectoryLdapAuthenticationProvider y cambiando el método createBindPrincipal para permitir que se autorice un userPrincipalName que tiene un dominio diferente al dominio raíz de seguridad.

/**
 * 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;
}
0
NottmTony 17 oct. 2019 a las 13:46