SSO之CAS单点登录部署

项目之前用到单点登录,之前都是网上找了一些资料然后就用上了,中间也遇到了一些问题,这里总结一下,毕竟以后还是可能再用到这东西的。
这里摘抄下有关基本概念帮助后面理解CAS的实现

1.基本概念:cookie,session,会话cookie,jssessionid

  • cookie和session机制是为了解决HTTP协议的无状态而生的;
  • cookie是客户端保存用户信息的机制;
  • session是服务器保存用户信息的机制;
  • cookie其实就是在游览器中的一个文本,当游览器第一次访问jsp时,jsp response会给游览器返回一个cookie,然后游览器存储它;
  • cookie具有不可跨域;
  • cookie和session联合使用可以解决跨域记录用户用户信息的问题;
  • 为了使游览器记住服务器的session,游览器会生成一个id,这个id就叫做jssessionid;
  • 为了防止一些游览器禁用cookie,java EE标准退出了URL的重写,使url里面记录jssessionid;
  • 上述让游览器记住服务器的session的形式叫做会话cookie,会话cookie在用户登出或者游览器关闭后自动删除,这样叫做一次会话;
    这里如果还对会话cookie和session不清楚,可以看看我转载的这两篇文章,讲的都是很精辟
    理解了上面的基本概念和标准,对于理解cas的实现和基本流程很有帮助,cas这样的sso解决方案本来就是构建在cookie和session标准之上的。

2.SSO 和 CAS 介绍

SSO 单点登录,是企业为了解决在相互信任的系统上实现一次登录的解决方案。CAS 是SSO解决方案里面比较成熟的架构,是耶鲁大学发起的一个开源架构。
CAS 具有以下特点:
- 开源的企业级单点登录解决方案。
- CAS Server 为需要独立部署的 Web 应用。
- CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。

3.CAS基本流程

4.基本配置

1.CAS概述
具体CAS的了解可以上官网看,http://www.jasig.org/cas
2.演示环境
这里我是在自己电脑一台机上弄得,这里也可以弄成三台物理机,只要ip可以访问到就行了
- Window10 64位
- JDKjdk1.8.0_05
- apache-tomcat-8.0.9
- CAS-server-3.4.11、CAS-client-3.2.1
直接配置下hosts文件,添加多个域名,用于后面配置时候用,cas的配置都是需要域名的,包括下面的生成证书,ip是不可以,所以这里虚拟一下

127.0.0.1 server.cas.com
127.0.0.1 client1.cas.com
127.0.0.1 client2.cas.com

3.JDK环境
因为要用到tomcat,因为tomcat也是一个JVM进程,当然JVM也是需要JRE环境才可以运行的。
这里写图片描述
4.安全证书配置
有关keytool工具的详细运用见:http://www.micmiu.com/lang/java/keytool-start-guide/
4.1 生成证书
这个证书后面要发放到客户端,认证用的,不然游览器会有一个红色警告,我这里测试用,所以用的JDK来生成证书,如果严格得去CA购买证书,好像是要花钱的。
这里写图片描述
ps:
截图中需要输入的姓名和上面hosts文件中配置的一致;
keypass 和 storepass 两个密码要一致,否则下面tomcat 配置https 访问失败;
4.2 导出证书
这里写图片描述
ps:该命令中输入的密码和上面输入的不是同一个密码;如果是多台机器演示,需要在每一台客户端导入该证书。
4.3.客户端导入证书
这里写图片描述
这里输入cacerts证书库的密码 changeit,不是我们上面创建证书的密码,这个是它的默认密码; 这一步最主要的,一般情况下,没有把它说明白,其实这一步就是让cas客户端服务器去理解server.cas.com这台机器所发过来的经过加密的数据(这个涉及到https数据对称加密交互,不多说了,因为说不明白)
这里有个地方要主要。有些证书的结尾是以cer结尾的,要将路径改成d:/sso/cas.cer,不然会报文件找不到的错误。
ps:该命令中输入的密码和上面输入的不是同一个密码;如果是多台机器演示,需要在每一台客户端导入该证书。
5.部署CAS-Server相关的Tomcat
5.1. 配置HTTPS
解压apache-tomcat-8.0.9-windows-x64.zip并重命名后的路径为 d:\sso\tomcat-cas,在文件 conf/server.xml文件找到:

<!-- <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" /> -->

注释掉,添加这一段

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
      SSLEnabled="true"
      maxThreads="150" scheme="https" secure="true"
      clientAuth="false" sslProtocol="TLS"
      keystoreFile="D:/sso/cas.keystore"
      keystorePass="123456" />
  • keystoreFile 就是4.1中创建证书的路径
  • keystorePass 就是4.1中创建证书的密码

这里如果需要省略端口号,将port=”443”,https的默认端口号是443。

5.2. 验证HTTPS配置
其他按照默认配置不作修改,双击%TOMCAT_HOME%\bin\startup.bat 启动tomcat-cas 验证https访问配置:
这里写图片描述
这里写图片描述
如果看到上述界面表示https 访问配置成功。

5.3 部署CAS-Server
CAS-Server 下载地址:http://www.jasig.org/cas/download
本文以cas-server-3.4.11-release.zip 为例,解压提取cas-server-3.4.11/modules/cas-server-webapp-3.4.11.war文件,把改文件copy到 d:\sso\tomcat-cas\webapps\ 目下,并重命名为:cas.war.
启动tomcat-cas,发现报了一个错,这里把错误的图贴出来
这里写图片描述
感觉好像是JDK版本的问题,于是配置了一下tomcat的JDK为7的,启动就不报错了
在浏览器地址栏输入:https://server.cas.com:8443/cas/login ,回车
这里写图片描述
CAS-server的默认验证规则:只要用户名和密码相同就认证通过(仅仅用于测试,生成环境需要根据实际情况修改),输入admin/admin 点击登录,就可以看到登录成功的页面:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值