单点登录CAS学习(一):初识单点登录

一、单点登录应用场景

不少业主单位随着自身的发展,建立不少业务支撑系统,往往会采用不同的开发商进行系统开发和建设,因此必然形成如下一种局面:工作人员需要登录多个业务系统才能将自己的工作全部完成,给工作人员带来了额外的负担。

因此单点登录变应运而生了,它解决了多个系统都要登陆的问题,只需要打开一个系统时,进行登录(单点登录),就可以自由切换其他的系统。

二、单点登录的框架

         目前广泛使用的单点登录框架是CAS框架,CAS是SSO解决方案里面比较成熟的架构,是耶鲁大学发起的一个开源架构,其旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点:

  1. 开源的企业级单点登录解决方案。
  2. CAS Server 为需要独立部署的 Web 应用。
  3. CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

下图是 CAS 最基本的协议过程:

 

CAS协议过程

  1. 访问服务:SSO客户端发送请求访问应用系统提供的服务资源。
  2. 重定向认证:SSO客户端会重定向用户请求到SSO服务器。
  3. 用户验证:用户身份认证。
  4. 生成票据:SSO服务器会产生一个随机的Service Ticket。
  5. 验证票据:SSO服务器验证票据Service Ticket的合法性,验证通过后,允许客户端访问服务。
  6. 传输用户信息:SSO服务器验证票据通过后,传输用户认证结果信息给客户端。

 

三、学习实践的内容

  1. 搭建单点登录框架
  2. 通过数据库进行单点登录的验证
  3. 模拟多个客户端进行接入
  4. 对接入进行管理

 

四、本篇的学习实践内容

     本篇主要是解决上面时候的第一个任务:搭建单点登录框架,初步了解CAS。主要要完成如下内容:

  1. 进行域名映射
  2. 下载CAS工程并进行编译
  3. 准备认证证书
  4. 修改jdk和tomcat
  5. 配置浏览器支持https

 

五、准备工作详细步骤

5.1 域名映射

修改windows的hosts文件,添加cas服务端域名server.cas.com和两个客户端应用的域名

App1.cas.com和 app2.cas.com

在最后面添加下面三行

127.0.0.1 server.cas.com

127.0.0.1 app1.cas.com

127.0.0.1 app2.cas.com

保存后退出。

5.2 下载CAS工程并编译

https://github.com/apereo/cas-overlay-template/tree/5.3  从这个url直接打开cas的5.3版本url, 我使用时最新的已经是6.1版本(工程组织方式从maven 变成了 gradle,打包方法发生了变化)

在下图中的红框处,选择要下载的版本和进行压缩包下载。

下载后,将压缩文件解压后,结构如下:

打开CMD窗口后,进入到上面的目录,执行 mvn clean package  这个命令的意思进行打包

注意:这里会比较慢,需要耐心等待。

执行这个步骤的目的是生产一个cas.war包, 可以放到tomcat中运行。经过长时间的等待终于编译成功,如下图

编译成功后,在目录下生成一个target目录,在这里会有一个war包,此war包可以放到tomcat工程里面

5.3 准备证书

tomcat通过https访问话,需要有证书,借助jdk的工具keytool来进行证书的生成。

5.4 生成keystore

通过cmd窗口,进入放置证书文件的目录,比如 e:/tmp/tomcat-key/

 

keytool -genkey -alias tomcat -keyalg RSA -validity 3650 -keystore e:/tmp/tomcat-key/tomcat.keystore

这里的密钥可以用自己设置的,本例中用 123456

生成后检查该路径:

5.5 根据keystore生产crt文件

#输入第一步中keystore的密码changeit

keytool -export -alias tomcat -file e:/tmp/tomcat-key/tomcat.cer -keystore e:/tmp/tomcat-key/tomcat.keystore -validity 3650

5.6 修改jdk和tomcat

5.6.1 信任授权文件到jdk

首先确定一下jdk的目录,本例如下:

证书库cacerts的缺省口令是 changeit

keytool -import -keystore  C:/Java/jdk1.8.0_152/jre/lib/security/cacerts -file E:\tmp\tomcat-key/tomcat.cer -alias tomcat -storepass changeit

 

这样证书已经准备好并授权到jdk1.8了

5.6.2 修改tomcat 配置

进入要部署的tomcat 目录,本例中使用的是tomcat 8,目录C:\Java\apache-tomcat-8.5.34,如下图:

下面需要修改tomcat 的sever.xml文件,这个文件在tomcat下得conf目录里

默认是开启8080端口,http协议,在这个配置下面添加如下配置:

    <Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

              

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"

           maxThreads="200" SSLEnabled="true" scheme="https"

           secure="true" clientAuth="false" sslProtocol="TLS"

           keystoreFile="E:\tmp\tomcat-key\tomcat.keystore"

           keystorePass="123456"/>

如下图:

配置完成后保存。

5.7 配置浏览器支持https

在chrome中管理证书,进入配置界面->选择高级->管理证书

点击右边的管理按钮,弹出导入界面

根据导入提示一步一步进行,选择前面制作的证书,导入。

六、检验准备工作

6.1 部署

将CAS工程编译后的结果 cas.war 部署到tomcat 环境下,在tomcat的webapps目录下新建一个cas目录,将cas.war 拷贝到这个cas目录

C:\Java\apache-tomcat-8.5.34\webapps\cas

6.2 运行并检验

将tomcat目录下的startup.bat 运行起来(如果是linux的运行startup.sh),看到运行日志如下:

端口8443已经就绪,启动startup 完成。打开chrome ,访问https://server.cas.com:8443/cas/login 如果出现提示,点击高级/详细信息,继续访问。 

 

旁边Static Authentication 提示你:你现在只有一个写死的用户默认账号: 默认密码:Mellon 仅有这一个用户,目前这个服务端只能看看,没什么实际用途。建议您将CAS连接到LDAP、JDBC等。

登陆成功后,界面如下:

以上就是单点登录的第一部分的学习和实践内容。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值