1、简介

  参考:

http://www.coin163.com/java/cas/cas.html

  CAS主要用于多系统单点登录,属于WEB SSO。SSO体系主要角色有三种:User(多个),WEB应用(多个),SSO认证中心。

  CAS结构体系,包括两部分:CAS Server和CAS Client. CAS Servier负责完成对用户的认证工作,需要独立部署,CAS Server会处理用户名/密码等凭证。

  CAS Client处理对客户端受保护资源的访问请求,需要对请求方进行身份认证时,重定向CAS Server进行认证。(原则上,客户端应用不再接受任何的用户名和密码等).

  CAS Client与受保护的客户端用户部署在一起,以Filter方式保护受保护的资源。

  基础模式SSO访问流程主要有以下步骤:

    1.访问服务:SSO客户端发送请求访问应用系统提供的服务资源。

    2.定向认证:SSO客户端会重定向用户请求到SSO服务器。

    3.用户认证:用户身份认证。

    4.发放票据:SSO服务器会产生一个随机的Service Ticket。

    5.验证票据:SSO服务器验证票据Service Ticket的合法性,验证通过后,允许客户端访问服务。

    5.传输用户信息:SSO服务器验证票据通过后,传输用户认证结果信息给客户端。

   协议过程:

    

  介绍:CAS Client与受保护的客户端应用部署在一起,以Filter方式保证WEB应用的受保护资源,过滤从客户端过来的每一个WEB请求,同时,CAS Client会分析HTTP请求中是否包含请求Service Ticket(ST 上图中的Ticket),如果没有,则说明该用户是没有经过认证的;于是CAS Client会重定向用户请求到CAS Server(2),并传递Service(要访问的目的资源地址)。step 3是用户认证过程,如果用户提供了正确的身份,CAS Server随机产生一个相当长度、唯一、不可伪造的Service Ticket,并缓存以待将来难,并且重定向到用户到Service所在地址(附带刚才产生的Service Ticket),并为客户端浏览器设置一个Ticket Granted Cookie(TGC);CAS Client在拿到Service和新产生的Ticket过后,在5和6中与CAS Service进行身份核实,以确保Service Ticket的合法性。

  在该协议中,所有与CAS Service的交互均采用SSL协议,以确保ST和TGC的安全性。协议工作过程中会有2次重定向的过程。但是CAS Client和CAS Service之间进行Ticket验证的过程对于用户是透明的. 

CAS 请求时序图:

    

    当用户访问另一个应用的服务再次被重定向到CAS Service的时候,CAS Service会主动获到这个TGC cookie,然后做这个事情:

  I.如果User持有TGC且其还没失效,那么就走协议图4

  II.如果TGC失效,那么用户还是要重新认证。

2.安装CAS 服务器

  2.1 下载CAS 服务器

    地址:http://pan.baidu.com/s/1o8D3hEE

    下载,解压后找到modules文件夹下cas-server-webapp-3.5.2.1.war 改名为ROOT.war 放到tomcat下的webapps下。

  2.2 创建CAS密钥库

    使用JDK的keytool命令生成密钥库(keystore),其中就是一份keystore文件(在系统用户目录下),keystore必须通过密码才能访问。

    keystore里包含了多个密钥对(keypair),每个keypair都有一个别名(alias),alias必须保证唯一性,而且都有一个密码,有此可知,keystore与keypair都有自己的密码。

    JDK也有自己的keystore 位于%JAVA_HOME%\jre\lib\security\cacerts 密码是changeit 当然也可以通过keytool命令来修改。

     我们首先生成 keppair及其存放keypair的keystore,然后从keystore时导出证书,最后将证书导入jDK的keystore里,Tomcat在运行时就会自动读取JDK的keystore,以确保所部署的应用可以享受HTTPS协议(SSL通道)带来的安全性。

  2.3 生成keystore

    2.3.1 keytool -genkeypair -alias cas -keyalg RSA -storepass changeit

    在当前的用户目录下会生成一份.keystore文件

    其中的名称与姓氏写跳转的域名.(在这里在hosts文件写127.0.0.1  cas)  hosts文件路径为C:\Windows\System32\drivers\etc

    2.3.2 查看keypair keytool -list -storepass changeit

        删除 keypair  keytool -delete -alias <别名> -storepass changeit

    2.3.3 导出证书

       keytool -exportcert -alias cas -file cas.crt -storepass changeit

       生成的证书文件为cas.crt,位于运行该命令所有的当前目录下。

       可双击该证书文件,将该证书安装到"受信任的根证书颁发机构"中,这样在浏览器中就不会出现红叉叉。

    2.3.4 导入到JVM中

       keytool -importcert -alias cas -file cas.crt -keystore "%JAVA_HOME%"\jre\lib\security\cacerts -storepass changeit -noprompt

       PS:ps:该命令中输入的密码和上面输入的不是同一个密码;如果是多台机器演示,需要在每一台客户端导入该证书。

    2.3.5 使Tomcat支持HTTPS

       tomcat 下的conf\server.xml

       修改:

        <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />

        禁用 HTTP 8080 端口,开启 HTTPS 8443 端口,禁用 AJP 8009 端口,以确保只能通过 HTTPS 协议访问 CAS 服务器。

