Ich habe CAS 3 Spring 3.2 und Spring Security 3.2 auf Tomcat 7 mit einer MySQL -Datenbank.
Wir verwenden die MySQL -Datenbank mit CAS, um Benutzer zu authentifizieren, und übergeben Attribute nach erfolgreich. Wir erhalten diese Details aus einer Datenbank namens "SSO" namens 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>
Danach möchten wir den Benutzernamen aus diesen Attributen erhalten und dann zu einer anwendungsspezifischen Datenbank mit dem Namen "App" wechseln.
Wir wollen also nach erfolgreicher Authentifizierung den Benutzernamen von CAS bekommen und dann seine Rollen aus der Datenbank bekommen.
Wie können wir das richtig machen?
AKTUALISIEREN
Ok, jetzt habe ich es bisher versucht und ich weiß nicht wirklich, dass dies gültig ist oder nicht.
Ich habe implementiert UserDetailsService
und ich habe a erstellt UserEntityDetails
das erweitert mein UserEntity
und implementiert UserDetails
, Dann habe ich meine benutzt UserDetailsService
So laden Sie meine benutzerdefinierte erstellte Klasse.
Dann habe ich in meinem XML das gemacht
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider ref="casAuthProvider" user-service-ref="DBUserServiceDetails" />
</security:authentication-manager>
Ist das der richtige Weg, dies zu tun?