У меня есть 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>
Это правильный способ сделать это?