【发布时间】:2013-11-19 03:07:36
【问题描述】:
我有 CAS 3 Spring 3.2 和 Spring Security 3.2 在带有 MySQL 数据库的 tomcat 7 上运行。
我们使用带有 CAS 的 MySQL 数据库来验证用户,然后我们在成功后传递属性,我们从名为 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>
之后我们要做的是从这些属性中获取用户名,然后转到一个名为“app”的特定于应用程序的数据库。
所以我们要做的是在认证成功后从 CAS 中获取用户名,然后从数据库中获取其角色。
我们怎样才能正确地做到这一点?
更新
好吧,现在我已经尝试过,但我真的不知道这是否有效。
我已经实现了UserDetailsService,并创建了一个UserEntityDetails,它扩展了我的UserEntity 并实现了UserDetails,然后我使用我的UserDetailsService 来加载我自定义创建的类。
然后在我的 XML 中我做了这个
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider ref="casAuthProvider" user-service-ref="DBUserServiceDetails" />
</security:authentication-manager>
这是正确的做法吗?
【问题讨论】:
标签: java spring spring-security cas jasig