依赖
测试环境: ubuntu14.04
JDK
: jdk1.8.0_121
tomacat
: apache-tomcat-8.5.13
(cas5.x需要tomcat8.0以上)
安装依赖:
jdk
安装
1 2 3 4 5 6 7
| mv jdk1.8.0_121 /usr/local cat<< EOF >>/etc/profile export JAVA_HOME=/usr/local/jdk1.8.0_121 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH EOF source /etc/profile
|
tomcat
安装
1 2 3
| tar zxf apache-tomcat-8.5.13.tar.gz mv apache-tomcat-8.5.13 /usr/local ln -s /usr/local/apache-tomcat-8.5.13 /usr/local/tomcat
|
编译
注意,编译某个分支不要直接拉代码编,出问题的可能性很大
CAS5.x
之后,只支持gradle
编译方式
可以使用官方提供的模板来进行编译
1 2 3 4
| wget https://github.com/apereo/cas-gradle-overlay-template/archive/master.zip unzip master.zip cp -r cas-gradle-overlay-template-master /etc/cas cd /etc/cas && ./gradlew clean build
|
如果要指定编译版本,修改gradle.properties
如需添加插件进行编译,如ldap
、SAML
、MFA
等等插件,修改cas/build.gradle
1 2 3 4 5 6
| dependencies { compile "org.apereo.cas:cas-server-webapp:${project.'cas.version'}@war" compile "org.apereo.cas:cas-server-support-ldap:${project.'cas.version'}" compile "org.apereo.cas:cas-server-support-saml-idp:${project.'cas.version'}" compile "org.apereo.cas:cas-server-support-gauth:${project.'cas.version'}" }
|
编译好的war
包,在cas/build/libs
下
服务启动
将编译好的war
包放到/usr/local/tomcat/webapps/
下
然后启动tomcat
:
1
| /usr/local/tomcat/bin/catalina.sh start
|
服务管理通过/usr/local/tomcat/bin/catalina.sh
脚本
CAS
服务相关配置修改都在/usr/local/tomcat/webapps/cas/WEB-INF/classes/application.properties
log
控制调整配置文件是/usr/local/tomcat/webapps/cas/WEB-INF/classes/log4j2.xml
插件配置
需要保证编译时已添加各种插件
配置文件(/usr/local/tomcat/webapps/cas/WEB-INF/classes/application.properties
)
ldap
配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| cas.authn.accept.users=
cas.authn.attributeRepository.ldap.ldapUrl= cas.authn.attributeRepository.ldap.useSsl=false cas.authn.attributeRepository.ldap.useStartTls=false cas.authn.attributeRepository.ldap.connectTimeout=5000 cas.authn.attributeRepository.ldap.baseDn= cas.authn.attributeRepository.ldap.userFilter=user={user} cas.authn.attributeRepository.ldap.subtreeSearch=true cas.authn.attributeRepository.ldap.bindDn= cas.authn.attributeRepository.ldap.bindCredential=******* cas.authn.attributeRepository.ldap.trustCertificates= cas.authn.attributeRepository.ldap.keystore= cas.authn.attributeRepository.ldap.keystorePassword= cas.authn.attributeRepository.ldap.keystoreType=JKS cas.authn.attributeRepository.ldap.minPoolSize=3 cas.authn.attributeRepository.ldap.maxPoolSize=10 cas.authn.attributeRepository.ldap.validateOnCheckout=true cas.authn.attributeRepository.ldap.validatePeriodically=true cas.authn.attributeRepository.ldap.validatePeriod=600 cas.authn.attributeRepository.ldap.failFast=true cas.authn.attributeRepository.ldap.idleTime=500 cas.authn.attributeRepository.ldap.prunePeriod=600 cas.authn.attributeRepository.ldap.blockWaitTime=5000 cas.authn.attributeRepository.attributes.samaccountname=samaccountname cas.authn.attributeRepository.attributes.displayName=displayName cas.authn.attributeRepository.attributes.cn=cn
cas.authn.ldap[0].type=AD cas.authn.ldap[0].ldapUrl= cas.authn.ldap[0].useSsl=false cas.authn.ldap[0].useStartTls=false cas.authn.ldap[0].connectTimeout=5000 cas.authn.ldap[0].baseDn= cas.authn.ldap[0].userFilter=user={user} cas.authn.ldap[0].subtreeSearch=true cas.authn.ldap[0].bindDn= cas.authn.ldap[0].bindCredential=********* cas.authn.ldap[0].dnFormat=cn=%s,OU=Users,OU=,DC=,dc=com cas.authn.ldap[0].principalAttributeId=samaccountname cas.authn.ldap[0].principalAttributePassword= cas.authn.ldap[0].principalAttributeList=samaccountname,sn,cn,givenName,displayName cas.authn.ldap[0].failFast=false
cas.authn.ldap[0].minPoolSize=3 cas.authn.ldap[0].maxPoolSize=10 cas.authn.ldap[0].validateOnCheckout=true cas.authn.ldap[0].validatePeriodically=true cas.authn.ldap[0].validatePeriod=600 cas.authn.ldap[0].idleTime=5000 cas.authn.ldap[0].prunePeriod=5000 cas.authn.ldap[0].blockWaitTime=5000
|
SAML
配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| cas.samlCore.ticketidSaml2=false cas.samlCore.skewAllowance=0 cas.samlCore.attributeNamespace=http://www.ja-sig.org/products/cas/ cas.samlCore.issuer= cas.authn.samlIdp.entityId= cas.authn.samlIdp.hostName= cas.authn.samlIdp.scope= cas.authn.samlIdp.metadata.cacheExpirationMinutes=30 cas.authn.samlIdp.metadata.failFast=true cas.authn.samlIdp.metadata.location=/etc/cas/saml cas.authn.samlIdp.metadata.privateKeyAlgName=RSA cas.authn.samlIdp.metadata.requireValidMetadata=true cas.authn.samlIdp.metadata.basicAuthnUsername= cas.authn.samlIdp.metadata.basicAuthnPassword= cas.authn.samlIdp.metadata.supportedContentTypes= cas.authn.samlIdp.logout.forceSignedLogoutRequests=true cas.authn.samlIdp.logout.singleLogoutCallbacksDisabled=false cas.authn.samlIdp.response.skewAllowance=0 cas.authn.samlIdp.response.signError=false cas.authn.samlIdp.response.overrideSignatureCanonicalizationAlgorithm= cas.authn.samlIdp.response.useAttributeFriendlyName=true
|