cas认证与数据库已经连接了,可以认证,但有一个cas客户端需要ldap认证,就开始研究ldap,搞了四天,头大,ldap很快就安装配置好了,也可以在ldap命令验证,cas也是上周就配置好了,关键在于cas和ldap的连接,我的是cas5.3.2,网上的cas和ldap的连接从cas3.2一直参考到cas5.2的版本的配置,尝试了无数配置方案,都没成功,网上也没有见cas5.3.2和ldap连接成功的配置案例,只有无法配置成功的文章,以为是软件本身还有bug,打算放弃。
但今天一觉醒来,心有不甘,花了三天时间没日没夜,无疾而终,不是我的风格,经过了多少迎难而上,还是再试试吧,今天不再看网友的文章了,看cas官网原文,慢慢啃英文单词,一个个属性配置推敲,终于调试通过。对于刚接触cas2周和ldap4天的我来说,值得庆贺一下,写本文以为自己和看客参考。
1. cas安装见前文
https://blog.csdn.net/oLinBSoft/article/details/81910775
<https://blog.csdn.net/oLinBSoft/article/details/81910775>
2.ldap安装,特简单 我的是ubuntu16.04
sudo apt-get install slapd ldap-utils
一条命令就安装好了
sudo dpkg-reconfigure slapd
再用一条命令配置, 设置ldap根域名,admin密码即可
管理客户端可以下载windows版的LdapAdmin.exe 只有一个文件,无需安装直接运行
也可以安装 phpldapadmin 通过web界面管理ldap账号
apt-get install phpldapadmin
这个是安装命令,安装完后按网络文章简单配置即可
增加几个测试部门组织和用户,设置用户密码(设置时可选加密方式)
ldap的介绍,使用在此按下不表,来日深入。
3. cas和ldap的连接配置,参考cas官网说明文档:
https://apereo.github.io/cas/5.3.x/installation/Configuration-Properties.html
<https://apereo.github.io/cas/5.3.x/installation/Configuration-Properties.html>
4.安装配置步骤
(1)重新编译cas以支持LDAP认证,命令序列
cd /usr/local/cas-overlay-template-5.3
mvn clean //清除原来的编译
nano pom.xml // 修改编译配置文件
增加以下内容:
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-ldap</artifactId>
<version>${cas.version}</version>
</dependency>
保存后重新编译生成cas.war
mvn install //生成cas.war
删除原来的tomcat发布的cas.war
rm /usr/local/apache-tomcat-8.5.32/webapps/cas.war
cp /usr/local/cas-overlay-template-5.3/target/cas.war /usr/local/apache-tomcat-8.5.32/webapps/
检测cas是否提供服务
在浏览器 https://author.linbsoft.com:8443 测试ok
(2) 修改配置文件
nano /usr/local/apache-tomcat-8.5.32/webapps/cas/WEB-INF/classes/application.properties
注释掉默认测试方式和账号,增加ldap认证方式属性
## # CAS Authentication Credentials # #cas.authn.accept.users=casuser::Mellon
cas.authn.ldap[0].principalAttributeList=displayName,givenName
cas.authn.ldap[0].principalAttributePassword=userPassword
cas.authn.ldap[0].collectDnAttribute=false
cas.authn.ldap[0].principalDnAttributeName=principalLdapDn
cas.authn.ldap[0].allowMultiplePrincipalAttributeValues=true
cas.authn.ldap[0].allowMissingPrincipalAttributeValue=true
cas.authn.ldap[0].credentialCriteria=
cas.authn.attributeRepository.ldap[0].attributes.uid=uid
cas.authn.attributeRepository.ldap[0].attributes.displayName=displayName
#cas.authn.attributeRepository.ldap[0].attributes.cn=commonName
#cas.authn.attributeRepository.ldap[0].attributes.affiliation=groupMembership
cas.authn.ldap[0].ldapUrl=ldap://author.linbsoft.com
cas.authn.ldap[0].bindDn=cn=admin,dc=linbsoft,dc=com
cas.authn.ldap[0].bindCredential=123 cas.authn.ldap[0].poolPassivator=BIND
cas.authn.ldap[0].connectionStrategy=
cas.authn.ldap[0].providerClass=org.ldaptive.provider.unboundid.UnboundIDProvider
cas.authn.ldap[0].connectTimeout=5000 cas.authn.ldap[0].trustCertificates=
cas.authn.ldap[0].keystore= cas.authn.ldap[0].keystorePassword=
cas.authn.ldap[0].keystoreType=PKCS12 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=500 cas.authn.ldap[0].validateTimeout=5000
cas.authn.ldap[0].failFast=true cas.authn.ldap[0].idleTime=500
cas.authn.ldap[0].prunePeriod=24 cas.authn.ldap[0].blockWaitTime=5000
cas.authn.ldap[0].useSsl=false cas.authn.ldap[0].useStartTls=false
cas.authn.ldap[0].responseTimeout=8000 cas.authn.ldap[0].allowMultipleDns=false
cas.authn.ldap[0].name= cas.authn.ldap[0].type=AUTHENTICATED
cas.authn.ldap[0].searchFilter=uid={user}
cas.authn.ldap[0].enhanceWithEntryResolver=true
cas.authn.ldap[0].derefAliases=NEVER
cas.authn.ldap[0].dnFormat=uid=%s,ou=teacher,dc=linbsoft,dc=com
cas.authn.ldap[0].baseDn=dc=linbsoft,dc=com
(3) 重启tomcat 到tomcat的logs目录查看catalina.out 文件,排查错误,比如,我调试过程出现:
2018-08-28 02:22:29,467 ERROR
[org.apereo.cas.authentication.PolicyBasedAuthenticationManager] -
<[LdapAuthenticationHandler]: [Unexpected LDAP error /
LDAPException(resultCode=17 (undefined attribute type), errorMessage='undefined
attribute type', ldapSDKVersion=4.0.5, revision=27420)]>
这里虽然显示错误,但内心已狂喜,因为说明cas和ldap建立联系了,是ldap验证过程中的错误,经过排查某个属性值没提供,或提供的属性值与环境不匹配。
(4)调试通过后,可以用ldap中的注册用户正常验证
> 2018-08-28 02:59:35,745 INFO
[org.apereo.cas.authentication.PolicyBasedAuthenticationManager] -
<Authenticated principal [linbin] with $ 2018-08-28 02:59:35,756 INFO
[org.apereo.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - <Audit
trail record BEGIN
============================================================= WHO: linbin WHAT:
Supplied credentials: [UsernamePasswordCredential(username=linbin)] ACTION:
AUTHENTICATION_SUCCESS APPLICATION: CAS WHEN: Tue Aug 28 02:59:35 PDT 2018
CLIENT IP ADDRESS: 192.168.0.130 SERVER IP ADDRESS: 192.168.0.107
=============================================================
(5) 上图,放鞭炮
LDAP认证登录成功!
热门工具 换一换