springBoot + shiro + cas实现单点登录退出时,登录成功,但是退出失败 10C

springBoot + shiro + cas实现单点登录退出时,登录成功,但是退出失败,cas服务器端退出后,cas客户端依然是登录状态,请问该怎么修改,网上百度了不知道多少次了,都是同样的解决方案,所以并没有用。请求大神帮助

1个回答

前面的博客中,我们说道了Shiro的两个最大的特点,认证和授权,而单点登录也是属于认证的一部分,默认情况下,Shiro已经为我们实现了和Cas的集成,我们加入集成的一些配置就ok了。

1、加入shiro-cas包

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

2、加入单点登录的配置
这里,我将所有的配置都贴出来,方便参考,配置里面已经加了详尽的说明。

package com.chhliu.springboot.shiro.config;

import java.util.LinkedHashMap;
import java.util.Map;

import javax.servlet.Filter;

import org.apache.shiro.cache.ehcache.EhCacheManager;
import org.apache.shiro.cas.CasFilter;
import org.apache.shiro.cas.CasSubjectFactory;
import org.apache.shiro.spring.LifecycleBeanPostProcessor;
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.jasig.cas.client.session.SingleSignOutFilter;
import org.jasig.cas.client.session.SingleSignOutHttpSessionListener;
import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.web.filter.DelegatingFilterProxy;

