Ho CAS 3 Spring 3.2 e Spring Security 3.2 in esecuzione su Tomcat 7 con un database MySQL.
Usiamo il database MySQL con CAS per autenticare gli utenti, quindi passiamo gli attributi dopo il successo, otteniamo quei dettagli da un database chiamato "SSO"
<bean id="attributeRepository" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">
<constructor-arg index="0" ref="dataSource"/>
<constructor-arg index="1" value="select * from user where {0}" />
<property name="queryAttributeMapping">
<map>
<entry key="username" value="user_name" />
</map>
</property>
<property name="resultAttributeMapping">
<map>
<entry key="user_name" value="username" />
<entry key="full_name" value="fullname" />
</map>
</property>
</bean>
Dopodiché ciò che vogliamo fare è ottenere il nome utente da quegli attributi, quindi vai a un database specifico dell'applicazione chiamato "app".
Quindi quello che vogliamo fare è ottenere il nome utente da CAS dopo l'autenticazione riuscita, quindi ottenere i suoi ruoli dal database.
Come possiamo farlo correttamente?
AGGIORNARE
Ok ora quello che ho provato finora e non so davvero che sia valido o no.
Ho implementato UserDetailsService
E ho creato un UserEntityDetails
che estende il mio UserEntity
e attrezzi UserDetails
, Poi ho usato il mio UserDetailsService
Per caricare la mia classe creata su misura.
Poi nel mio XML l'ho fatto
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider ref="casAuthProvider" user-service-ref="DBUserServiceDetails" />
</security:authentication-manager>
È questo il modo giusto per farlo?