cas5.2.6 搭建cas服务端

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014161595/article/details/85316911

1.打包cas服务器端war包

下载cas-overlay-template-5.2.zip

1.1配置pom.xml

<dependencies>
        <dependency>
            <groupId>org.apereo.cas</groupId>
            <artifactId>cas-server-support-jdbc-drivers</artifactId>
            <version>${cas.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apereo.cas</groupId>
            <artifactId>cas-server-support-jdbc</artifactId>
            <version>${cas.version}</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
    </dependencies>

1.2增加src/main/resources目录

添加application.properties如下:

##
# CAS Server Context Configuration
#
server.context-path=/cas
server.port=8443

server.ssl.key-store=file:/etc/cas/thekeystore
server.ssl.key-store-password=changeit
server.ssl.key-password=changeit
# server.ssl.ciphers=
# server.ssl.client-auth=
# server.ssl.enabled=
# server.ssl.key-alias=
# server.ssl.key-store-provider=
# server.ssl.key-store-type=
# server.ssl.protocol=
# server.ssl.trust-store=
# server.ssl.trust-store-password=
# server.ssl.trust-store-provider=
# server.ssl.trust-store-type=

server.max-http-header-size=2097152
server.use-forward-headers=true
server.connection-timeout=20000
server.error.include-stacktrace=ALWAYS

server.compression.enabled=true
server.compression.mime-types=application/javascript,application/json,application/xml,text/html,text/xml,text/plain

server.tomcat.max-http-post-size=2097152
server.tomcat.basedir=build/tomcat
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%t %a "%r" %s (%D ms)
server.tomcat.accesslog.suffix=.log
server.tomcat.max-threads=10
server.tomcat.port-header=X-Forwarded-Port
server.tomcat.protocol-header=X-Forwarded-Proto
server.tomcat.protocol-header-https-value=https
server.tomcat.remote-ip-header=X-FORWARDED-FOR
server.tomcat.uri-encoding=UTF-8

spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true

##
# CAS Cloud Bus Configuration
#
spring.cloud.bus.enabled=false
# spring.cloud.bus.refresh.enabled=true
# spring.cloud.bus.env.enabled=true
# spring.cloud.bus.destination=CasCloudBus
# spring.cloud.bus.ack.enabled=true

endpoints.enabled=false
endpoints.sensitive=true

endpoints.restart.enabled=false
endpoints.shutdown.enabled=false

management.security.enabled=true
management.security.roles=ACTUATOR,ADMIN
management.security.sessions=if_required
management.context-path=/status
management.add-application-context-header=false

security.basic.authorize-mode=role
security.basic.enabled=false
security.basic.path=/cas/status/**

##
# CAS Web Application Session Configuration
#
server.session.timeout=300
server.session.cookie.http-only=true
server.session.tracking-modes=COOKIE

##
# CAS Thymeleaf View Configuration
#
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.cache=true
spring.thymeleaf.mode=HTML
##
# CAS Log4j Configuration
#
# logging.config=file:/etc/cas/log4j2.xml
server.context-parameters.isLog4jAutoInitializationDisabled=true

##
# CAS AspectJ Configuration
#
spring.aop.auto=true
spring.aop.proxy-target-class=true

##
# CAS Authentication Credentials
#
#cas.authn.accept.users=casuser::Mellon
#mysql 8.0.12
#cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/DY_PMIS?serverTimezone=UTC&useSSL=false
#cas.authn.jdbc.query[0].user=root
#cas.authn.jdbc.query[0].password=
#cas.authn.jdbc.query[0].sql=SELECT * FROM myuser WHERE username=?
#cas.authn.jdbc.query[0].fieldPassword=yourpasswordfiledname
#cas.authn.jdbc.query[0].driverClass=com.mysql.cj.jdbc.Driver
#
#cas.authn.jdbc.query[0].passwordEncoder.type=com.encode.cas.CustomPasswordEncode
#cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
#cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5

#mysql 5.6.22
cas.authn.jdbc.query[0].url=jdbc:mysql://ip:3306/DY_PMIS?serverTimezone=UTC&useSSL=false
cas.authn.jdbc.query[0].user=root
cas.authn.jdbc.query[0].password=
cas.authn.jdbc.query[0].sql=SELECT * FROM usert WHERE com_num=?
cas.authn.jdbc.query[0].fieldPassword=yourpasswordfiledname
cas.authn.jdbc.query[0].driverClass=com.mysql.cj.jdbc.Driver

cas.authn.jdbc.query[0].passwordEncoder.type=com.encode.cas.CustomPasswordEncode
cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8
cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5
 

1.3 如果为md5加密,如上配置cas.authn.jdbc.query[0].passwordEncoder.type=com.encode.cas.CustomPasswordEncode:

package com.encode.cas;

import java.math.BigInteger;
import java.security.MessageDigest;

import org.springframework.security.crypto.password.PasswordEncoder;

public class CustomPasswordEncode implements PasswordEncoder{

    @Override
    public String encode(CharSequence password) {
        try {
            //给数据进行md5加密
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(password.toString().getBytes());
            return new BigInteger(1, md.digest()).toString(16);
        } catch (Exception e) {
            return null;
        }
    }

    @Override
    public boolean matches(CharSequence rawPassword, String encodePassword) {
        // 判断密码是否存在
        if (rawPassword == null) {
            return false;
        }

        //通过md5加密后的密码
        String pass = this.encode(rawPassword.toString());
        //比较密码是否相等的问题
        return pass.equalsIgnoreCase(encodePassword);
    }
}
2.部署

将war包放到tomcat webapp 下

启动后,在浏览器输入http://localhost:8080/cas出现登陆页面ok

坑:

注意:下载非overlay,打包不成功

mysql驱动包版本过低,数据库连接池报错

注意:tomcat版本

https://blog.csdn.net/u013825231/article/details/79132399

https://jingyan.baidu.com/article/fdbd4277a615e9b89e3f481c.html

https://www.jianshu.com/p/5a1eed54fe54

https://blog.csdn.net/yelllowcong/article/details/79236506

ext {
    publishSnapshots = Boolean.getBoolean("publishSnapshots")
    publishReleases = Boolean.getBoolean("publishReleases")
    sonatypeUsername = System.getProperty("sonatypeUsername")
    sonatypePassword = System.getProperty("sonatypePassword")
    testCategoryType = System.getProperty("testCategoryType")
    forceBom = Boolean.getBoolean("forceBom")
    enableRemoteDebugging = Boolean.getBoolean("enableRemoteDebugging")
    continuousIntegrationBuild = Boolean.getBoolean("CI") || Boolean.getBoolean("TRAVIS") || Boolean.getBoolean("CONTINUOUS_INTEGRATION")

    publishingRelease = publishReleases && rootProject.sonatypeUsername != null && rootProject.sonatypePassword != null
    /*
    Open the Git repository in the current directory.
    Get commit id of HEAD.
     */
    //git = org.ajoberstar.grgit.Grgit.open(dir: file('.').canonicalPath)
    //def gitHead = git.head()
    currentRevision = "cas-5.3.6"
    //currentAbbreviatedRevision = gitHead.abbreviatedId

}

