Eu tenho CAS 3 Spring 3.2 e Spring Security 3.2 em execução no TomCat 7 com um banco de dados MySQL.
Usamos o banco de dados MySQL com CAS para autenticar usuários, depois passamos por atributos após o sucesso, obtemos esses detalhes de um banco de dados chamado 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>
Depois disso, o que queremos fazer é obter o nome de usuário desses atributos e, em seguida, vá para um banco de dados específico do aplicativo, diga "aplicativo".
Então, o que queremos fazer é obter o nome de usuário do CAS após a autenticação bem -sucedida e, em seguida, obter seus papéis no banco de dados.
Como podemos fazer isso corretamente?
ATUALIZAR
Ok, agora o que eu tentei até agora e realmente não sei é válido ou não.
Eu implementei UserDetailsService
e eu criei um UserEntityDetails
que estende meu UserEntity
e implementos UserDetails
, Então eu usei meu UserDetailsService
Para carregar minha classe criada personalizada.
Então no meu XML eu fiz isso
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider ref="casAuthProvider" user-service-ref="DBUserServiceDetails" />
</security:authentication-manager>
Esse é o jeito certo de fazer ?