2022-03-10 CAS认证流程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022-03-10 CAS认证流程相关的知识,希望对你有一定的参考价值。
参考技术A CAS认证流程图:(1) 用户通过浏览器访问指定页面;
(2) 页面对应的后台进行安全校验:检查service-ticket和access token是否存在,若不存在,则 重定向 到CAS服务器 /cas/login/;
(3) CAS服务器要求用户提供SSO登录凭证;
(4) 用户提供用户名和密码给CAS服务器;
(5) CAS服务器将service ticket和 service URL返回给后台;
(6) 后台发送验证请求给CAS服务器检验service ticket和service URL是否匹配;
(7) 若后台得到service ticket和service URL匹配,返回前台浏览器,TGC一并存储到浏览器中;
(8) 浏览器访问指定页面;
CAS统一登录认证:与ldap连接
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
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
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认证登录成功!
以上是关于2022-03-10 CAS认证流程的主要内容,如果未能解决你的问题,请参考以下文章