Ho collegato con successo ad Active Directory tramite LDAP per l'autenticazione, e con il seguente nel mio ldap.xml Ho chiamato i miei autorità doganali Populator:Come utilizzare un popolamento delle autorità personalizzate con Spring Security e ActiveDirectoryLdapAuthenticationProvider?
<bean id="ldapAuthenticationProvider"
class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
<constructor-arg ref="ldapBindAuthenticator"/>
<constructor-arg ref="ldapAuthoritiesPopulator"/>
</bean>
<bean id="ldapBindAuthenticator"
class="org.springframework.security.ldap.authentication.BindAuthenticator">
<constructor-arg ref="ldapServer"/>
<property name="userSearch" ref="ldapSearch"/>
</bean>
<bean id="ldapSearch"
class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
<constructor-arg value="CN=Users"/>
<constructor-arg value="(sAMAccountName={0})"/>
<constructor-arg ref="ldapServer"/>
</bean>
<bean id="ldapAuthoritiesPopulator"
class="my.project.package.ActiveDirectoryLdapAuthoritiesPopulator"/>
<bean id="ldapServer"
class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
<constructor-arg value="ldap://192.168.0.2/dc=test,dc=server"/>
<property name="userDn" value="[email protected]"/>
<property name="password" value="ldap"/>
<property name="baseEnvironmentProperties">
<map>
<entry key="java.naming.referral">
<value>follow</value>
</entry>
</map>
</property>
</bean>
Questo funziona bene, e posso accertare l'utente del autorizzazione basato sulla sua appartenenza a un gruppo, ma avrei preferito fare questo attraverso il provider di autenticazione LDAP di Active Directory integrato:
<bean id="ldapAuthenticationProvider"
class="org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider">
<constructor-arg value="test.server"/>
<constructor-arg value="ldap://192.168.0.2:389"/>
<property name="convertSubErrorCodesToExceptions" value="true"/>
</bean>
il problema con quanto sopra è che i miei autorità doganali Populator è (ovviamente) non convocati, così mentre posso autenticare i miei utenti (che funzionano con quanto sopra), I sono rimasto senza i gruppi (che ho bisogno di determinare l'autorizzazione).
Mi sento come se fosse una domanda semplice, ma per la vita di me non riesco a trovare una risposta qui o altrove. Devo estendere la classe ActiveDirectoryLdapAuthenticationProvider e chiamare da lì il mio authority delle autorità?
(Grazie per tutto l'aiuto che mi ha dato questo sito per diversi anni, l'efficacia di questo sito può essere valutata dal fatto che mi sono preso la briga di creare solo un account, e questa è la mia prima domanda. Grazie in anticipo per il vostro aiuto.)