cas基础--简介及下载运行

Updated on with 0 views and 0 comments

一、简介

cas架构如下,分为客户端和服务端两大部分

官方文档地址(6.6.X版本)

image.png

1.1 客户端

启用了cas的应用程序,通过cas支持的协议与服务端通信

1.1.1 客户端支持的平台

  • java
  • Apache httpd Server
  • .net
  • php
  • Perl
  • Python
  • Ruby

1.2 服务端

cas服务端是建立在spring上的Java servlet,用于验证用户身份,通过签发和验证票据来授予应用访问权限

1.3 支持的协议

  • cas
  • SAML 1.1和2
  • OpenID Connect
  • OpenID
  • OAuth 2.0\
  • WS Federation

1.4 CAS 组件

cas服务器由以下三个部分组成

  • web(Spring MVC/Webflow)
  • 票据
  • 认证

二、war overlay

2.1 环境要求

  • jdk11
  • apache tomcat

2.2 war overlay

cas官方不建议拉取源码自己构建,而是推荐我们通过war overlay的形式来构建我们的cas服务。

war overlay是一种对抗重复代码或资源的策略,我们可以通过war overlay来插入或覆盖原版cas应用程序中的特定行为,这种方式有以下几个优点

  • 不用下载源码编译
  • 代码管理方便简洁

2.3 maven overlays

参考maven官网的简介Apache Maven WAR Plugin – Overlays

2.4 cas initializr

cas initializr基于spring initializr,用于快速构建一个cas的war overlay项目(类似与spring boot的创建过程,直接指定需要的组件和版本即可)

可以通过以下三种途径获取war overlay项目,具体参考CAS - WAR Overlay Initializr (apereo.github.io)

  • 我们可以下载该项目(cas initializr git地址)在自己本地编译后运行,然后通过命令生成war overlay项目,也可以通过docker在本地运行
  • 也可以通过cas已经部署好的在线应用地址(https://casinit.herokuapp.com)来获取生成war overlay项目的路径和参数
  • 也可以在github的cas-overlay-template中选择自己需要的版本然后下载

三、本地运行

3.1 下载

git下载指定版本的cas-overlay-template 我选择5.3版本,因为6.0及以后版本都是使用的gradle作为编译工具了,而之前的都是使用maven

image.png

下载解压后,导入idea,目录结构如下

image.png

3.2 下载依赖

下载依赖后,项目目录下会生成一个overlays的目录

image.png

3.3 打包

windows系统的话在项目目录下执行.\build.cmd package,linux执行.\build.sh package就会在目录下生成war包了,或者直接执行maven的package也可以,因为build.cmd中,package指令也是执行了maven的package指令

image.png

3.4 覆盖cas的配置和代码

在项目根目录下建立src/main/java 和src/main/resources文件夹,覆盖和扩展的配置及方法都放在这两个文件夹下,后面会详细展开说一下常用的配置

image.png

3.5 修改默认配置

3.5.1 配置文件复制

将overlays目录下的application.properties和文件复制到我们自己建立的resources目录下

image.png

移动到这里

image.png

3.5.2 配置文件修改

修改log4j2.xml的日志存放路径为自己的路径,文件默认是按照linux的配置,需要改成windows的路径

image.png

3.6 启动工程

3.6.1 idea配置tomcat

image.png

image.png

3.6.2 遇到的错误

报错如下:

"Caused by: java.lang.NullPointerException: Cannot invoke "org.apache.commons.lang3.JavaVersion.atLeast(org.apache.commons.lang3.JavaVersion)" because "org.apache.commons.lang3.SystemUtils.JAVA_SPECIFICATION_VERSION_AS_ENUM" is null"

这是因为项目的commons-lang3版本低,而本地有安装了java11导致的,在maven中添加配置如下

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.12.0</version>
        </dependency>

报错如下

java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlElement

这是因为我本地安装了java11,但是cas的5.3版本使用的java8,缺失了一些库

在pom文件中添加依赖即可

        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.0</version>
        </dependency>

3.7 验证登录

启动成功后,页面如下

image.png

输入application.properties中配置的默认用户名密码

image.png

登录成功

image.png

点击登出

image.png


标题:cas基础--简介及下载运行
作者:wenyl
地址:http://www.wenyoulong.com/articles/2023/09/06/1693981130250.html