def isArtifactSigningRequired = {
    return (publishReleases && sonatypeUsername != null && sonatypePassword != null)
}

/*
    See: https://github.com/tbroyer/gradle-errorprone-plugin/issues/56
    Do not use caching by default to work around issues with parallel builds.
    TODO May be removed with Java 9 and above.
 */
if (JavaVersion.VERSION_1_8.isJava8()) {
    def url = new URL("$projectUrl")
    new HttpURLConnection(url) {
        @Override
        void connect() throws IOException {
        }
        @Override
         void disconnect() {
        }
        @Override
        boolean usingProxy() {
            return false
        }
    }.setDefaultUseCaches(false)
}

apply from: rootProject.file("gradle/overrides.gradle")
apply from: rootProject.file("gradle/dependencies.gradle")
apply plugin: "com.github.kt3k.coveralls"
apply plugin: "com.github.ben-manes.versions"

buildscript {
    repositories {
        mavenLocal()
        jcenter()
        /* maven { url "https://maven.eveoh.nl/content/repositories/releases" }        
        */
        maven { url "http://maven.aliyun.com/nexus/content/groups/public/"}

        maven { url "https://plugins.gradle.org/m2/" }
        maven { url "https://repo.spring.io/plugins-release" }
    }

    dependencies {
        classpath "org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion"
        classpath "com.netflix.nebula:gradle-lint-plugin:9.3.2"
        classpath "io.franzbecker:gradle-lombok:1.14"
        classpath "com.github.ben-manes:gradle-versions-plugin:0.17.0"
        classpath "io.spring.gradle:propdeps-plugin:0.0.10.RELEASE"
        classpath "org.ajoberstar:grgit:2.2.0"
        classpath "net.ltgt.gradle:gradle-errorprone-plugin:0.0.14"
        classpath "com.moowork.gradle:gradle-node-plugin:1.2.0"
        classpath "org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.8.2"
        classpath "org.owasp:dependency-check-gradle:3.3.2"
    }
}

cas服务端:

<!--<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />-->

猜你喜欢

转载自blog.csdn.net/u014161595/article/details/85316911