单点登录之实战CAS5.1.x(二)——配置认证源
2017-09-04 00:00
204 查看
摘要: 配置认证源
前面我们虽然添加了驱动但没有配置任何认证源,现在的服务器是无法登入并使用的。
添加域验证:
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服务器搞定。
前面我们虽然添加了驱动但没有配置任何认证源,现在的服务器是无法登入并使用的。
添加域验证:
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服务器搞定。
相关文章推荐
- SpringCloud(第 013 篇)电影微服务使用定制化 Feign 在客户端进行负载均衡调度并为 Feign 配置帐号密码登录认证 Eureka
- java鬼混笔记:shiro 1、基本ini配置文件的登录认证
- SpringCloud(第 013 篇)电影微服务使用定制化 Feign 在客户端进行负载均衡调度并为 Feign 配置帐号密码登录认证 Eureka
- ssh密钥登录认证自动配置脚本
- H3C配置ssh密码认证登录
- ftp身份认证时登录框反复弹出以及ftp常用配置
- SSH 原理和基本使用:ssh 安全配置 以及ssh key 认证登录
- SSH 原理和基本使用:ssh 安全配置 以及ssh key 认证登录
- MongoDB 2.6配置副本集,支持端口号修改和用户登录认证
- SQLserver2005以身份认证方式登录的一些配置
- 项目中用到Shiro安全配置用于系统的登录和权限认证
- SSH session key (证书认证方式SSH登录配置)
- 配置数据库认证单点登录
- Windows Server 2008 R2&Cisco2960 配置Radius服务 实现802.1x认证 实战
- ELK利用nginx配置登录认证
- 【.NET Core项目实战-统一认证平台】第三章 网关篇-数据库存储配置(1)
- 5、Django实战第5天:首页和登录页面的配置
- vsftpd快速配置及配合mysql认证登录
- IT忍者神龟之基于CAS实现单点登录(SSO)之配置CAS服务端的数据库查询认证机制(一)