CAS服务端部署和客户端部署

废话不多说直接开搞

环境准备,这里我是用的是:apache-tomcat-8.5.84 -- jdk8 --maven

1.去cas官网github地址下载cas5.3.9的cas-overlay-template-5.3.zip
2.根据解压的这个文件overlay一个cas服务端,基于maven构建方式
3.建立maven cas项目,把生成的cas web服务端文件复制到这个项目中,更改一些必要配置,兼容http访问和数据库读取user表方式验证,跑起cas服务端
4.web客户端引入cas必要的jar包依赖,解决jar包冲突问题,配置web.xml实现单点登入登出

CAS Server部署

1、首先先将服务端代码给拉下来

 https://github.com/apereo/cas-overlay-template/tree/5.3

2、下载解压之后,解压到一个一个开发目录中(自定义)

三、直接将解压好的导入到idea中,(等待下载依赖),下载成功后

3.1:更改application.properties 加入以下配置,还可以设置过期时间,根据需求配置

#修改本地账号密码
cas.authn.accept.users=admin::admin
cas.tgc.secure=false
#开启识别json文件,默认false
cas.serviceRegistry.initFromJson=true
 #开启后注销后可跳转到service指定地址
cas.logout.followServiceRedirects=true

3.2:在HTTPSandIMAPS-10000001.json至此加入http协议支持就完成了

 "serviceId" : "^(https|imaps|http)://.*",

四、修改完成后打成war包 放到tomcat的webapp目录
注意,正常只有一个war,运行后会生成上面的两个文件夹

五、tomcat配置指定war包,修改conf/server.xml,在host标签下增加子标签

<Context path="" docBase="D:\tomcat_install\tomcat7_10\apache-tomcat-8.5.84\webapps\cas.war" reloadable="true"></Context>

六、启动tomcat 访问localhost:8080

七、输入上面配置好的账号密码,跳转到成功页面

八、注销

地址栏直接输入 ip+port/cas/logout注销成功 ,注意注销后记得关闭浏览器

此时CAS的服务端部署完毕!!!!

CAS Client部署

1、https://mvnrepository.com/ 下载jar包 cas-client-core-3.3.3.jar
如果不是使用 maven 来构建项目,可以手动下载对应的包后放到应用的 lib 下。

<dependency>
  <groupId>org.jasig.cas.client</groupId>
  <artifactId>cas-client-core</artifactId>
  <version>3.6.4</version>
</dependency>

2、在web.xml加入以下配置 ,注意配置需要在其他过滤器之前执行

  <filter> 
	<filter-name>encodingFilter</filter-name> 
	<filter-class> 
		org.springframework.web.filter.CharacterEncodingFilter 
	</filter-class> 
		<init-param> 
			<param-name>encoding</param-name> 
			<param-value>UTF-8</param-value> 
		</init-param> 
		<init-param> 
			<param-name>forceEncoding</param-name> 
			<param-value>true</param-value> 
		</init-param> 
	</filter> 
	<filter-mapping> 
		<filter-name>encodingFilter</filter-name> 
		<url-pattern>*</url-pattern> 
	</filter-mapping> 
   <!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 -->  
    <listener>  
     <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>  
    </listener>  
    <!-- 该过滤器用于实现单点登出功能,可选配置。 -->  
    <filter>  
        <filter-name>CAS Single Sign Out Filter</filter-name>  
       <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>  
           <init-param>  
            <param-name>casServerUrlPrefix</param-name>  
            <!--这里的server是服务端的IP -->  
             <!--<param-value>http://ip+port/cas/logout</param-value>  -->
        </init-param> 
    </filter>  
    <filter-mapping>  
        <filter-name>CAS Single Sign Out Filter</filter-name>  
        <url-pattern>*</url-pattern>  
    </filter-mapping>  
    <!-- 该过滤器负责用户的认证工作,必须启用它 -->  
    <filter>  
        <filter-name>CASFilter</filter-name>
        <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> 
        <init-param>  
            <param-name>casServerLoginUrl</param-name>  
            <!--这里的server是服务端的IP -->  
            <!--<param-value>http://ip+port/cas//login</param-value> -->
        </init-param>  
        <init-param>  
            <param-name>serverName</param-name>  
            <!--客户端ip -->
            <param-value>http://ip+port</param-value>
        </init-param> 
        <init-param>
			<param-name>useSession</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<param-name>redirectAfterValidation</param-name>
			<param-value>true</param-value>
		</init-param> 
    </filter>  
    <filter-mapping>  
        <filter-name>CASFilter</filter-name>  
        <url-pattern>*</url-pattern>  
    </filter-mapping>  
    <!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->  
    <filter>  
        <filter-name>CAS Validation Filter</filter-name>  
        <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class> 
        <init-param>  
            <param-name>casServerUrlPrefix</param-name>  
			 <!--这里的server是服务端的IP -->  
            <!--<param-value>http://ip+port/cas</param-value>  -->
        </init-param>  
        <init-param>  
            <param-name>serverName</param-name>  
            <param-value>http://ip+port</param-value>
        </init-param>  
        <init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>redirectAfterValidation</param-name>
			<param-value>true</param-value>
		</init-param>
    </filter>  
    <filter-mapping>  
        <filter-name>CAS Validation Filter</filter-name>  
        <url-pattern>*</url-pattern>  
    </filter-mapping>  
    <!-- 该过滤器负责实现HttpServletRequest请求的包裹, 比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。 -->
    <filter>  
        <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>  
        <filter-class>  
            org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>  
    </filter>  
    <filter-mapping>  
        <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>  
        <url-pattern>*</url-pattern>  
    </filter-mapping>  
     <!-- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 比如    AssertionHolder.getAssertion().getPrincipal().getName()。 -->   
    <filter>  
        <filter-name>CAS Assertion Thread Local Filter</filter-name>      
		<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>  
    </filter>  
    <filter-mapping>  
        <filter-name>CAS Assertion Thread Local Filter</filter-name>  
        <url-pattern>*</url-pattern>  
    </filter-mapping>  

此时服务端与客户端 就已经部署好了,请自测吧!!!!!!!!!!!

遇到的问题:

  1、cas登录后跳转客户端时页面报403, 原因是:ticket过期了,设置的配置有问题。只能使用一次, 并且时间设置的很短
  2、按照先登录认证中心,在点击客户端时,出现两次登录问题?原因是:地址栏与过滤器中配置的登录地址不同,造成的,我登录用的是 ip+port:
     过滤器用的是:ip+port/cas/login ,登录也要用过滤器配置的路径,千万不要马虎!
posted @ 2023-01-10 10:14  鲸鱼zhang  阅读(1423)  评论(0编辑  收藏  举报