Spring Security 2.0.4 – namespace-based configuration. Teil 3.

Für jeden LDAP-Server wird mit dem ldap-server Tag eine DefaultSpringSecurityContextSource Instanz registriert.

  1. <s:ldap-server id="ldapA" url="ldaps://ldapA.ads"
  2.                 port="636"
  3.                 manager-dn="cn=LDAPAdmin, cn=Users, dc=ldapa, dc=ads"
  4.                 manager-password="1234"/>
  5.  
  6.     <s:ldap-server id="ldapB" url="ldap://ldapB.ads"
  7.                 port="389"
  8.                 manager-dn="cn=LDAPAdmin, cn=Users, dc=ldapb, dc=ads"
  9.                 manager-password="1234"/>

Jetzt fehlen für die beiden Server nur noch zwei AuthenticationProvider:

  1. <s:ldap-authentication-provider server-ref="ldapA"
  2.                 user-search-base="ou=Customer,dc=ldapa,dc=ads"
  3.                 user-search-filter="(sAMAccountName={0})"
  4.                 group-search-base="ou=Groups,dc=ldapa,dc=ads"
  5.                 group-search-filter="(member={0})" />
  6.  
  7. <s:ldap-authentication-provider server-ref="ldapB"
  8.                 user-search-base="ou=Customer,dc=ldapb,dc=ads"
  9.                 user-search-filter="(sAMAccountName={0})"
  10.                 group-search-base="ou=Groups,dc=ldapb,dc=ads"
  11.                 group-search-filter="(member={0})" />

Das ldap-authentication-provider Tag erzeugt einen LdapAuthenticationProvider mit einem BindAuthenticator und einen DefaultLdapAuthoritiesPopulator.
(Ein BindAuthenticator prüft ob Passwort korrekt ist, ein LdapAuthoritiesPopulator erzeugt GrantedAuthorities aus der Gruppenzugehörigkeit des Users)

Mit der namespace-Konfiguration werden diese Objekte automatisch erzeugt. Soll für eine der beiden Objekte eine eigene Implementierung greifen, so kann das ldap-authentication-provider Tag nicht verwendet werden. Hier kommt wieder das custom-authentication-provider ins Spiel.

Bookmark and Share

Leave a Reply