Hola:
Me encuentro desarrollando un Bundle para autenticar con Ldap en mi empresa.
Problema: Sólo mediante convención (_username, _password, en campos input) llegan valores a LdapAuthenticator.
De lo contrario, si uso mi LoginModel y LoginType, no funciona.
He utilizado las referencias siguientes:
Para construir mi LdapBundle necesito:
- LdapAuthenticator
- LdapUserProvider
- LdapUser
- LdapConnection
- LoginModel (username, password; distintos a la convención: _username, _password)
- LoginType
Dentro de LdapAuthenticator, existe un método que es necesario redefinir,
dado que el firewall redirecciona hacia allá cuando se ingresan los datos del formulario de login:
public function authenticateToken(TokenInterface $token, UserProviderInterface $userProvider, $providerKey)
{
try {
/** --------- Acá necesito: Obtener usuario y contraseña para autenticar con LDAP --------------*/
$user = $userProvider->loadUserByUsername($token->getUsername());
} catch (UsernameNotFoundException $e) {
throw new AuthenticationException('Invalid username or password');
}
$passwordValid = $this->encoder->isPasswordValid($user, $token->getCredentials());
if ($passwordValid) {
return new UsernamePasswordToken(
$user,
$user->getPassword(),
$providerKey,
$user->getRoles()
);
}
throw new AuthenticationException('Invalid username or password');
}