Question

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 ?

Était-ce utile?

La solution

À moins que je ne comprenne mal votre question, ce que vous demandez est le modèle d'utilisation normal - le CasAuthenticationProvider est configuré avec un UserDetailsService qui charge les rôles d'une base de données locale plutôt que de CAS.

Si vous jetez un œil au CAS Exemple de configuration de l'application, vous remplaceriez simplement le userService Bean avec votre propre implémentation qui a chargé les informations utilisateur de votre base de données spécifique à l'application.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top