/**

  • Shiro 配置
  • Apache Shiro 核心通过 Filter 来实现,就好像SpringMvc 通过DispachServlet 来主控制一样。 既然是使用
  • Filter 一般也就能猜到,是通过URL规则来进行过滤和权限校验,所以我们需要定义一系列关于URL的规则和访问权限。
  • @author chhliu
    */
    @Configuration
    public class ShiroConfiguration {

    // cas server地址
    public static final String casServerUrlPrefix = "http://127.0.0.1";
    // Cas登录页面地址
    public static final String casLoginUrl = casServerUrlPrefix + "/login";
    // Cas登出页面地址
    public static final String casLogoutUrl = casServerUrlPrefix + "/logout";
    // 当前工程对外提供的服务地址
    public static final String shiroServerUrlPrefix = "http://127.0.1.28:8080";
    // casFilter UrlPattern
    public static final String casFilterUrlPattern = "/index";
    // 登录地址
    public static final String loginUrl = casLoginUrl + "?service=" + shiroServerUrlPrefix + casFilterUrlPattern;
    // 登出地址(casserver启用service跳转功能,需在webapps\cas\WEB-INF\cas.properties文件中启用cas.logout.followServiceRedirects=true)
    public static final String logoutUrl = casLogoutUrl+"?service="+loginUrl;
    // 登录成功地址
    // public static final String loginSuccessUrl = "/index";
    // 权限认证失败跳转地址
    public static final String unauthorizedUrl = "/error/403.html";

    /**

    • 实例化SecurityManager,该类是shiro的核心类
    • @return */ @Bean public DefaultWebSecurityManager securityManager() { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); securityManager.setRealm(myShiroCasRealm()); // <!-- 用户授权/认证信息Cache, 采用EhCache 缓存 --> securityManager.setCacheManager(getEhCacheManager()); // 指定 SubjectFactory,如果要实现cas的remember me的功能,需要用到下面这个CasSubjectFactory,并设置到securityManager的subjectFactory中 securityManager.setSubjectFactory(new CasSubjectFactory()); return securityManager; }

    /**

    • 配置缓存
    • @return */ @Bean public EhCacheManager getEhCacheManager() { EhCacheManager em = new EhCacheManager(); em.setCacheManagerConfigFile("classpath:config/ehcache-shiro.xml"); return em; }

    /**

    • 配置Realm,由于我们使用的是CasRealm,所以已经集成了单点登录的功能
    • @param cacheManager
    • @return */ @Bean public MyShiroRealm myShiroCasRealm() { MyShiroRealm realm = new MyShiroRealm(); // cas登录服务器地址前缀 realm.setCasServerUrlPrefix(ShiroConfiguration.casServerUrlPrefix); // 客户端回调地址,登录成功后的跳转地址(自己的服务地址) realm.setCasService(ShiroConfiguration.shiroServerUrlPrefix + ShiroConfiguration.casFilterUrlPattern); // 登录成功后的默认角色,此处默认为user角色 realm.setDefaultRoles("user"); return realm; }

    /**

    • 注册单点登出的listener
    • @return */ @SuppressWarnings({ "rawtypes", "unchecked" }) @Bean @Order(Ordered.HIGHEST_PRECEDENCE)// 优先级需要高于Cas的Filter public ServletListenerRegistrationBean<?> singleSignOutHttpSessionListener(){ ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(); bean.setListener(new SingleSignOutHttpSessionListener()); bean.setEnabled(true); return bean; }

    /**

    • 注册单点登出filter
    • @return / @Bean public FilterRegistrationBean singleSignOutFilter(){ FilterRegistrationBean bean = new FilterRegistrationBean(); bean.setName("singleSignOutFilter"); bean.setFilter(new SingleSignOutFilter()); bean.addUrlPatterns("/"); bean.setEnabled(true); return bean; }

    /**

    • 注册DelegatingFilterProxy(Shiro) / @Bean public FilterRegistrationBean delegatingFilterProxy() { FilterRegistrationBean filterRegistration = new FilterRegistrationBean(); filterRegistration.setFilter(new DelegatingFilterProxy("shiroFilter")); // 该值缺省为false,表示生命周期由SpringApplicationContext管理,设置为true则表示由ServletContainer管理 filterRegistration.addInitParameter("targetFilterLifecycle", "true"); filterRegistration.setEnabled(true); filterRegistration.addUrlPatterns("/"); return filterRegistration; }

    /**

    • 该类可以保证实现了org.apache.shiro.util.Initializable接口的shiro对象的init或者是destory方法被自动调用,
    • 而不用手动指定init-method或者是destory-method方法
    • 注意:如果使用了该类,则不需要手动指定初始化方法和销毁方法,否则会出错
    • @return */ @Bean(name = "lifecycleBeanPostProcessor") public LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() { return new LifecycleBeanPostProcessor(); }

    /**

    • 下面两个配置主要用来开启shiro aop注解支持. 使用代理方式;所以需要开启代码支持;
    • @return */ @Bean @DependsOn("lifecycleBeanPostProcessor") public DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() { DefaultAdvisorAutoProxyCreator daap = new DefaultAdvisorAutoProxyCreator(); daap.setProxyTargetClass(true); return daap; }

    /**

    • @param securityManager
    • @return */ @Bean public AuthorizationAttributeSourceAdvisor getAuthorizationAttributeSourceAdvisor(DefaultWebSecurityManager securityManager) { AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor(); authorizationAttributeSourceAdvisor.setSecurityManager(securityManager); return authorizationAttributeSourceAdvisor; }

    /**

    • CAS过滤器
    • @return */ @Bean(name = "casFilter") public CasFilter getCasFilter() { CasFilter casFilter = new CasFilter(); casFilter.setName("casFilter"); casFilter.setEnabled(true); // 登录失败后跳转的URL,也就是 Shiro 执行 CasRealm 的 doGetAuthenticationInfo 方法向CasServer验证tiket casFilter.setFailureUrl(loginUrl);// 我们选择认证失败后再打开登录页面 casFilter.setLoginUrl(loginUrl); return casFilter; }

    /**

    • 使用工厂模式,创建并初始化ShiroFilter
    • @param securityManager
    • @param casFilter
    • @return
      /
      @Bean(name = "shiroFilter")
      public ShiroFilterFactoryBean getShiroFilterFactoryBean(DefaultWebSecurityManager securityManager, CasFilter casFilter) {
      ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
      // 必须设置 SecurityManager
      shiroFilterFactoryBean.setSecurityManager(securityManager);
      // 如果不设置默认会自动寻找Web工程根目录下的"/login.jsp"页面
      shiroFilterFactoryBean.setLoginUrl(loginUrl);
      /

      • 登录成功后要跳转的连接,不设置的时候,会默认跳转到前一步的url
      • 比如先在浏览器中输入了http://localhost:8080/userlist,但是现在用户却没有登录,于是会跳转到登录页面,等登录认证通过后,
      • 页面会再次自动跳转到http://localhost:8080/userlist页面而不是登录成功后的index页面
      • 建议不要设置这个字段 */ // shiroFilterFactoryBean.setSuccessUrl(loginSuccessUrl);

      // 设置无权限访问页面
      shiroFilterFactoryBean.setUnauthorizedUrl(unauthorizedUrl);
      /*

      • 添加casFilter到shiroFilter中,注意,casFilter需要放到shiroFilter的前面,
      • 从而保证程序在进入shiro的login登录之前就会进入单点认证 */ Map filters = new LinkedHashMap<>(); filters.put("casFilter", casFilter);

      // logout已经被单点登录的logout取代
      // filters.put("logout",logoutFilter());
      shiroFilterFactoryBean.setFilters(filters);

      loadShiroFilterChain(shiroFilterFactoryBean);
      return shiroFilterFactoryBean;
      }

    /**

    • 加载shiroFilter权限控制规则(从数据库读取然后配置),角色/权限信息由MyShiroCasRealm对象提供doGetAuthorizationInfo实现获取来的
    • 生产中会将这部分规则放到数据库中
    • @param shiroFilterFactoryBean
      */
      private void loadShiroFilterChain(ShiroFilterFactoryBean shiroFilterFactoryBean){
      /////////////////////// 下面这些规则配置最好配置到配置文件中,注意,此处加入的filter需要保证有序,所以用的LinkedHashMap ///////////////////////
      Map filterChainDefinitionMap = new LinkedHashMap();

      filterChainDefinitionMap.put(casFilterUrlPattern, "casFilter");

      //2.不拦截的请求
      filterChainDefinitionMap.put("/css/**","anon");
      filterChainDefinitionMap.put("/js/**","anon");
      filterChainDefinitionMap.put("/login", "anon");
      // 此处将logout页面设置为anon,而不是logout,因为logout被单点处理,而不需要再被shiro的logoutFilter进行拦截
      filterChainDefinitionMap.put("/logout","anon");
      filterChainDefinitionMap.put("/error","anon");
      //3.拦截的请求(从本地数据库获取或者从casserver获取(webservice,http等远程方式),看你的角色权限配置在哪里)
      filterChainDefinitionMap.put("/user", "authc"); //需要登录

      //4.登录过的不拦截
      filterChainDefinitionMap.put("/**", "authc");

      shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);

    }
    }

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Shiro & CAS 实现单点登录
概览 单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录。 本文使用开源框架 Jasig CAS 来完成单点登录。下载地址:https://www.apereo.org/cas/download  部署服务器 本文服务器使用Tomcat7,下载了 cas-server-4.0.0-rele
cas shiro spring实现单点登录
《SSO CAS单点系列》之 实操!轻松玩转SSO CAS就这么简单(相识篇) 《SSO CAS单点系列》之 实操!轻松玩转SSO CAS就这么简单(相遇篇) 这里贴出传送门,来自幕课网大神。讲了cas配置和cas的基本原理。CASGithub地址:https://github.com/apereo/cas/tags war下载地址:http://mvnrepository.com/arti
shiro结合cas实现单点登录
具体cas服务器配置查看我的关于cas服务器的配置日志 1、配置服务器开启ssl window下 "%JAVA_HOME%\bin\keytool" -genkey -alias tomcat -keyalg RSA -keystore d:/key/tomcat.keystore 输入密钥库口令: 再次输入新口令: 您的名字与姓氏是什么? [Unknown]: localh
shiro集成cas单点登录
在网上看到很多,但是搭建成功后都不成功,当然这里也有借鉴前提:CAS服务端配置完成,可以启动服务端参考网址:http://www.cnblogs.com/flying607/p/7598248.html客户端参考网址:http://blog.csdn.net/xiewendong93/article/details/788013611.pom新曾对应的maven支持 &amp;lt;!-- cas --&amp;...
shiro 集成cas单点登录
一、之前做了cas的单点登录,也做了shiro的权限角色管理,但是没有将两者集成起来,现在做个集成供参考交流。 二、shiro是个比较简单的权限框架,可以阅读官方文档,一步步来,在此只是提示下shiro核心配置就是realm,realm是个父接口,关键在项目中如何实现其子接口,建议继承 Authorizingrealm这个类,实现其中的doGetAuthenticationInfo(用户认证)
SpringBoot整合cas单点登录
SpringBoot整合CAS单点登录
SpringBoot整合CAS单点登录
CAS简介 CAS(Central Authentication Service) 是 Yale 大学发起的一个开源项目,是单点登录的一种现方式 官网地址:https://www.apereo.org/ Github地址:https://github.com/apereo/cas 分为CAS Server服务端和CAS Client客户端: CAS Server: CAS S...
CAS client单点登录失败
问题:接入多个CAS client只能各自认证,不能单点登录 按照之间的流程部署了CAS server,接入了两个CAS client,但是发现只能各自认证自己,同时生成自己的TGC,无法做到相互单点登录。 原因:CAS client中配置CAS server的服务地址不相同 APP1配置的是CAS server的域名,APP2配置的是CAS server的IP地址。由此导致APP1...
单点登录----->cas实现单点登录
cas实现单点登录
Cas单点登录(整合shiro版本)
Cas单点登录(整合shiro版本)    单点登录:Single Sign On,简称SSO,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 CAS框架:CAS(Central Authentication Service)是实现SSO单点登录的框架。 逻辑关系图:(注:图为转载) 分析: 1.图
CAS 单点登录之自定义登录
开源的 CAS 单点登录本身已经提供了一个统一的登录页面,也就是我们配置好之后,所有的没有登录的请求都会拦截到自带的登录页面,我们可以根据自己的需求来改造这个页面,但是,需求是多种多样的并且有时候总是更改的,我就碰到过这种情况,有时就会让人很崩溃。 很多时候,我们都是接手别人的代码,而且大多都是比较成熟,并且有一定时间的项目,我们总是在前人的基础进行修修补补。就拿单点登录来说,我相信大多数项目都...
springMVC集成shiro与cas实现SSO单点登录
一、前言 Apache Shiro与Spring Security一样是Java的一个安全框架。那为什么与Spring整合却用Shiro?其实我个人是认为Spring Security太过于笨重,要写太多的过滤器,Shiro的配置简单这就是我选择的理由,何况Spring官方自己都推荐使用Shiro。Shiro最主要的就是认证与授权,而CAS的重点在于单点登录,其实CAS与Shiro整合的话就是关
shiro 实现退出登录功能
shiro 实现退出登录功能 第一种方式: 1、配置权限控制,/logout.action=logout 2、在页面相应的退出操作中配置链接:/logout.action 即可,并不需要实现controller层 第二种方式(自定义退出登录功能) 1.shiro有许多过滤器,其中就有一个LogoutFilter的过滤器,只需要继承并重写preHandle方法 2.在配置文件中注入自定义实现的过...
cas单点登录客户端登录成功,不与cas服务器通信
用户成功登陆后,在访问子系统的受限资源时,不会频繁访问cas中心rn如果用户通过子系统A登录了cas中心,因为子系统A已经为每个登录用户创建了session,浏览器也有子系统的cookie,这时候用户的访问就和普通的网站访问一样了,只需要判断session是否已经登录就可以了。rnrn这种方式,对于服务器端和客户端的状态互相不能感知,能不能用户登录后,每次用户操作都会询问下cas服务器的状态。
springboot整合shiro时登录成功但是却不跳转问题
最近在使用springboot项目中整合shiro做登录以及权限验证,整合的过程中,我自己在shiro的配置类ShiroConfig中配置了登录成功后的跳转路径,如下图: 然而当我成功登录时却没有跳转到我指定的页面,经过查找相关资料,发现是authc(即FormAuthenticationFilter)拦截器的问题,分析FormAuthenticationFilter中成功登录部分的源码: ...
CAS单点登录(十一)——单点退出
在前面我们讲解了CAS的单点登录客户端接入,对于CAS的登录有了更清楚的了解,今天我们讲解一下在CAS中的单点退出问题。 首先我们要明白单点退出(单点注销)与注销的区别: 其实官方文档也给我们详细的解释了: 注销: 1. 应用程序注销 - 结束单个应用程序会话 2. CAS注销 - 结束CAS SSO会话 请注意,在简单的情况下,每种情况下的注销操作对另一种情况都没有影响。 而单点注销(SL...
springboot shiro登录成功拦截到首页
1.新建index.html页面 &amp;lt;!DOCTYPE html&amp;gt; &amp;lt;html xmlns:th=&quot;http://www.thymeleaf.org&quot; xmlns:layout=&quot;http://www.w3.org/1999/xhtml&quot; layout:decorator=&quot;fragments/layout&quot;&amp;gt; &amp;lt;head&amp;gt; 首页 &amp;lt;/h
单点登录cas 客户端之springboot整合
单点登录cas 客户端之springboot整合 添加配置代码 package com.youfan.config; import net.unicon.cas.client.configuration.CasClientConfigurerAdapter; import net.unicon.cas.client.configuration.EnableCasClien...
CAS 单点退出时出现错误
[code=java]java.lang.NullPointerExceptionrn at org.apache.catalina.connector.Request.logout(Request.java:2630)rn at org.apache.catalina.connector.RequestFacade.logout(RequestFacade.java:1070)rn at org.jasig.cas.client.session.SingleSignOutHandler$Servlet30LogoutStrategy.logout(SingleSignOutHandler.java:380)rn at org.jasig.cas.client.session.SingleSignOutHandler.destroySession(SingleSignOutHandler.java:316)rn at org.jasig.cas.client.session.SingleSignOutHandler.process(SingleSignOutHandler.java:212)rn at org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:99)rn at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)rn at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)rn at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)rn at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)rn at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)rn at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)rn at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)rn at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)rn at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)rn at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008)rn at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)rn at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)rn at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)rn at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)rn at java.lang.Thread.run(Thread.java:745)rnrn三月 12, 2017 1:23:15 上午 org.apache.catalina.core.StandardWrapperValve invokern严重: Servlet.service() for servlet [springServletAdmin] in context with path [/sgshop-front] threw exceptionrnjava.lang.NullPointerExceptionrn at org.apache.catalina.connector.Request.logout(Request.java:2630)rn at org.apache.catalina.connector.RequestFacade.logout(RequestFacade.java:1070)rn at org.jasig.cas.client.session.SingleSignOutHandler$Servlet30LogoutStrategy.logout(SingleSignOutHandler.java:380)rn at org.jasig.cas.client.session.SingleSignOutHandler.destroySession(SingleSignOutHandler.java:316)rn at org.jasig.cas.client.session.SingleSignOutHandler.process(SingleSignOutHandler.java:212)rn at org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:99)rn at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)rn at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)rn at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)rn at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)rn at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)rn at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)rn at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)rn at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)rn at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)rn at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008)rn at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)rn at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)rn at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)rn at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)rn at java.lang.Thread.run(Thread.java:745)[/code]rnrn
Cas单点登录(7)Cas登录过期时间
1、修改Cas Server的CASTGC过期时间修改Cas Server下cas/WEB-INF/spring-configuration/ticketExpirationPolicies.xml(CASTGC的过期时间,单位为秒)<bean id="grantingTicketExpirationPolicy" class="org.jasig.cas.ticket.support.Ticket
CAS单点登录-客户端集成(shiro、springboot、jwt、pac4j)(十)
CAS单点登录-客户端集成(shiro、springboot、jwt)(十) 由于我们通常在业务上会有以下的使用场景: 移动端通过业务系统鉴权 移动端免登录(登录一次以后) 解决方案: JWT(token认证方案) OAuth(第三方认证) PS:若想继续往下读,必须具备JWT的基本概念以及Pac4j的认证原理及应用场景 疑问 当然我们这章是讲JWT,那么会有以下的疑问: 若服务端已经接入了SSO,那么在移
CAS 单点登录 localhost注销失败
其他排查后一切正常,在使用localhost作为本地client地址时会有无法注销的情况 ,不同会话间cookie会话ID会一直不停的变,认证后存在一些web会话无法被service注销session,导致无需登录还能继续访问web应用,突然想到可能是CAS无法识别到local host ,将配置文件的local host地址更改为本机的ipv4地址,这样不同会话间的session就会一样了,注...
CAS单点登录握手失败备忘
CAS单点登录遇到这个错误'javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure',首先得把证书carcets 放到jre中的security中替换掉,需要注意的是jdk 中也有一个jre文件 这里面的也要替换掉不然 会一直报错。。。。。。以上两步都完成了,但是还是一直报错,最后发现jdk版本
CAS单点登录-单用户登录(十九)
CAS单点登录-单用户登录(十九)简介所谓“单用户单账户登录”是指:在同一系统中,一个用户名不能在两个地方同时登录。如: 当某账号在 A 处登录后,在未退出的情况下,如果再到 B 处登录,那么,系统会挤下 A 处登录的账号程序逻辑我们一路学习cas过来应该知道如下知识 1. 维持一个用户状态是用tgt 2. 用户登录成功后tgt会创建 3. 业务系统验证成功是采用st的校验 4. 用户注销
CAS单点登录-登录校验码(十七)
CAS单点登录-登录校验码(十七)本章教程用的cas版本为5.1.5简介在一些常规的老系统不得不加入固定的验证码,当然这是为了流控、暴力破解、降低数据库压力等等原因,那么接下来会讲解一些如何进行解决这些问题流控/防爆: 这一层可以在监控系统中做,例如同一个ip高频率访问可以进行一些禁止策略处理,除了这个当然可以加验证码了,但传统的老系统往往是一开始就添加验证码,这样给用户的感觉不太友好了,毕竟并
cas 单点登录配置shiro 服务端可以登录 跳转的时候报错
12:15:32.275 [http-nio-8081-exec-4] ERROR org.jasig.cas.client.util.XmlUtils - 元素类型 "img" 必须由匹配的结束标记 "" 终止。rnorg.xml.sax.SAXParseException: 元素类型 "img" 必须由匹配的结束标记 "" 终止。rn at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) ~[?:1.8.0_102]rn at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source) ~[?:1.8.0_102]rn at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) ~[?:1.8.0_102]rn at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) ~[?:1.8.0_102]rn at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source) ~[?:1.8.0_102]rn at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source) ~[?:1.8.0_102]rn at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) ~[?:1.8.0_102]rn at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) ~[?:1.8.0_102]rn at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source) ~[?:1.8.0_102]rn at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) ~[?:1.8.0_102]rn at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) ~[?:1.8.0_102]rn at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) ~[?:1.8.0_102]rn at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) ~[?:1.8.0_102]rn at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source) ~[?:1.8.0_102]rn at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) ~[?:1.8.0_102]rn at org.jasig.cas.client.util.XmlUtils.getTextForElement(XmlUtils.java:192) [cas-client-core-3.4.1.jar:3.4.1]rn at org.jasig.cas.client.validation.Cas20ServiceTicketValidator.parseResponseFromServer(Cas20ServiceTicketValidator.java:88) [cas-client-core-3.4.1.jar:3.4.1]rn at org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:201) [cas-client-core-3.4.1.jar:3.4.1]rn at org.apache.shiro.cas.CasRealm.doGetAuthenticationInfo(CasRealm.java:147) [shiro-cas-1.3.2.jar:1.3.2]rn at org.apache.shiro.realm.AuthenticatingRealm.getAuthenticationInfo(AuthenticatingRealm.java:568) [shiro-core-1.3.2.jar:1.3.2]rn at org.apache.shiro.authc.pam.ModularRealmAuthenticator.doSingleRealmAuthentication(ModularRealmAuthenticator.java:180) [shiro-core-1.3.2.jar:1.3.2]rn at org.apache.shiro.authc.pam.ModularRealmAuthenticator.doAuthenticate(ModularRealmAuthenticator.java:267) [shiro-core-1.3.2.jar:1.3.2]rn at org.apache.shiro.authc.AbstractAuthenticator.authenticate(AbstractAuthenticator.java:198) [shiro-core-1.3.2.jar:1.3.2]rn at org.apache.shiro.mgt.AuthenticatingSecurityManager.authenticate(AuthenticatingSecurityManager.java:106) [shiro-core-1.3.2.jar:1.3.2]rn at org.apache.shiro.mgt.DefaultSecurityManager.login(DefaultSecurityManager.java:270) [shiro-core-1.3.2.jar:1.3.2]rn at org.apache.shiro.subject.support.DelegatingSubject.login(DelegatingSubject.java:256) [shiro-core-1.3.2.jar:1.3.2]rn at org.apache.shiro.web.filter.authc.AuthenticatingFilter.executeLogin(AuthenticatingFilter.java:53) [shiro-web-1.3.2.jar:1.3.2]rn at org.apache.shiro.cas.CasFilter.onAccessDenied(CasFilter.java:88) [shiro-cas-1.3.2.jar:1.3.2]rn at org.apache.shiro.web.filter.AccessControlFilter.onAccessDenied(AccessControlFilter.java:133) [shiro-web-1.3.2.jar:1.3.2]rn at org.apache.shiro.web.filter.AccessControlFilter.onPreHandle(AccessControlFilter.java:162) [shiro-web-1.3.2.jar:1.3.2]rn at org.apache.shiro.web.filter.PathMatchingFilter.isFilterChainContinued(PathMatchingFilter.java:203) [shiro-web-1.3.2.jar:1.3.2]rn at org.apache.shiro.web.filter.PathMatchingFilter.preHandle(PathMatchingFilter.java:178) [shiro-web-1.3.2.jar:1.3.2]rn at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:131) [shiro-web-1.3.2.jar:1.3.2]rn at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) [shiro-web-1.3.2.jar:1.3.2]rn at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) [shiro-web-1.3.2.jar:1.3.2]rn at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) [shiro-web-1.3.2.jar:1.3.2]rn at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) [shiro-web-1.3.2.jar:1.3.2]rn at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) [shiro-core-1.3.2.jar:1.3.2]rn at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) [shiro-core-1.3.2.jar:1.3.2]rn at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) [shiro-core-1.3.2.jar:1.3.2]rn at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) [shiro-web-1.3.2.jar:1.3.2]rn at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) [shiro-web-1.3.2.jar:1.3.2]rn at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]rn at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) [spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE]rn at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) [catalina.jar:8.0.26]rn at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:8.0.26]rn at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) [catalina.jar:8.0.26]rn at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) [catalina.jar:8.0.26]rn at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) [catalina.jar:8.0.26]rn at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) [catalina.jar:8.0.26]rn at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [catalina.jar:8.0.26]rn at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) [catalina.jar:8.0.26]rn at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) [catalina.jar:8.0.26]rn at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) [catalina.jar:8.0.26]rn at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) [tomcat-coyote.jar:8.0.26]rn at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673) [tomcat-coyote.jar:8.0.26]rn at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1526) [tomcat-coyote.jar:8.0.26]rn at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1482) [tomcat-coyote.jar:8.0.26]rn at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_102]rn at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_102]rn at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.0.26]rn at java.lang.Thread.run(Unknown Source) [?:1.8.0_102]
cas实现单点登录
cas实现单点登录
SSO单点登录CAS实现
该文档以CAS为列,详细讲述了sso登录原理及环境搭建过程,结合项目中的运用,对照文档,可以很清晰的搭建SSO单点登录环境
cas 服务器 实现单点登录
用cas实现单点登录 构造实现 内外分离的系统 更高的提高系统的安全性
基于Cas的单点登录实现
NULL 博文链接:https://ajita.iteye.com/blog/2023940
基于CAS实现单点登录
CAS 一、概述 CAS是中央认证服务Central Authentication Service的简称。最初由耶鲁大学的Shawn Bayern 开发,后由Jasig社区维护,经过十多年发展,目前已成为影响最大、广泛使用的、基于Java实现的、开源SSO解决方案。 2012年,Jasig和另一个有影响的组织Sakai Foundation合并,组成Apereo。Apereo是一个由高等学术教育机...
CAS 实现 SSO 单点登录
环境   cas-server-4.1.8,cas-client-3.4.0,Java-8,Maven-3,Tomcat-7.0.72   CAS Server 安装   点此进入 CAS 下载列表,选择下载 cas-4.1.8.zip。   https://github.com/apereo/cas/releases   解压缩 cas-4.1.8.zip 并进入 cas...
CAS实现单点登录(SSO)
参考以下两篇文章,对原作者表示感谢: [url]http://blog.csdn.net/small_love/article/details/6664831[/url] [url]http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/[/url] 一、我的开发环境: Host: 192.168.200.170 ljn.c...
CAS单点登录的实现(二)
这篇文章对CAS单点登录具体实现的一些步骤就行讲述,至于CAS单点登录的实现原理分析,请参看下面这篇文章: CAS单点登录原理分析 https://blog.csdn.net/qq_41258204/article/details/84036875 CAS 包含两个部分: CAS Server 和 CAS Client 。 CAS Server :其实就是一个war包,CAS框架已经提供。只...
discuz单点登录,CAS实现
以下CAS有关软件可以去 http://www.ja-sig.org/products/cas/downloads/index.html 下载。 CAS server端: cas-server-3.3-release.zip CAS php客户端:CAS-1.0.1.tgz 解压CAS-1.0.1.tgz,将cas目录和CAS.php复制到discuz目录。   ...
CAS 实现的单点登录
——任何的成功都不是一蹴而就,经验需要慢慢积累、沉淀! 项目里面用到了CAS单点登录,最近也简单的从应用层面简单研究了下CAS这个开源架构。 1. 基本概念:cookie, session, 会话cookie, jssessionid - cookie 和 session机制都是为了解决HTTP协议的无状态性而生的 - cookie 是客户端保存用户信息的机制 - sessi
CAS 实现单点登录SSO
一 CAS是什么? 为Web应用系统提供一种可靠的单点登录解决方法的一个项目,是通过共享cookie实现的。 二 CAS原理   CAS是由CAS Server 和CAS Client组成: 1.架构图:  TGC:存放用户身份认证凭证的cookie ST:服务票据,由CAS Server发出,通过客户端浏览器到达业务服务器端,一个特定的服务只有一个个唯一的ST。 P
使用CAS实现单点登录
使用CAS实现单点登录 CAS官网:https://www.apereo.org/ CAS下载地址:https://github.com/apereo/cas/releases CAS-Client下载地址:http://developer.jasig.org/cas-clients/ CAS-Server下载地址:http://developer.jasig.org/cas/ CAS-...
CAS单点登录实现
使用CAS实现SSO搭建指南;从头开始,最后结合eclipse实现,并介绍如何做出自己想要的程序。
cas实现单点登录 功能
java cas实现单点登录文档 仅供参考
相关热词 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天 c#字典序排序 c# 截屏取色 c#中的哪些属于托管机制