J'ai CAS 3 Spring 3.2 et Spring Security 3.2 fonctionnant sur Tomcat 7 avec une base de données MySQL.
Nous utilisons la base de données MySQL avec CAS pour authentifier les utilisateurs, puis nous passons des attributs après succès, nous obtenons ces détails d'une base de données appelée 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>
Après cela, ce que nous voulons faire, c'est d'obtenir le nom d'utilisateur de ces attributs, puis accédez à une base de données spécifique à l'application Say appelé "App".
Donc, ce que nous voulons faire, c'est obtenir le nom d'utilisateur de CAS après une authentification réussie, puis obtenir ses rôles de la base de données.
Comment pouvons-nous faire cela correctement?
METTRE À JOUR
Ok maintenant ce que j'ai essayé jusqu'à présent et je ne sais pas vraiment, c'est aussi valable ou non.
J'ai mis en œuvre UserDetailsService
Et j'ai créé un UserEntityDetails
qui étend mon UserEntity
et les outils UserDetails
, Alors j'ai utilisé mon UserDetailsService
Pour charger ma classe créée personnalisée.
Puis dans mon XML, j'ai fait ça
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider ref="casAuthProvider" user-service-ref="DBUserServiceDetails" />
</security:authentication-manager>
Est-ce que c'est la bonne façon de le faire ?