Spring security ldap аутентифицируется первым - PullRequest
1 голос
/ 27 марта 2010

Я установил аутентификацию ldap, используя следующую конфигурацию. Мне просто нужно, чтобы пользователь прошел аутентификацию в хранилище данных LDAP, а затем получил сеанс для получения токена аутентификации. После прочтения документации я думаю, что это должно произойти:

  1. Аутентифицируйся как менеджер, найди пользователей dn на основе критериев поиска
  2. Попытка привязки как пользователя (используя его полный dn) и предоставленного пароля

Журналы не дают достаточно информации о том, почему это не удается. Это просто говорит о недействительных учетных данных - когда я знаю, что они действительны. В моих мыслях происходит одно из следующих событий:

  1. Полное DN пользователя не найдено, и они просто проходят аутентификацию с именем пользователя
  2. Он пытается сравнить пароль, фактически пытаясь привязаться к каталогу

Конфигурация:

<ldap-server 
    url="ldap://adapps.company.com:389/dc=company,dc=com" 
    manager-dn="cn=fulluserdn,dc=company,dc=com" 
    manager-password="password"/>
<ldap-user-service user-search-base="" user-search-filter="(samaccountname={0})"/>  
<authentication-manager>
<ldap-authentication-provider user-search-filter="(samaccountname={0})" user-search-base="dc=company,dc=com"/>
</authentication-manager>

Журналы ошибок:

[DEBUG,FilterBasedLdapUserSearch] Searching for user 'test', with user search [ searchFilter: '(samaccountname={0})', searchBase: 'dc=company,dc=com', scope: subtree, searchTimeLimit: 0, derefLinkFlag: false ]
[DEBUG,AbstractContextSource] Got Ldap context on server 'ldap://adapps.company.com:389/dc=company,dc=com'
[INFO,SpringSecurityLdapTemplate] Ignoring PartialResultException
[DEBUG,XmlWebApplicationContext] Publishing event in Root WebApplicationContext: org.springframework.security.authentication.event.AuthenticationFailureBadCredentialsEvent[source=org.springframework.security.authentication.UsernamePasswordAuthenticationToken@488b5f0b: Principal: test; Password: [PROTECTED]; Authenticated: false; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@fffd148a: RemoteIpAddress: 127.0.0.1; SessionId: 0718B7EED3F930C63C03DA97C4344CBD; Not granted any authorities]
[DEBUG,UsernamePasswordAuthenticationFilter] Authentication request failed: org.springframework.security.authentication.BadCredentialsException: Bad credentials
[DEBUG,UsernamePasswordAuthenticationFilter] Updated SecurityContextHolder to contain null Authentication
[DEBUG,UsernamePasswordAuthenticationFilter] Delegating to authentication failure handlerorg.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler@395158
[DEBUG,TokenBasedRememberMeServices] Interactive login attempt was unsuccessful.
[DEBUG,TokenBasedRememberMeServices] Cancelling cookie

1 Ответ

1 голос
/ 27 марта 2010

Проблема заключалась в том, что сервер LDAP работал на другом порту, но обычный порт все еще оставался открытым.

...