cas服务端搭建两种方式(4.0.3版本)

本文介绍CAS4服务端的两种自定义搭建方式:overlay方式和源码修改方式。overlay方式通过Maven项目和特定配置实现,源码修改则直接在下载的源码上进行。文章提供详细步骤及自定义验证器示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    cas4服务端搭建的方式在网上的资料全都是部署war到tomcat中,但是使用cas一般都会有一些自定义需求开发,一种方式是overlay方式进行开发,还有一种是看了公司的cas摸索出来的一种,目前对于基于gradle的cas还没有深入研究,这篇文章就是基于cas4.0.3版本进行说明的。

overlay方式

首先创建一个maven项目,然后修改pom.xml文件即可

pom.xml 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.***</groupId>
    <artifactId>cas-overlay</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <cas.version>4.0.3</cas.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.jasig.cas</groupId>
            <artifactId>cas-server-webapp</artifactId>
            <version>${cas.version}</version>
            <type>war</type>
            <scope>runtime</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>cas</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <warName>cas</warName>
                    <overlays>
                        <overlay>
                            <groupId>org.jasig.cas</groupId>
                            <artifactId>cas-server-webapp</artifactId>
                        </overlay>
                    </overlays>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

overlay方式相关的jar都在下载war的时候在lib目录下有的,所有一些源码的话要额外引入一个cas-server-core包,保证可以编译通过

 方式二

源码下载地址:https://github.com/apereo/cas

首先下载以下源码(4.0.3分支的),解压后,通过idea导入解压后的cas-4.0.3\cas-server-webapp 这个目录,强调一下是cas-server-webapp这个目录,然后修改pom.xml,把${project.version}换成4.0.3,把${spring.version}换成3.2.6.RELEASE ,把最后的properties去掉,删除项目src下除main以外的目录,tomcat启动即可。

改造后的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <parent>
    <groupId>org.jasig.cas</groupId>
    <artifactId>cas-server</artifactId>
    <version>4.0.3</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>cas-server-webapp</artifactId>
  <packaging>war</packaging>
  <name>Jasig CAS Web Application</name>
  <dependencies>
    <dependency>
      <groupId>org.jasig.cas</groupId>
      <artifactId>cas-server-webapp-support</artifactId>
      <version>4.0.3</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>3.2.6.RELEASE</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.1.2</version>
      <type>jar</type>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.2</version>
      <type>jar</type>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.jasig.cas</groupId>
      <artifactId>cas-server-security-filter</artifactId>
      <scope>runtime</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <warName>cas</warName>
          <webResources>
            <resource>
              <directory>${basedir}/src/main/webapp/WEB-INF</directory>
              <filtering>true</filtering>
              <targetPath>WEB-INF</targetPath>
              <includes>
                <include>**/web.xml</include>
              </includes>
            </resource>
          </webResources>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

自定义校验器需要修改deployerConfigContext.xml中的primaryAuthenticationHandler,可以将原来primaryAuthenticationHandler改成自己实现的校验器,需要继承AbstractUsernamePasswordAuthenticationHandler类,简单自定义校验器demo如下

import org.jasig.cas.authentication.HandlerResult;
import org.jasig.cas.authentication.PreventedException;
import org.jasig.cas.authentication.UsernamePasswordCredential;
import org.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler;
import org.jasig.cas.authentication.principal.SimplePrincipal;

import javax.security.auth.login.FailedLoginException;
import java.security.GeneralSecurityException;
import java.util.List;

/**
 * Created by Administrator on 2019/1/26.
 */
public class UserPwd extends AbstractUsernamePasswordAuthenticationHandler {
    @Override
    protected HandlerResult authenticateUsernamePasswordInternal(UsernamePasswordCredential credential) throws GeneralSecurityException, PreventedException {
        String username = credential.getUsername();
        String pwd = credential.getPassword();
        if (username.equals("admin") && pwd.equals("123")){
            return createHandlerResult(credential,new SimplePrincipal(username), (List)null);
        }
        throw new FailedLoginException();
    }
}

deployerConfigContext.xml中部分如下

 <bean id="primaryAuthenticationHandler"
          class="UserPwd">
    </bean>
    <!--<bean id="primaryAuthenticationHandler"-->
          <!--class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">-->
        <!--<property name="users">-->
            <!--<map>-->
                <!--<entry key="casuser" value="Mellon"/>-->
            <!--</map>-->
        <!--</property>-->
    <!--</bean>-->

仅供参考,欢迎讨论~

cas5接下来可参考:https://www.jianshu.com/p/c1273d81c4e4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值