考完期末试后,就开始做一个手机音频项目。该项目分为几个版本:web、wap、client。我主要负责web版本的。在web版本的需求文档里要求使用CAS单点登录,所以我就花了三四天去研究并使用这个东西。三四天,我自己觉得时间花的不算多,毕竟在此之前我对单点登录了解甚少,自己的水平也还不够高。
为了让还没了解过单点登录的人,能够容易读懂这篇文章,在这里简单介绍一下单点登录是什么。单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。(来源于百度百科的解释) 笼统、简单的说,就是有几个相互信任的应用系统,分别为A、B、C、D……,只要登录其中任意一个,就可以随意访问另外的几个而无需再登录。
而CAS就是实现单点登录的一个开源项目,其中包括CAS Server和CAS Client。CAS Server(CAS服务器)是需要独立部署的web应用,主要负责对用户的认证工作。CAS Client(CAS客户端)支持很多开发语言,包括Java、.net、PHP、Ruby等,这里所谓的CAS客户端是指单点登录系统中的各个web应用,负责处理对客户端受保护资源的访问请求,需要登录时,重定向到CAS Server。
下图为CAS最基本的工作过程(图片及说明摘自网上):
CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。对于访问受保护资源的每个 Web 请求,CAS Client 会分析该请求的 Http 请求中是否包含 Service Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的 CAS Server 登录地址,并传递 Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。用户在第 3 步中输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket,并缓存以待将来验证,之后系统自动重定向到 Service 所在地址,并为客户端浏览器设置一个 Ticket Granted Cookie(TGC),CAS Client 在拿到 Service 和新产生的 Ticket 过后,在第 5,6 步中与 CAS Server 进行身份合适,以确保 Service Ticket 的合法性。
在该协议中,所有与 CAS 的交互均采用 SSL 协议,确保,ST 和 TGC 的安全性。协议工作过程中会有 2 次重定向的过程,但是 CAS Client 与 CAS Server 之间进行 Ticket 验证的过程对于用户是透明的。
另外,CAS 协议中还提供了 Proxy (代理)模式,以适应更加高级、复杂的应用场景,具体介绍可以参考 CAS 官方网站上的相关文档。
准备工作:
要先在CAS官网下载CAS Server和CAS Client,我使用的分别是cas-server-3.4.11-release.zip和cas-client-3.2.1-release.zip。
CAS Server 是一套基于 Java 实现的服务,该服务以一个 Java Web Application 单独部署在与 servlet2.3 兼容的 Web 服务器上,另外,由于 Client 与 CAS Server 之间的交互采用 Https 协议,因此部署 CAS Server 的服务器还需要支持 SSL 协议。当 SSL 配置成功过后,像普通 Web 应用一样将 CAS Server 部署在服务器上就能正常运行了,不过,在真正使用之前,还需要扩展验证用户的接口。
我使用的是TOMCAT 7.0.23,要先在tomcat上配置好https协议的使用。
配置tomcat的https协议:(方法部分转自网上)
1.使用keytool生成证书库文件
在命令行窗口上执行下列命令:
>keytool -genkey -alias tomcat -keyalg RSA -keysize 1024 -validity 365 -keystore tomcat.keystore
会在当前目录下生成文件tomcat.keystore。记住当时输入的密码(假设为123456)。另外,输入的名字要为服务器所在计算机的ip地址或者域名,如果服务器在本机,就使用localhost,不然客户端反问时会报No name matching localhost found异常。
注:keytool文件是在Java的bin目录下。
2.将生成的tomcat.keystore文件放在TOMCAT/conf下。
3.修改server.xml文件:
去掉下面SSL Connector的注释,修改为如下:
<!-- Define an SSL HTTP/1.1 Connector on port 8443 -->
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="200" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="conf/tomcat.keystore"
keystorePass="123456"/>
参数说明:
clientAuth
如果想要Tomcat为了使用这个socket而要求所有SSL客户出示一个客户证书,置该值为true。
keystoreFile
如果创建的keystore文件不在Tomcat认为的缺省位置(一个在Tomcat运行的home目录下的叫.keystore的文件),则加上该属性。可以指定一个绝对路径或依赖$CATALINA_BASE环境变量的相对路径。
keystorePass
如果使用了一个与Tomcat预期不同的keystore(和证书)密码,则加入该属性。
keystoreType
如果使用了一个PKCS12 keystore,加入该属性。有效值是JKS和PKCS12。
sslProtocol
socket使用的加密/解密协议。如果使用的是Sun的JVM,则不建议改变这个值。据说IBM的1.4.1版的TLS协议的实现和一些流行的浏览器不兼容。这种情况下,使用SSL。
ciphers
此socket允许使用的被逗号分隔的密码列表。缺省情况下,可以使用任何可用的密码。
algorithm
使用的X509算法。缺省为Sun的实现(SunX509)。对于IBM JVMS应该使用ibmX509。对于其它JVM,参考JVM文档取正确的值。
truststoreFile
用来验证客户证书的TrustStore文件。
truststorePass
访问TrustStore使用的密码。缺省值是keystorePass。
truststoreType
如果使用一个不同于正在使用的KeyStore的TrustStore格式,加入该属性。有效值是JKS和PKCS12。
4.重新启动TOMCAT,访问https://localhost:8443
一般情况下打开页面之前会有证书安全警告,选择信任就可以了!
由于相关内容很多,所以要分为几篇文章!接下来请看“CAS配置学习+CAS整合Spring Securtiy配置学习(二)”
- 大小: 19.7 KB
分享到:
相关推荐
本项目结合这三个技术,构建了一个整合的示例,旨在展示如何在SpringBoot应用中实现安全的、基于WebSocket的实时通信。 首先,SpringBoot是由Pivotal团队提供的一个简化Spring应用初始搭建以及开发过程的框架。它...
2. 预配置的邻居发现:IPv6使用邻居发现协议(NDP)来自动配置地址、发现邻近设备和建立邻居关系。NDP的某些功能,如路由器请求和重复地址检测,可能被恶意利用进行DoS(拒绝服务)攻击。通过启用NDP防洪保护和使用...
SpringSecurity+SpringSecurityOauth2集成实现权限框架,Redis分发Token,博客提供了码云下载地址,,博客地址:https://blog.csdn.net/weixin_38061191/article/details/119879556
CCSP学习笔记,CCSP学习笔记,CCSP学习笔记。ccnp 后的努力方向。securtiy
本文基于《International Journal of Enhanced Research in Science Technology & Engineering》的一篇论文进行综述,该论文发表于2014年3月,作者为Ayush Bansal和Sukhwinder Singh,分别来自印度昌迪加尔技术教育...
切换到包含 nginx_ 源的目录,使用所需的选项运行配置脚本,并确保放置一个--add-module标志指向包含摘要模块源的目录: $ cd nginx-1.x.x $ ./configure --add-module=../nginx-http-hsts-master [other ...
未经授权的访问、生物特征认证、监控系统和其他安全措施是保护基础设施不可或缺的一部分。 关键词——云环境; 越权存取; 无意的恶意活动; 生物识别认证; 监控系统、基础设施; 正直。 I. 简介 基于云的架构在当今...
SecureCRT 6.5破解版 SecureCRT 6.5注册机 包含SecureCRT 6.5 64位和32位,SecureCRT 6.5 64位和32位,真实可用啊,哈哈!!
工具内容有完整的CSR生成及对应秘钥保存,使用java.securtiy Signature类
SECURTIY. NONE. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-390. OBJECT-COMPUTER. IBM-390. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FPERSNNL ASSIGN TO PERSNNL. SELECT ...
循C11 Annex K (Bounds-checking interfaces)的标准,选取并实现了常见的内存/字符串操作类的函数,如memcpy_s、strcpy_s等函数。 未来将分析C11 Annex K中的其他标准函数,如果有必要,将在该组织中实现。...
普适安全(Universally Composable Security,简称UC安全)是一个密码协议的概念,由Canetti在2001年提出。UC安全框架下设计的协议具备模块化特点,能够在各种环境下保持安全特性。UC安全协议的核心和基础单元是理想...
- default.asp: 添加 Permalink 显示2.0.b272- upload.asp: 修正用 Gecko 引擎的浏览器对 javascript 的支持问题- register.asp, global.asp, user.asp, login.asp: 更新- s_img.asp: 删除- images/securtiy: 删除- ...
Title: A Practical Guide to Networking and Security in iOS 8 Author: Glenn Fleishman Length: 126 pages Edition: 1 Language: English Publisher: Aperiodical LLC Publication Date: 2015-02-20 ...