sso+shiro
来源:互联网 发布:java实现rsa算法 编辑:程序博客网 时间:2024/06/07 09:45
之前的文章讲了如何用cas配置单点登录,其中各个子站的web.xml中都有配置cas的各种过滤器 比较麻烦,这一节我们来讲一下cas与shiro的整合。
cas服务器和之前的文章配置一样的不用变,现在这是需要在客户端与shiro整合就ok
第一步:添加如下依赖包
<!-- sso+shiro -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>${shiro.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-ehcache</artifactId>
<version>${shiro.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-cas</artifactId>
<version>${shiro.version}</version>
</dependency>
<dependency>
<groupId>org.jasig.cas.client</groupId>
<artifactId>cas-client</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.6.6</version>
</dependency>
第二步:在classpath下面添加一个application-shiro.xml 内容如下
ps:其中jdbc.properties中定义了
#sso配置
casServer=https://www.ssomain.com:8443/cas
appServer=http://www.cui.com:8090/cui //这两个域名都是本地解析为127.0.0.1 因为我都在本地的同一个tomcat中
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd "
default-lazy-init="true">
<description>Shiro CAS配置</description>
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager" />
<property name="loginUrl" value="${casServer}/login?service=${appServer}/shiro-cas" />
<property name="filters">
<util:map>
<!-- 添加casFilter到shiroFilter -->
<entry key="casFilter" value-ref="casFilter"></entry>
</util:map>
</property>
<property name="filterChainDefinitions">
<value>
/shiro-cas = casFilter
/** = anon
</value>
</property>
</bean>
<!--
/** = casFilter
-->
<bean id="casFilter" class="org.apache.shiro.cas.CasFilter">
<!-- 配置验证错误时的失败页面 -->
<property name="failureUrl" value="/index.jsp"></property>
<property name="successUrl" value="/index.jsp" />
</bean>
<bean id="casRealm" class="org.apache.shiro.cas.CasRealm">
<property name="casServerUrlPrefix" value="${casServer}"/>
<!-- 客户端的回调地址设置,必须和下面的shiro-cas过滤器拦截的地址一致 -->
<property name="casService" value="${appServer}/shiro-cas"/>
</bean>
<!--
<bean id="casRealm" class="com.cicro.iris.service.AuthCasRealm">
<property name="casServerUrlPrefix" value="${casServer}"></property>
<property name="casService" value="${sourceUrl}/shiro-cas"></property>
</bean>
用户授权信息Cache, 采用EhCache -->
<bean id="shiroEhcacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
<property name="cacheManagerConfigFile" value="classpath:ehcache/ehcache-shiro.xml"/>
</bean>
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<!--设置自定义realm -->
<property name="cacheManager" ref="shiroEhcacheManager" />
<property name="realm" ref="casRealm" />
</bean>
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />
<!-- securityManager -->
<bean
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="staticMethod"
value="org.apache.shiro.SecurityUtils.setSecurityManager" />
<property name="arguments" ref="securityManager" />
</bean>
</beans>
第三步:在web.xml中添加如下
<filter>
<filter-name>shiroFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>、
在这个过程中遇到各种问题大部分问题都是包冲突
还有一个问题我需要强调一下就是,登录的时候页面一直报“页面中包含重定向” 最后原因是因为我的配置文件没有加载对 搞了半天很坑爹
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/applicationContext.xml,
classpath*:/applicationContext-shiro.xml
</param-value>
</context-param>
我写成这样了
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/applicationContext.xml,
</param-value>
<param-value>
classpath*:/applicationContext-shiro.xml
</param-value>
</context-param>
- sso+shiro
- sso-shiro-cas
- spring + shiro + cas 实现sso单点登录
- SSO CAS+Shiro+springmvc单点登录解决方案
- spring + shiro + cas 实现sso单点登录
- spring + shiro + cas 实现sso单点登录
- Shiro整合SSO单点登录系统
- spring + shiro + cas 实现sso单点登录
- Apache Shiro with CAS SSO Server学习笔记
- Shiro集成CAS搭建SSO单点登录系统
- shiro集成cas搭建SSO单点登录系统
- 基于CAS SHIRO LDAP 的SSO单点登录
- sso
- SSO
- SSO
- SSO
- SSO
- sso
- jsonPath(obj, expr, arg) 插件源码解读
- Hdu 1885 Key Task(状压+BFS)
- 2016-11-15面试总结
- 两个页面之间通过js进行传值
- bzoj 1419: Red is good (概率与期望)
- sso+shiro
- 《JS高级程序设计》[1-3]
- java.lang.ClassCastException: android.os.BinderProxy cannot be cast to ………………
- 从零单排Mac Pro - 快捷键篇
- sql更改表的一个字段
- jdk 1.8 与 spring+springmvc 3.2 .jar 启动tomcat报错
- Linux发送函数dev_queue_xmit
- leveldb之cache
- Android音频播放--SoundPool