若将 HTTPS 端口号配置为 443,则可以使用无端口方式发送 HTTPS 请求。

      2.3.6  运行CAS服务器

      https://cas:8443/login

      https://cas:8443/logout

    

  

  

  

安装CAS服务器的更多相关文章

  1. 源码安装Memcached服务器及其2种PHP客户端

    本文所用源码包皆为当时最新stable稳定版. 安装memcached服务器 先安装libevent, 最新版为2.0.21 tar -zxvf libevent-2.0.21-stable.tar. ...

  2. Cas 服务器 下载、编译及部署

    一直想把公司运营的项目的各个子项的认证及授权统一到Cas上,从有想法到现在快一年的时间了.现在才正式着手,有兴趣的朋友一起交流学习一下.具体项目的细节不便透露,整合的大体思路为:1.开发部署Cas服务 ...

  3. 从零开始部署CAS服务器

    从0开始部署CAS服务器的操作过程文档,我已经整理完毕,一共分为8步,这8步都是我自己操作实践过的. Setp1:Ubuntu server安装 在virtual box中安装ubuntu serve ...

  4. 【CAS单点登录视频教程】 第02集 -- 安装CAS

    目录 ----------------------------------------- [CAS单点登录视频教程] 第06集[完] -- Cas认证 学习 票据认证FormsAuthenticati ...

  5. CAS (6) —— Nginx代理模式下浏览器访问CAS服务器网络顺序图详解

    CAS (6) -- Nginx代理模式下浏览器访问CAS服务器网络顺序图详解 tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 nginx版本: nginx-1. ...

  6. cas协议,以及tomcat搭建cas服务器

    1.      CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...

  7. 基于CAS的单点登录实战(1)-- 搭建cas服务器

    公司有几个系统想做SSO,然后开始研究cas.系统是Centos7 搭建CAS服务器 cas的版本比较多,先在网上搜了一下各种教程配置经验.本来想搭建最新的CAS版本,然而为了快速部署,选择了网上教程 ...

  8. Cas服务器以及客户端搭建

    一.搭建cas服务器 官网:http://jasig.github.io/cas/ Cas Server 下载:http://developer.jasig.org/cas/ Cas Client 下 ...

  9. CentOS安装SVN服务器

    Step1:安装svn服务器 $ yum install subversion Step2:创建SVN版本库目录 $ mkdir /workplace/svnrepos Step3:创建版本库 $ s ...

随机推荐

  1. img

    public BitmapImage BitmapToImage(System.Drawing.Bitmap bitmap) { System.Drawing.Bitmap bitmapSource ...

  2. 构造 & 析构 & 匿名对象‍

    ‍以前仅知道创建对象,但对匿名对象的了解基本为0. 通过阅读google chromium源代码 中关于 log 的使用,查阅相关资料,了解了一下匿名对象,予以记录. 什么是匿名对象‍ 匿名对象可以理 ...

  3. java多线程详解(5)-Threadlocal用法

    ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路. 使用这个工具类可以很简洁 ...

  4. HTTP 协议缓存

    http 缓存分为客户端缓存和服务端缓存 1. 客户端缓存 客户端缓存指的是浏览器缓存, 浏览器缓存是最快的缓存, 因为它直接从本地获取(但有可能需要发送一个请求), 它的优势是可以减少网络流量, 加 ...

  5. iis7下配置php出现404.17错误的解决办法

    服务器上建有几个PHP站点,都在正常运行.今天又新建了一个PHP站点,处理程序模块配置的和其他几个都一样,但就是跑不起来,一直提示404.17错误,重启服务器也不行. 最后实在没办法了,就把正常运行站 ...

  6. bc:linux下命令行计算器

    在linux下,存在一个命令行的计算器:bc.该程序一般随发行版发布. bc计算器能够执行一些基本的计算,包括+,-,×,\,%. 这些计算不经针对十进制,还可以使用二进制,八进制,十六进制,并且可以 ...

  7. postgresql数据迁移

    postgresql从库故障准备新库 1,创建用户[root@localhost home]# userdel postgres[root@localhost home]# groupdel post ...

  8. pll及其modesim仿真

    100mhz输入时钟,pll层40mhz和200zhm 进入quartus,建立工程,新建图形文件,导入pll模块,设定pll相关参数.   完成pll模块的建立,并生成pll.v文件 建立modes ...

  9. Spring.Scheduling.Quartz 作业的应用(定时任务和循环触发任务)

    .定时任务的实现,比如有个任务是要晚上2点10分的时候要去触发的,先定义这个任务类RskBookFilterInitDiningService.cs,这里其实有两种实现,一种是需要继承QuartzJo ...

  10. Android自定义View之CircleView

    Android自定义View之CircleView 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/5999 ...