必须启用它 --> <filter> <filter-name>CASFilter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter (CommonUtils.java:341) at org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java :305) at org.jasig.cas.client.validation.AbstractCasProtocolUrlBasedTicketValidator.retrieveResponseFromServer (AbstractCasProtocolUrlBasedTicketValidator.java:50) at org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate (AbstractUrlBasedTicketValidator.java:207) at org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter
-- cas --> <dependency> <groupId>org.jasig.cas.client</groupId> -- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 --> <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener <filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter -- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 修改cas系统的配置文件cas-servlet.xml <bean id="logoutAction" class="org.<em>jasig</em>.cas.web.flow.LogoutAction"
<bean id="authenticationManager" class="org.<em>jasig</em>.cas.authentication.PolicyBasedAuthenticationManager its credential to pass --> <property name="authenticationPolicy"> <bean class="org.<em>jasig</em>.cas.authentication.AnyAuthenticationPolicy cas-client1 项目 pom.xml 配置 <dependencies> <dependency> <groupId>org.<em>jasig</em>.cas.client</groupId <filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.<em>jasig</em>.cas.client.session.SingleSignOutFilter filter> <filter-name>CAS Assertion Thread Local Filter</filter-name> <filter-class>org.<em>jasig</em>.cas.client.util.AssertionThreadLocalFilter
-- cas --> <dependency> <groupId>org.jasig.cas.client</groupId> <artifactId>cas-client-core -- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 --> <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter -- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 修改cas系统的配置文件cas-servlet.xml <bean id="logoutAction" class="org.<em>jasig</em>.cas.web.flow.LogoutAction"
<bean id="ticketGrantingTicketCookieGenerator" class="org.<em>jasig</em>.cas.web.support.CookieRetrievingCookieGenerator 红色部分,注释掉默认的简单验证方式(用户名密码相同即可),修改为查询数据库的bean,配置加密方式,以及数据源 注意事项:org.<em>jasig</em>.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler -- <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler " /> --> <bean class="org.<em>jasig</em>.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property -- 自定义 start --> <bean id="passwordEncoder" class="org.<em>jasig</em>.cas.authentication.handler.DefaultPasswordEncoder
image-20210727154658400 implementation 'org.jasig.cas.client:cas-client-core:3.6.2' 4、重新执行以下gradle刷新或者 ; import org.jasig.cas.client.session.SingleSignOutFilter; import org.jasig.cas.client.util.AssertionThreadLocalFilter ; import org.jasig.cas.client.util.HttpServletRequestWrapperFilter; import org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter package com.sso.ssocasclient.util; import org.jasig.cas.client.authentication.AttributePrincipal; import org.jasig.cas.client.util.AbstractCasFilter; import org.jasig.cas.client.validation.Assertion; import
-- cas 客户端 --> <dependency> <groupId>org.jasig.cas.client</groupId> <artifactId -- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 -- 认证管理器 --> <bean id="authenticationManager" class="org.<em>jasig</em>.cas.authentication.PolicyBasedAuthenticationManager -- 认证管理器 --> <bean id="authenticationManager" class="org.<em>jasig</em>.cas.authentication.PolicyBasedAuthenticationManager -- 查询数据库,引用数据源 --> <bean id="dbAuthHandler" class="org.<em>jasig</em>.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler
-- CAS: 用于单点退出 --> <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener (CommonUtils.java:328) org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java :291) org.jasig.cas.client.validation.AbstractCasProtocolUrlBasedTicketValidator.retrieveResponseFromServer (AbstractUrlBasedTicketValidator.java:187) org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter (AbstractTicketValidationFilter.java:164) org.jasig.cas.client.authentication.AuthenticationFilter.doFilter
1. springboot项目pom.xml中 添加cas客户端依赖包 <dependency> <groupId>org.jasig.cas.client</groupId> <artifactId ://localhost:8080/cas #本地客户端ip端口,不是首页地址 cas.client-host=http://localhost:8081 3.cas过滤器配置 import org.jasig.cas.client.authentication.AuthenticationFilter ; import org.jasig.cas.client.session.SingleSignOutFilter; import org.jasig.cas.client.session.SingleSignOutHttpSessionListener ; import org.jasig.cas.client.util.HttpServletRequestWrapperFilter; import org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter ; import org.jasig.cas.client.util.AbstractCasFilter; import org.jasig.cas.client.validation.Assertion
-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置--> <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter 必须启用它 --> <filter> <filter-name>CASFilter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter -- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 <filter-name>CAS Assertion Thread Local Filter</filter-name> <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter
源码下载地址:https://github.com/Jasig/cas/releases 2、修改%TOMCAT_HOME%\conf\server.xml文件 配置客户端 1、添加客户端到你的项目中 ·手动下载下载cas-client,地址:http://downloads.jasig.org -- cas --> <dependency> <groupId>org.jasig.cas.client</groupId> <artifactId>cas-client-core</artifactId -- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 --> <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener -- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。
properties> <cas.client.version>3.4.1</cas.client.version> </properties> <dependency> <groupId>org.jasig.cas.client -- 单点登出监听器,用于监听单点登出session情况 --> <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener -- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 ; import org.jasig.cas.client.configuration.ConfigurationKeys; import org.jasig.cas.client.util.AbstractCasFilter ; import org.jasig.cas.client.util.AbstractConfigurationFilter; import org.jasig.cas.client.util.CommonUtils
<bean id="authenticationManager" class="org.<em>jasig</em>.cas.authentication.PolicyBasedAuthenticationManager its credential to pass --> <property name="authenticationPolicy"> <bean class="org.<em>jasig</em>.cas.authentication.AnyAuthenticationPolicy cas-client1 项目 pom.xml 配置 <dependencies> <dependency> <groupId>org.<em>jasig</em>.cas.client</groupId <filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.<em>jasig</em>.cas.client.session.SingleSignOutFilter filter> <filter-name>CAS Assertion Thread Local Filter</filter-name> <filter-class>org.<em>jasig</em>.cas.client.util.AssertionThreadLocalFilter
. --> <bean id="proxyAuthenticationHandler" class="org.<em>jasig</em>.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler ticketGrantingTicketCookieGenerator.xml 修改前: <bean id="ticketGrantingTicketCookieGenerator" class="org.<em>jasig</em>.cas.web.support.CookieRetrievingCookieGenerator /cas" /> 修改后,PS:改为p:cookieSecure="false" <bean id="ticketGrantingTicketCookieGenerator" class="org.<em>jasig</em>.cas.web.support.CookieRetrievingCookieGenerator 下面的spring-configuration文件夹下面的warnCookieGenerator.xml 修改前: <bean id="warnCookieGenerator" class="org.<em>jasig</em>.cas.web.support.CookieRetrievingCookieGenerator p:cookiePath="/cas" /> 修改后,PS:改为p:cookieSecure="false" <bean id="warnCookieGenerator" class="org.<em>jasig</em>.cas.web.support.CookieRetrievingCookieGenerator
. --> <bean id="proxyAuthenticationHandler" class="org.<em>jasig</em>.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler ticketGrantingTicketCookieGenerator.xml 修改前: <bean id="ticketGrantingTicketCookieGenerator" class="org.<em>jasig</em>.cas.web.support.CookieRetrievingCookieGenerator "/cas" /> 修改后,PS:改为p:cookieSecure=“false” <bean id="ticketGrantingTicketCookieGenerator" class="org.<em>jasig</em>.cas.web.support.CookieRetrievingCookieGenerator 下面的spring-configuration文件夹下面的warnCookieGenerator.xml 修改前: <bean id="warnCookieGenerator" class="org.<em>jasig</em>.cas.web.support.CookieRetrievingCookieGenerator p:cookiePath="/cas" /> 修改后,PS:改为p:cookieSecure=“false” <bean id="warnCookieGenerator" class="org.<em>jasig</em>.cas.web.support.CookieRetrievingCookieGenerator
-- **cas** --> <dependency> <groupId>org.jasig.cas.client</groupId> <artifactId>cas-client-core -- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 修改cas系统的配置文件cas-servlet.xml <bean id="logoutAction" class="org.<em>jasig</em>.cas.web.flow.LogoutAction" artifactId> <version>4.1.0.RELEASE</version> </dependency> <dependency> <groupId>org.jasig.cas.client -- 单点登出 开始 --> <beans:bean id= **"singleLogoutFilter"* * class= **"org.jasig.cas.client.session.SingleSignOutFilter
. --> <bean id="proxyAuthenticationHandler" class="org.<em>jasig</em>.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler ticketGrantingTicketCookieGenerator.xml 修改前: <bean id="ticketGrantingTicketCookieGenerator" class="org.<em>jasig</em>.cas.web.support.CookieRetrievingCookieGenerator "/cas" /> 修改后,PS:改为p:cookieSecure=“false” <bean id="ticketGrantingTicketCookieGenerator" class="org.<em>jasig</em>.cas.web.support.CookieRetrievingCookieGenerator 下面的spring-configuration文件夹下面的warnCookieGenerator.xml 修改前: <bean id="warnCookieGenerator" class="org.<em>jasig</em>.cas.web.support.CookieRetrievingCookieGenerator p:cookiePath="/cas" /> 修改后,PS:改为p:cookieSecure=“false” <bean id="warnCookieGenerator" class="org.<em>jasig</em>.cas.web.support.CookieRetrievingCookieGenerator
Shiro 1.2开始提供了Jasig CAS单点登录的支持,单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录。 此处我们使用Jasig CAS v4.0.0-RC3版本: https://github.com/Jasig/cas/tree/v4.0.0-RC3 Jasig CAS单点登录系统分为服务器端和客户端, 服务器端 我们使用了Jasig CAS服务器v4.0.0-RC3版本,可以到其官方的github下载:https://github.com/Jasig/cas/tree/v4.0.0-RC3下载,然后将其
注意其中将证书导入jdk中,一定要注意精确到cacerts这个文件下,不然一直报拒绝写入,另外最好用管理员下的命令窗口 2.客户端后端搭建 1.添加依赖 <dependency> <groupId>org.jasig.cas.client ; import org.jasig.cas.client.util.HttpServletRequestWrapperFilter; import org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter 上MyAuthenticationFilter代码 package com.casclient1.cas.config; import org.jasig.cas.client.authentication .*; import org.jasig.cas.client.util.AbstractCasFilter; import org.jasig.cas.client.util.CommonUtils; import org.jasig.cas.client.util.ReflectUtils; import org.jasig.cas.client.validation.Assertion; import
bean id="proxyAuthenticationHandler" class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler -- CAS客户端 --> <dependency> <groupId>org.jasig.cas.client</groupId> <artifactId>cas-client-core --> <filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter -- 该过滤器使得开发者可以通过 org.jasig.cas.client.util.AssertionHolder 来获取用户 的登录名。 > <filter> <filter-name>CAS Assertion Thread Local Filter</filter-name> <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter