Я хочу знать, будет ли приложение LDAP фактически использовать userDn / пароль, который я собираю во время выполнения при аутентификации.
http://static.springsource.org/spring-security/site/docs/3.0.x/reference/ldap.html
Он будет использовать userDn и пароль, которые вы собираете во время выполнения.В зависимости от того, как вы конфигурируете свои компоненты, аутентификация LDAP будет использовать один из двух путей в Spring:
- Аутентификация с привязкой (с использованием
BindAuthenticator
) - Сравнение паролей (с использованием
PasswordComparisonAuthenticator
)
Эти аутентификаторы вызываются в контексте LdapAuthenticationProvider
, который можно настроить как аутентификатор в конфигурации пространства имен безопасности:
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="usernamePasswordUserDetailsService">
<password-encoder ref="passwordEncoder">
<salt-source ref="saltSource"/>
</password-encoder>
</authentication-provider>
<authentication-provider ref="ldapAuthenticationProvider"/>
</authentication-manager>
Когда вызывается UsernamePasswordAuthenticationFilter
(через страницу / auth / login):
<http auto-config="true">
<form-login login-page="/auth/login"
login-processing-url="/auth/j_security_check"/>
<logout invalidate-session="true" logout-url="/auth/logout"/>
</http>
создается токен с именем пользователя и паролем.LdapAuthenticationProvider
отвечает на этот тип токена:
public class LdapAuthenticationProvider implements AuthenticationProvider, MessageSourceAware {
...
public boolean supports(Class<?> authentication) {
return (UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication));
}
}
и использует информацию, которую вы сохранили в LdapContextSource
для аутентификации.