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认证登录成功!

友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信