Frage

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?

War es hilfreich?

Lösung

Wenn ich Ihre Frage nicht missverstand, ist das normale Verwendungsmuster - die CasAuthenticationProvider ist mit a konfiguriert UserDetailsService Dies lädt die Rollen aus einer lokalen Datenbank anstelle von CAS.

Wenn Sie sich das ansehen CAS -Beispielanwendungskonfiguration, Sie würden einfach das ersetzen userService Bean mit eigener Implementierung, in der die Benutzerinformationen aus Ihrer anwendungsspezifischen Datenbank geladen wurden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top