单点登录之CAS与LDAP的配置

项目需要,做一个cas与ldap服务器对接的工作。这里记录一下踩过的坑。
要让cas与ldap配置到一起,需要引入jar:cas-server-support-ldap。不过这里要提醒一下,这个jar有两个不同的组织都有提供:org.apereo.cas和org.jasig.cas。所以在引入maven依赖的时候一定要看清楚。

PS:这里没有cas server的安装与配置,openLDAP的安装配置、数据导入等等,这里请各位自行百度。

第一种jar包org.jasig.cas,这也是各个博客网站上使用较多的方法


<dependency>
    <groupId>org.jasig.casgroupId>
    <artifactId>cas-server-support-ldapartifactId>
    <version>4.2.7version>
    <scope>runtimescope>
dependency>

这种jar的更新貌似止步于2016年十一月。一些博客上用的jar版本较低,为3.X系列。方法如https://blog.csdn.net/yang651280121/article/details/51304242 所言,建议大家放弃这个方法。
————————————————————————————————————
第二种方式:引入cas的jar:org.apereo.cas


<dependency>
    <groupId>org.apereo.casgroupId>
    <artifactId>cas-server-support-ldapartifactId>
    <version>5.3.3version>
    <scope>testscope>
dependency>

根据博客https://blog.csdn.net/oLinBSoft/article/details/82152302中的方法,只需要修改部分参数

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=${spring.ldap.urls}
cas.authn.ldap[0].bindDn=${spring.ldap.username}
cas.authn.ldap[0].bindCredential=secret
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,cn=Manager,dc=maxcrc,dc=com
cas.authn.ldap[0].baseDn=dc=maxcrc,dc=com

配置文件中的很多内容,有很多是不需要的,这里只需要下面即可:

cas.authn.ldap[0].ldapUrl=ldap://127.0.0.1:389
cas.authn.ldap[0].useSsl=false
cas.authn.ldap[0].poolPassivator=none
cas.authn.ldap[0].type=AUTHENTICATED
cas.authn.ldap[0].searchFilter=uid={user}
cas.authn.ldap[0].baseDn=dc=maxcrc,dc=com

这里不使用连接池,不是用ssl。
如果不设置连接池为none或者close,日志会提示无法创建,如果不创建就设置为none或者close。
如果不设置useSsl为false,那么将会无法启动,启动报错为 javax.naming.CommunicationException: 127.0.0.1:389。

你可能感兴趣的:(java,CAS,sso,cas,ldap)