cas 5.x mysql_单点登录之实战CAS5.1.x(二)——配置认证源

前面我们虽然添加了驱动但没有配置任何认证源,现在的服务器是无法登入并使用的。

添加域验证:

cas.authn.ldap[0].type=AD

cas.authn.ldap[0].ldapUrl=ldap://xxx.com:389

cas.authn.ldap[0].useSsl=false

cas.authn.ldap[0].baseDn=cn=Users,dc=xxx,dc=com

cas.authn.ldap[0].userFilter=sAMAccountName={user}

cas.authn.ldap[0].subtreeSearch=true

cas.authn.ldap[0].bindDn=youraccount@xxx.com

cas.authn.ldap[0].bindCredential=yourpassword

cas.authn.ldap[0].dnFormat=%s@xxx.com

cas.authn.ldap[0].principalAttributeId=sAMAccountName

cas.authn.ldap[0].principalAttributeList=displayName,mail

cas.authn.ldap[0].allowMultiplePrincipalAttributeValues=true

cas.authn.ldap[0].allowMissingPrincipalAttributeValue=true

添加完了上述配置项到application.properties后,即可支持AD域验证。

坑2:官方文档很齐全但同时也蛮简略的,关于域这一块返回详细信息我最后也没有试出来,所以相关配置我也不放出来了,后面我们有别的手段获取这里先不提。这里关于域的一些关键配置也没有什么解释,我能理解的是bindDn和bindCredential是你给定的一个域账号,而dnFormat则是提交域验证的用户名格式,这里我使用的是邮箱形式,你也可以使用cn=ou=这样的标准形式,感觉应该区别不大,这些参数正确配置后就能保证域验证没问题。

添加数据库验证:

cas.authn.jdbc.query[0].sql=SELECT * FROM users WHERE account=?

cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/cas?useUnicode=true&characterEncoding=UTF8&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=false

cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQLDialect

cas.authn.jdbc.query[0].user=casuser

cas.authn.jdbc.query[0].password=caspw

cas.authn.jdbc.query[0].driverClass=com.mysql.cj.jdbc.Driver

cas.authn.jdbc.query[0].fieldPassword=passwd

注意连接字的格式,参数不给全了真的会报错报错报错……

fieldPassword是5系列新加的配置,指明你的数据库表中密码列的名称。

坑3:驱动类我们已经明确指明了是com.mysql.cj.jdbc.Driver,旧的com.mysql.jdbc.Driver驱动类已经过时,但是即便我们指明了,cas服务器仍然会去使用旧驱动类,然后导致控制台会报类过时警告,我能怎么办,我也很绝望啊……

如果你的密码是加密的,则需要配置加密算法,MD5这些常用的都是支持的。

cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT

cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5

cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8

我们还需要配置验证时返回的详细信息,如果不配置,则我们只能拿到用户输入的用户名。

cas.authn.attributeRepository.jdbc[0].singleRow=true

cas.authn.attributeRepository.jdbc[0].url=jdbc:mysql://localhost:3306/cas?useUnicode=true&characterEncoding=UTF8&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=false

cas.authn.attributeRepository.jdbc[0].username=account

cas.authn.attributeRepository.jdbc[0].user=casuser

cas.authn.attributeRepository.jdbc[0].password=caspw

cas.authn.attributeRepository.jdbc[0].sql=SELECT account, mobile, email FROM users WHERE {0}

cas.authn.attributeRepository.jdbc[0].dialect=org.hibernate.dialect.MySQLDialect

cas.authn.attributeRepository.jdbc[0].driverClass=com.mysql.cj.jdbc.Driver

坑4:不要试图配置MS SQL Server,一些努力都是徒劳的,在无数遍尝试之后,我差不多已经可以肯定cas5.1.x有一个恶性的bug导致在连接MS SQL Server数据库时验证必定失败,大概开源社区的大咖们玩得都是My SQL、MongoDB吧,win平台的东西注定是后妈养的,but不要担心,后面我们有办法去连接MS SQL Server。

至此单独登录cas服务器搞定。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值