CAS - CentOS下部署CAS服务器及简单使用

下载CAS并打成War包:https://github.com/apereo/cas-overlay-template

然后在服务器上安装Tomcat,如果运行多个Tomcat,需要修改Tomcat配置文件里的一些端口。

安装Tomcat

1、上传tomcat服务器到文件夹/usr/local/cas目录下

2、解压并删除命令:

cd /usr/local/cas/

tar  zxvf  apache-tomcat-8.5.32.tar.gz

rm -rf apache-tomcat-8.5.32.tar.gz

3、修改文件名为tomcat命令:

mv apache-tomcat-8.5.32/ tomcat

4、如果服务器上运行多个Tomcat需要修改server.xml文件

修改下面两个端口即可,我这里将tomcat端口8080修改为9100了。

5、启动测试Tomcat是否正在运行:/usr/local/cas/tomcat/bin/startup.sh

6、如果正常运行,可以停止Tomcat了:/usr/local/cas/tomcat/bin/shutdown.sh

部署CAS服务

1、将打好的war包上传到tomcat的webapps下,如果数据库使用的是8.0,记得将8.0的jar包打入war包

2、启动tomcat,让tomcat自己解压war包

3、停止tomcat之后才能删除war包:rm -rf cas.war

然后可以通过访问tomcat端口下的cas/login,出现下面这个页面即成功。

输入用户名casuser 密码:Mellon即可登录。

具体安装方法可参考:https://blog.csdn.net/Anumbrella/article/details/81045885?utm_source=distribute.pc_relevant.none-task

配置CAS

1、配置允许登出后跳转至指定页面

修改cas系统的配置文件WEB-INF目录下的application.properties中添加如下配置

# 配置允许登出后跳转到指定页面
cas.logout.followServiceRedirects=true
# 跳转到指定页面需要的参数名为 service
cas.logout.redirectParameter=service

2、启用记载JSON配置文件

修改cas系统的配置文件WEB-INF目录下的application.properties中添加如下配置

cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true

3、修改http支持的配置

修改/WEB-INF/classes/services目录下的HTTPSandIMAPS-10000001.json

4、重启Tomcat

简单使用CAS

测试两个工程,一个登录认证之后,另外一个是否还需要认证。

创建war工程casProject1和casProject2,配置一致:

①引入pom依赖

<!-- cas -->
<dependency>
  <groupId>org.jasig.cas.client</groupId>
  <artifactId>cas-client-core</artifactId>
  <version>3.3.3</version>
</dependency>
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.5</version>
  <scope>provided</scope>
</dependency>

②配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">
  <!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 -->
  <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>
  </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>
      <!--如果没有登录,会重定向到cas服务器当中 server是服务端的IP-->
      <param-value>http://10.35.30.88:9100/cas/login</param-value>
    </init-param>
    <init-param>
      <param-name>serverName</param-name>
      <!--登录完成之后, 跳回自己的业务系统, 这里是业务系统的ip和商口-->
      <param-value>http://127.0.0.1:9001</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>
      <!--登录之后,校验令牌的地址 cas服务器的地址-->
      <param-value>http://10.35.30.88:9100/cas</param-value>
    </init-param>
    <init-param>
      <param-name>serverName</param-name>
      <!--校验完成之后跳回业务系统  业务系统的ip和端口-->
      <param-value>http://127.0.0.1:9001</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>
</web-app>

③其中一个工程配置下index.jsp,添加一个退出标签

④运行其中一个去进行登录认证,然后再启动另外一个

可以发现,第二个无需登录。

⑤选择其中一个项目中进行注销

然后刷新第二个项目的页面,发现第二个项目的也注销了。

发布了100 篇原创文章 · 获赞 25 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40885085/article/details/104378475
Cas