CAS SSO 简介
发布日期:2021-06-29 12:51:40
浏览次数:2
分类:技术文章
本文共 4402 字,大约阅读时间需要 14 分钟。
转载地址:
一、SSO (Single Sign-on)原理
SSO 分为Web-SSO和桌面SSO。桌面 SSO 体现在操作系统级别上。Web-SSO体现在客户端,主要特点是: SSO 应用之间使用 Web 协议( 如 HTTPS) ,并且只有一个登录入口。我们所讲的SSO,指 Web SSO 。
- User(多个)
- Web应用(多个)
- SSO认证中心(一个)
SSO 实现模式千奇百怪,但万变不离其宗,包含以下三个原则:
- 所有的登录都在 SSO 认证中心进行。
- SSO 认证中心通过一些方法来告诉 Web 应用当前访问用户究竟是不是通过认证的用户。
- SSO 认证中心和所有的 Web 应用建立一种信任关系。
二、CAS 的基本原理
CAS(Central Authentication Service) 是 Yale 大学发起的构建 Web SSO 的 Java开源项目。
- CAS 的结构体系 1)
CAS Server
CAS Server 负责完成对用户信息的认证,需要单独部署,CAS Server 会处理用户名 / 密码等凭证 (Credentials) 。 2)CAS Client
CAS Client部署在客户端,当有对本地 Web 应用受保护资源的访问请求,并且需要对请求方进行身份认证,重定向到 CAS Server 进行认证。 - CAS 协议 上图是一个基础的 CAS 协议. 1) Client 以过滤器的方式保护 Web 应用的受保护资源,过滤从客户端过来的每一个 Web 请求,同时,CAS Client 会分析 HTTP 请求中是否包请求 Service Ticket( 上图中的 Ticket) . 2)如果没有,则说明该用户是没有经过认证的,CAS Client会重定向用户请求到 CAS Server. 3)*Step 3是用户认证过程,如果用户提供了正确的认证信息,CAS Server 会产生一个随机的 Service Ticket.会向 User 发送一个Ticket granting cookie
(TGC)
*给 User 的浏览器. 4)重定向用户到CAS Client(附带刚才产生的Service Ticket). **5)**CAS Client把Service和TGC传给CAS Server进行用户身份的核实. 6) Server核实了用户的身份,用 Ticket 查到Username,认证通过。 - CAS 如何实现 当用户访问Helloservice2再次被重定向到 CAS Server 的时候, CAS Server 会主动获到这个 TGC cookie ,然后做下面的事情: 1) 如果 User 的持有 TGC 且其还没失效,那么就走基础协议图的 Step4 ,达到了 SSO 的效果。 2) 如果 TGC 失效,那么用户还是要重新认证 ( 走基础协议图的 Step3) 。
三、安全证书配置并实践
下面我们以tomcat 8.0 为例进行说明(这里,我将Server和Client同时放在了同一个Tomcat服务器下)。
软件环境:tomcat 8.0 ant-1.6.5, jdk1.7.0_06 下载cas-server-4.0.0.zip和cas-client3.3.3和MySQL 5.0.16和tomcat 8 CAS之下载地址(包含server和client) 将cas-server-4.0.0.zip解压,并将\cas-server-4.0.0\modules中的cas-server-webapp-4.0.0.war该名为cas.war并将cas.war拷贝到tomcat\webapps下。 有关keytool工具的详细运用见 : 1)我们在tomcat下建立一个keystore文件夹,在此文件夹中生成证书文件,打开命令窗口,进入此目录下,如图: 2)生成服务器端证书,执行完此命令keystore文件夹下多了一个(.keystore)文件,设置的默认密码(changeit)。 命令:keytool -genkey -alias sxsso -keyalg RSA -keystore ./.keystore
3)导出服务器端证书,执行完此命令keystore文件夹下多了一个sxsso.cer文件 命令: keytool -export -alias server -storepass changeit -file server.cer -keystore server.keystore
4)导入服务器端证书,因为是在本地测试所以导入证书到JDK. 命令: keytool -import -keystore "D:\tool\Java\jdk1.8.0_45\jre\lib\security\cacerts" -file ./sxsso.crt -alias sxsso -storepass changeit
此时已经把证书导入到java中的JDK中了。此时登录 时会出现以下画面。 现在就需要我们到tomcat/conf/sever.xml修改找到: 在下面添加
并把
修改为:
输入URL 就会出现以下页面
使用CAS SSO中默认的用户名与密码登录(casuser/Mellon),路径为: D:\tool\apache-tomcat-8.0.21\webapps\cas\WEB-INF\deployerConfigContext.xml 有以下数据: 注:会在所后的blog添加用CAS SOO使用数据库验证验证来用户名、密码验证。 ok.你成功了吗?四、客户端中项目配置
当然,如果只需要验证cas-server是否配置成功是不需要配置这个配置的。这个是配置到你的项目中并且需要添加cas-client.jar。
在要使用CAS的客户端应用里设置(应用时,所有客户端均进行类似配置),我们使用ServletFilter(CAS client里提供的)来实现SSO的检查。 修改${progrem}/WEB-INF/web.xmlCAS Authentication Filter org.jasig.cas.client.authentication.AuthenticationFilter casServerLoginUrl https://sso.rying.com:8443/cas/login serverName http://localhost:8080 CAS Validation Filter org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter casServerUrlPrefix https://sso.rying.com:8443/cas serverName http://localhost:8080 CAS HttpServletRequest Wrapper Filter org.jasig.cas.client.util.HttpServletRequestWrapperFilter CAS Assertion Thread Local Filter org.jasig.cas.client.util.AssertionThreadLocalFilter CAS Authentication Filter /* CAS Validation Filter /* CAS HttpServletRequest Wrapper Filter /* CAS Assertion Thread Local Filter /*
五、CAS 安全性
- TGC/PGT 安全性 TGC 也有自己的存活周期。下面是 CAS 的 applicationContext.xml 中,通过 TimeoutExpirationPolicy来设置 CAS TGC 存活周期的参数,参数默认是 120 分钟,在合适的范围内设置最小值,太短,会影响 SSO 体验,太长,会增加安全性风险。
//单位为:毫秒
- Service Ticket/Proxy Ticket 安全性 设用户拿到 Service Ticket 之后,他请求 helloservice 的过程又被中断了,Service Ticket 就被空置了,事实上,此时, Service Ticket 仍然有效。 CAS 规定Service Ticket 只能存活一定的时间,然后 CAS Server 会让它失效。通过在applicationContext.xml 中配置下面的参数,可以让 Service Ticket 在访问多少次或者多少秒内失效。
//单位:毫秒
该参数在业务应用的条件范围内,越小越安全。
转载地址:https://carlzone.blog.csdn.net/article/details/51697082 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月11日 16时21分08秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JavaScript DOM
2019-04-29
Python 管理程序改进——连接MYSQL
2019-04-29
Python 爬虫
2019-04-29
Python 爬虫-百度风云榜的电影top50
2019-04-29
Python 爬虫-豆瓣影星图片下载
2019-04-29
Excel数据基础操作
2019-04-29
网页端数据库操作界面—主题函数文件
2019-04-29
网页端数据库操作界面-Html页面(1)
2019-04-29
网页端数据库操作界面-Html页面(2)
2019-04-29
网页端数据库操作界面-Html页面(3)
2019-04-29
Excel 高级筛选
2019-04-29
Python爬虫 百度热搜热点
2019-04-29
Python 百度热搜 全页面爬取
2019-04-29
爬取小说——爬取书的地址
2019-04-29
爬取小说——爬取章节地址
2019-04-29
爬取小说——爬取标题和正文
2019-04-29
爬取小说——储存为TXT格式
2019-04-29
爬取小说——主体部分
2019-04-29
Python 窗口化操作
2019-04-29
excel的常用函数(二)
2019-04-29