Tengo CAS 3 Spring 3.2 y Spring Security 3.2 ejecutándose en Tomcat 7 con una base de datos MySQL.
Utilizamos la base de datos MySQL con CAS para autenticar a los usuarios, luego pasamos atributos después de éxito, obtenemos esos detalles de una base de datos llamada Say "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>
Después de eso, lo que queremos hacer es obtener el nombre de usuario de esos atributos, luego vaya a una base de datos específica de la aplicación, se llame "aplicación".
Entonces, lo que queremos hacer es obtener el nombre de usuario de CAS después de la autenticación exitosa, luego obtener sus roles de la base de datos.
¿Cómo podemos hacerlo correctamente?
ACTUALIZAR
Ok, ahora lo que he probado hasta ahora y realmente no sé que es válido o no.
He implementado UserDetailsService
Y creé un UserEntityDetails
que extiende mi UserEntity
e implementos UserDetails
, Entonces usé mi UserDetailsService
Para cargar mi clase creada a medida.
Entonces en mi XML hice esto
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider ref="casAuthProvider" user-service-ref="DBUserServiceDetails" />
</security:authentication-manager>
Esta es la manera correcta de hacerlo ?