码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMvc 下集成shiro与cas

时间:2016-01-29 20:35:35      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:

  由于内部系统越来越多,单点登录已经是一个较优选择。之前各个系统都集成了shiro作为权限管理,

所以必须要把shiro与cas集成。

  集成步骤:

首先在POM中引入shiro-cas包

<dependency>
  <groupId>org.apache.shiro</groupId>
  <artifactId>shiro-cas</artifactId>
  <version>1.2.2</version>
</dependency>

添加一个MyCasRealm继承CasRealm,在其中重写doGetAuthorizationInfo方法,用于设置权限

@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {

  String username = (String)principals.getPrimaryPrincipal();
  SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
  authorizationInfo.setRoles(roles);
  authorizationInfo.setStringPermissions(permission);
  return authorizationInfo;
}

 

在springShiro.xml(系统内部shiro配置文件)中添加

 

<bean id="casRealm" class="com.shijie99.order.common.shiro.MyCasRealm">
  <property name="cachingEnabled" value="true"/>
  <property name="authenticationCachingEnabled" value="true"/>
  <property name="authenticationCacheName" value="authenticationCache"/>
  <property name="authorizationCachingEnabled" value="true"/>
  <property name="authorizationCacheName" value="authorizationCache"/>
  <property name="casServerUrlPrefix" value="http://127.0.0.1:8080/cas"/>
  <property name="casService" value="http://127.0.0.1:8580/innersystem/cas"/>
</bean>

 

<bean id="casFilter" class="org.apache.shiro.cas.CasFilter">
<property name="failureUrl" value="/unauthorized"/>
</bean>

 

在shiroFilter中添加

<property name="loginUrl" value="http://127.0.0.1:8080/cas?service=http://127.0.0.1:8580/innersystem/cas"/>

在filters中添加

<entry key="cas" value-ref="casFilter"/>

在其filterChainDefinitions中添加

 /cas = cas

 

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager"/>
<property name="loginUrl" value="http://127.0.0.1:8080/cas?service=http://127.0.0.1:8580/innersystem/cas"/>
<property name="filters">
<util:map>
<!-- <entry key="authc" value-ref="formAuthenticationFilter"/> -->
<entry key="sysUser" value-ref="sysUserFilter"/>
<entry key="cas" value-ref="casFilter"/>
</util:map>
</property>
<property name="filterChainDefinitions">
<value>
/unauthorized = anon
/cas = cas
/logout = logout
/resources/** = anon
/** = user
</value>
</property>
</bean>

 

需要注意的是,之前在casRealm中存在

<property name="credentialsMatcher" ref="credentialsMatcher"/> 

这个配置,集成后一直报重定向循环。

由于credentialsMatcher是继承了HashedCredentialsMatcher,这个方法认证ticket是用

char[]类型的,导致类型转换失败。而之前没有配置失败URL,所以一直重定向。

 

SpringMvc 下集成shiro与cas

标签:

原文地址:http://www.cnblogs.com/nightThink/p/5169845.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!