安装CAS服务器
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服务器的更多相关文章
- 源码安装Memcached服务器及其2种PHP客户端
本文所用源码包皆为当时最新stable稳定版. 安装memcached服务器 先安装libevent, 最新版为2.0.21 tar -zxvf libevent-2.0.21-stable.tar. ...
- Cas 服务器 下载、编译及部署
一直想把公司运营的项目的各个子项的认证及授权统一到Cas上,从有想法到现在快一年的时间了.现在才正式着手,有兴趣的朋友一起交流学习一下.具体项目的细节不便透露,整合的大体思路为:1.开发部署Cas服务 ...
- 从零开始部署CAS服务器
从0开始部署CAS服务器的操作过程文档,我已经整理完毕,一共分为8步,这8步都是我自己操作实践过的. Setp1:Ubuntu server安装 在virtual box中安装ubuntu serve ...
- 【CAS单点登录视频教程】 第02集 -- 安装CAS
目录 ----------------------------------------- [CAS单点登录视频教程] 第06集[完] -- Cas认证 学习 票据认证FormsAuthenticati ...
- CAS (6) —— Nginx代理模式下浏览器访问CAS服务器网络顺序图详解
CAS (6) -- Nginx代理模式下浏览器访问CAS服务器网络顺序图详解 tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 nginx版本: nginx-1. ...
- cas协议,以及tomcat搭建cas服务器
1. CAS 简介 1.1. What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...
- 基于CAS的单点登录实战(1)-- 搭建cas服务器
公司有几个系统想做SSO,然后开始研究cas.系统是Centos7 搭建CAS服务器 cas的版本比较多,先在网上搜了一下各种教程配置经验.本来想搭建最新的CAS版本,然而为了快速部署,选择了网上教程 ...
- Cas服务器以及客户端搭建
一.搭建cas服务器 官网:http://jasig.github.io/cas/ Cas Server 下载:http://developer.jasig.org/cas/ Cas Client 下 ...
- CentOS安装SVN服务器
Step1:安装svn服务器 $ yum install subversion Step2:创建SVN版本库目录 $ mkdir /workplace/svnrepos Step3:创建版本库 $ s ...
随机推荐
- 使用id名称和name直接获取元素
我们知道一些第三方的js库对如何快速选取html中的元素做了一些简化,貌似十分高深莫测,其实也不然.而且js本身自带了对于特殊元素的简便选取的方法,下面就为大家简单介绍下. 在html中,一般最直接的 ...
- DOCTYPE的重要性
<!DOCTYPE>是文档类型声明: 声明必须是 HTML 文档的第一行,位于 <html> 标签之前.明不是 HTML 标签:它是指示 web 浏览器关于页面使用哪个 HTM ...
- CSS浮动布局与菜单栏设计
公司周六停电,终于可以双休了.用周五空余时间再夯实一下css基础,<CSS权威指南>概念性的内容看起来容易犯困,不如实践来得快,动手操作吧. 一.浮动布局 浮动存在问题:浮动使元素脱离文档 ...
- 关于imagic拼接透明背景图片的问题
目标: 为了做图片水印,需要水平拼接多个logo和文字... 之前用过imagick,所以继续使用. 第一个版本:实现了图片和文字的拼接,代码如下: package main import ( &qu ...
- mina IoBuffer
mina IoBuffer 常用方法 Limit(int) 如果position>limit, position = limit,如果mark>limit, 重置mark Mark() ...
- 【随笔】js加载
有时候,当发现js操作一个dom的时候,发现dom没有找到,这是由于html没有加载完就开始操作该dom的缘故,所以需要在html文档加载完后再加载js,于是我们可以这么做: js方法:window. ...
- Oracle 12c 的新功能:模式匹配查询
模式匹配SQL 在一系列的数据行中辨识出某种模式是一种广泛需求的功能,但在以前的SQL中是不可能的.有许多解决方法,但这些都很难写,很难理解,而且执行效率低下.在Oracle数据库中,从12c开始,你 ...
- C# 5.0新推出的async和await
class Program { static void Main(string[] args) { Test t = new Test(); } } public class Test { publi ...
- cassandra的源代码的入口
参考 http://ju.outofmemory.cn/entry/115864 cassandra自带服务端,这和leveldb不一样. 入口就从服务端程序说起. 具体的入口程序在 Cassand ...
- tab栏切换的特殊效果
在实际的开发过程中,我们可能会遇到这种需求,如下图 左边是三个tab栏,右边是显示内容的div,当鼠标滑到坐标的tab上时,给它一个高亮显示,让它对应的内容在右边的div中显示出来,当鼠标移出的时候把 ...