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. JS绑定JavaScript事件

    //onblur="onblurs(this)" // function onblurs(e) { // alert(e.value); // }

  2. 未能加载文件或程序集EntityFramework, Version=6.0.0.0解决办法

    其他信息: 未能加载文件或程序集"EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934 ...

  3. oracle生成单据号

    --创建单据号存放表 CREATE TABLE BU_TAB( DOC_NUM NUMBER --生成的单据号 ); --单据号 create table cux_doc_num( tab ), -- ...

  4. Codeforces Round #384 (Div. 2) //复习状压... 罚时爆炸 BOOM _DONE

    不想欠题了..... 多打打CF才知道自己智商不足啊... A. Vladik and flights 给你一个01串  相同之间随便飞 没有费用 不同的飞需要费用为  abs i-j 真是题意杀啊, ...

  5. bootstarp-table表格中嵌套多个BUTON按钮实现

    bootstarp-table表格中嵌套多个BUTON按钮实现   有时我们需要在bootsharp-table表格中嵌套多个按钮,来实现不同的功能,大概界面如下:   实现功能如下: 1:构建表格 ...

  6. Java重点之小白解析--浅谈数据流形式图片上载

    文档上载,上载也不知道哪个大神(混球)起的名字,读起来怪怪的,反正平时我只读上传. 闲话少说,直入主题.先等等这两天做文件上传,都快把宝宝折磨疯了,不会呀,各种查呀,最可悲的是废了老大功夫学会了传送文 ...

  7. Hibernate控制台显示创建数据库表语句

    package cqvie.yjq.View; import org.hibernate.Session; import org.hibernate.Transaction; import org.h ...

  8. Java(数组)动手动脑

    1>数组作为方法参数 阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 源代码: // PassArray.java // Pas ...

  9. IIS上虚拟目录下站点的web.config与根站点的web.config冲突解决方法

    IIS7.5上在站点下部署虚拟目录,访问虚拟目录下的项目提示与父节点配置冲突.,节点与的<system.web>节点与主站点的<system.web>冲突解决方法: 在站点下的 ...

  10. git 调用 Beyond Compare

    转载自  http://www.jackness.org/2015/03/31/git-%E8%B0%83%E7%94%A8-%E7%AC%AC%E4%B8%89%E6%96%B9%E5%AF%B9% ...