因为近期项目需求,需要上一个单点登录模块,简单做了一些调研,决定用比较流行的开源项目cas,于是跌进了深坑……
目前官方最新的版本是5系列,网上的资料和示例说4的比较多,于是很多东西都是自行摸索和研究,写在这里供大家参考,也免去一些重复排坑的操作。
首先是项目拉取,官方的版本库地址是:https://github.com/apereo/cas,但是我们需要拉的不是它,官方推荐我们拉取基于Maven或Gradle的模板,用哪个都无所谓看个人喜好,笔者用的是Gradle:https://github.com/apereo/cas-gradle-overlay-template,环境是NetBeans8.1+jdk8。
项目拉取好之后先添加依赖,默认是什么都没有的光板,一般来说最先需要添加的是域验证和数据库验证:
compile "org.apereo.cas:cas-server-support-jdbc:${project.'cas.version'}"
compile "org.apereo.cas:cas-server-support-jdbc-drivers:${project.'cas.version'}"
compile group: 'net.sourceforge.jtds', name: 'jtds', version: '1.3.1'
compile group: 'mysql', name: 'mysql-connector-java', version: '6.0.6'
compile "org.apereo.cas:cas-server-support-ldap:${project.'cas.version'}"
坑1:官方给出的文档写到,添加了1和2两行之后就默认支持了很多数据库blabla,其实它指的是支持去连接数据库了,但是具体的连接驱动你还得自己看着办,这里我加了3和4两行以支持MS SQL Server和My SQL,如果你有连接其他数据库的需求也按这个格式添加即可。
编译打包后将war包发布到Tomcat8.5,就算是基本成功了。
https证书相关,直接部署并启动后,打开/cas网站可以跳出默认的登录画面,但是可以看见两块大大的警告,我们依次处理。
警告1:存在静态的用户认证,这是因为默认配置了一个叫casuser/Mellon的用户,找到application.properties文件,将cas.authn.accept.users=casuser::Mellon这一行注释掉。
警告2:连接非https安全连接,在网上的文档中很多关于4的文章都提到需要修改很多配置以让cas支持http,这里我感觉现在https还是有必要的,于是直接在本地用keytool自签发了一个证书,配置好Tomcat以让其支持https,这个过程网上资料很全也没什么坑就不赘述了。发布到生产库的时候还是尽量用第三方签名证书,免费的Let's Encrypt就不错。
至此第一步就算大功告成啦。