Имя пользователя из CAS и роли из другой базы данных

StackOverflow https://stackoverflow.com/questions/19836480

Вопрос

У меня есть CAS 3 Spring 3.2 и Spring Security 3.2, работающие на Tomcat 7 с базой данных MySQL.

Мы используем базу данных MySQL с CAS для аутентификации пользователей, затем мы передаем атрибуты после успеха, мы получаем эти данные из базы данных под названием «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>

После этого мы хотим получить имя пользователя из этих атрибутов, а затем перейдите в базу данных, конкретной приложения Speed, называется «Приложение».

Итак, мы хотим получить имя пользователя от CAS после успешной аутентификации, а затем получить его роли из базы данных.

Как мы можем сделать это правильно?

ОБНОВИТЬ

Хорошо, теперь то, что я пробовал до сих пор, и я не знаю, что это действительно или нет.

Я реализовал UserDetailsService И я создал UserEntityDetails который расширяет мой UserEntity и орудия UserDetails, Тогда я использовал свой UserDetailsService Чтобы загрузить мой пользовательский класс.

Затем в моем XML я сделал это

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

Это правильный способ сделать это?

Это было полезно?

Решение

Если я не понимаю ваш вопрос. CasAuthenticationProvider настроен с UserDetailsService который загружает роли из локальной базы данных, а не CAS.

Если вы посмотрите на CAS -образец конфигурация приложения, вы просто замените userService Bean с вашей собственной реализацией, которая загружала пользовательскую информацию из вашей базы данных, специфичной для приложения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top