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" />-->