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.
- <s:ldap-server id="ldapA" url="ldaps://ldapA.ads"
- port="636"
- manager-dn="cn=LDAPAdmin, cn=Users, dc=ldapa, dc=ads"
- manager-password="1234"/>
- <s:ldap-server id="ldapB" url="ldap://ldapB.ads"
- port="389"
- manager-dn="cn=LDAPAdmin, cn=Users, dc=ldapb, dc=ads"
- manager-password="1234"/>
Jetzt fehlen für die beiden Server nur noch zwei AuthenticationProvider:
- <s:ldap-authentication-provider server-ref="ldapA"
- user-search-base="ou=Customer,dc=ldapa,dc=ads"
- user-search-filter="(sAMAccountName={0})"
- group-search-base="ou=Groups,dc=ldapa,dc=ads"
- group-search-filter="(member={0})" />
- <s:ldap-authentication-provider server-ref="ldapB"
- user-search-base="ou=Customer,dc=ldapb,dc=ads"
- user-search-filter="(sAMAccountName={0})"
- group-search-base="ou=Groups,dc=ldapb,dc=ads"
- 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.