这几天换了工作,事情一下子多了起来,前公司十分给力的只给了我400多的应付职工薪酬,心态炸了。
不说别的,这几天重点研究了cas的单点登录,总结一下。
** CAS - Central Authentication Service**
CAS是一个单点登录框架,通俗理解为一个应用登录了,其他被授权的应用不用再登录。
比如,A系统登录了之后,B系统就可以跳过登录,转而进入系统内。于是问题来了:在实现cas单点登录之前,我首先要实现两个系统的多数据源配置,把登录相关表设为一个共有的数据源。关于多数据源配置我另起了一篇○| ̄|_
事实上,使用cas单点登录时,相当于跳过原项目的登录过程,把登录的功能转嫁给cas服务器来实现。
1.下载
由于cas是开源的,所以直接在官网 下载源码就可以。
下载下来是这样子的:
其实只需要用到一个包,就可以实现简单的单点登录:cas-server-core
,并且这个包下源码的编译文件最后是要放到应用服务器
里面的。
把
\cas-server-4.0.0\modules
文件夹下的cas-server-webapp-4.0.0.war
改名为cas.war
,并放在tomcat目录下webapps
中,并启动tomcat。此时webapps目录下已经解压了
cas
文件夹,可以进行下一步了。
2.对cas-server-core 源码进行修改
由于不同的项目都有着自己的密码加密规则,所以需要对cas-server-core
包下的源码进行修改:
上代码:
修改\webapps\cas\WEB-INF
下的deployerConfigContext.xml
** 替换primaryAuthenticationHandler 的 bean**
1 |
|
** 新增**
1 | <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" > |
bean dataSource
主要是定义连接用户表数据库的配置,QueryDatabaseAuthenticationHandler
类就是对用户校验的处理类,在server-core 源码包中新增:
1 | package com.distinct.cas.jdbc; |
服务端创建安全证书:
cmd 控制台进入某给文件路径(同linux)
- 生成证书
keytool -genkey -alias cas(别名) -keyalg RSA -keystore D:/keys/smallkey(证书路径)
2.导出证书
keytool -export -file d:/keys/small.crt -alias smalllove -keystore d:/keys/smallkey
3.导入证书到jdk中
keytool -import -keystore C:\Java\jdk1.6.0_21\lib\security\cacerts -file D:/keys/small.crt -alias cas
- 在客户端shiroConfig中定义cas的服务器路径
1 | public static final String loginUrl = "http://localhost:8443/cas/login?service=你的项目路径"; |
编译server-core 源码,放在
tomcat-8.5.30\webapps\cas\WEB-INF\classes
下然后,可以试着运行一下tomcat,期间可能会有依赖包确实,把下载的jar包放到
tomcat-8.5.30\webapps\cas\WEB-INF\lib
下。
如果访问http://localhost:8443/cas/login 出现如下页面,则证明部署成功了。
2.cas 修改登录样式
假如,你觉得上面的登录样式太丑了(事实上的确很丑..),那我们可以去修改一下登录的样式:
算了,贴个链接吧,我太懒了QAQ
cas4.2.7定制登录页面样式(并且让页面默认使用中文提示)
Author: dadonggua