Pergunta

Eu tenho CAS 3 Spring 3.2 e Spring Security 3.2 em execução no TomCat 7 com um banco de dados MySQL.

Usamos o banco de dados MySQL com CAS para autenticar usuários, depois passamos por atributos após o sucesso, obtemos esses detalhes de um banco de dados chamado 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>

Depois disso, o que queremos fazer é obter o nome de usuário desses atributos e, em seguida, vá para um banco de dados específico do aplicativo, diga "aplicativo".

Então, o que queremos fazer é obter o nome de usuário do CAS após a autenticação bem -sucedida e, em seguida, obter seus papéis no banco de dados.

Como podemos fazer isso corretamente?

ATUALIZAR

Ok, agora o que eu tentei até agora e realmente não sei é válido ou não.

Eu implementei UserDetailsService e eu criei um UserEntityDetails que estende meu UserEntity e implementos UserDetails, Então eu usei meu UserDetailsService Para carregar minha classe criada personalizada.

Então no meu XML eu fiz isso

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

Esse é o jeito certo de fazer ?

Foi útil?

Solução

A menos que eu esteja entendendo mal sua pergunta, o que você está pedindo é o padrão de uso normal - o CasAuthenticationProvider está configurado com um UserDetailsService que carrega as funções de um banco de dados local em vez de CAS.

Se você der uma olhada no Configuração de aplicativos de amostra CAS, você simplesmente substituiria o userService Bean com sua própria implementação que carregava as informações do usuário do seu banco de dados específico do aplicativo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top