废话不多说直接开搞
环境准备,这里我是用的是: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 ,登录也要用过滤器配置的路径,千万不要马虎!
标签:cas,部署,CAS,client,org,port,服务端
From: https://www.cnblogs.com/jingyu-zhang/p/17039195.html