Domanda

Ho CAS 3 Spring 3.2 e Spring Security 3.2 in esecuzione su Tomcat 7 con un database MySQL.

Usiamo il database MySQL con CAS per autenticare gli utenti, quindi passiamo gli attributi dopo il successo, otteniamo quei dettagli da un database chiamato "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>

Dopodiché ciò che vogliamo fare è ottenere il nome utente da quegli attributi, quindi vai a un database specifico dell'applicazione chiamato "app".

Quindi quello che vogliamo fare è ottenere il nome utente da CAS dopo l'autenticazione riuscita, quindi ottenere i suoi ruoli dal database.

Come possiamo farlo correttamente?

AGGIORNARE

Ok ora quello che ho provato finora e non so davvero che sia valido o no.

Ho implementato UserDetailsService E ho creato un UserEntityDetails che estende il mio UserEntity e attrezzi UserDetails, Poi ho usato il mio UserDetailsService Per caricare la mia classe creata su misura.

Poi nel mio XML l'ho fatto

<security:authentication-manager alias="authenticationManager">
        <security:authentication-provider ref="casAuthProvider" user-service-ref="DBUserServiceDetails" />
    </security:authentication-manager>

È questo il modo giusto per farlo?

È stato utile?

Soluzione

A meno che non stia fraintendendo la tua domanda, quello che stai chiedendo è il normale modello di utilizzo: il CasAuthenticationProvider è configurato con a UserDetailsService che carica i ruoli da un database locale piuttosto che da CAS.

Se dai un'occhiata al Configurazione dell'applicazione di esempio CAS, sostituiresti semplicemente il userService Bean con la propria implementazione che ha caricato le informazioni dell'utente dal database specifico dell'applicazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top