CAS SSO bug fix
来源:互联网 发布:mac类似powerdesigner 编辑:程序博客网 时间:2024/06/05 19:02
前言
单点登录(Single Sign On , 简称 SSO)是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。Yale大学CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架.
使用该框架出现下面两个bug:
- logout需要刷新才能自动跳转到login
- ST(Service ticket)和URL不符
Cookie和Session
这篇博客不错
cookie浏览器,session服务器,session安全存敏感,cookie长效不安全
CAS
这篇博客不错
术语
CAS的核心就是其Ticket,及其在Ticket之上的一系列处理操作。CAS的主要票据有TGT、ST、PGT、PGTIOU、PT,其中TGT、ST是CAS1.0(基础模式)协议中就有的票据,PGT、PGTIOU、PT是CAS2.0(代理模式)协议中有的票据。只关心CAS1.0
TGT(Ticket Grangting Ticket)
sever存放的session
TGC (Ticket-granting cookie)
broswer存放的cookie
ST(ServiceTicket)
Cas20ProxyReceivingTicketValidationFilter验证
之间的关系
服务器端存放Session(TGC.A->TGT1(cookie,userinfo),TGC.B->TGT2,…)
浏览器端存放Cookie(TGC(sessionid),TGC2,…)
SSO流程
没有看源码,通过理解博客内容所画,等待看过源码后发现又没有错误。
流程中注意的地方
- 配置单点登出,一定要按照SingleSignOutHttpSessionListener->SingleSignOutFilter->AuthenticationFilter->Cas20ProxyReceivingTicketValidationFilter->HttpServletRequestWrapperFilter->AssertionThreadLocalFilter的顺序
- AuthenticationFilter和Cas20ProxyReceivingTicketValidationFilter在认证或验证ST通过后可以通过设置中的serverName、service来配置重定向地址,区别是serverName可以带参数而service是固定地址。
跨域问题
什么是跨域
这篇博客不错
JavaScript同源策略的限制
解决
前台不用深入,几个关键点如下:
1. 因为是JS的问题,后台访问没有问题
2. 新版支持添加header,支持跨域。前提是response有这个头(可以后台加filter人为添加),然后ajax用指定方法访问
缓存问题
这个回答不错
这个回答还行
总结
针对前言中的两个bug:
1.logout
- 原来是添加了id=logout的点击事件,事件中ajax 先访问logout的servlet,servlet只清理本地缓存,然后js中访问CASlogout地址。为防止跨域问题,改为直接跳转(href)logout,然后在servlet中sendRedirect到CAS的logout。
- 经过验证,CAS顺序等配置没有问题,最后返现是chrome的缓存问题,尽管我指定了index.html中的head不缓存,但是chrome还是缓存,所以只能为CAS logout重定向地址指向如下:
String location = "https://cas.zyxing.com/caso/logout?service=http://flightlivewatch.flight.zyxing.com/index.html?timestamp=" + timestamp;
2.验证ST不符报错
* 可以设置不报错
* 根本原因是使用了短域名,导致存储的TGT和访问地址不一致,导致报错
- CAS SSO bug fix
- cas sso
- fix bug
- fix bug
- 【cas】sso和cas概述
- 使用cas实现sso
- liferay+cas sso 配置
- CAS SSO结合ASP
- cas ldap sso
- cas ldap sso
- cas ldap sso
- Liferay SSO CAS 集成
- sso和cas
- 使用CAS实现SSO.
- CAS SSO 配置
- CAS-SSO系统架构
- CAS单点登录(SSO)
- CAS SSO 原理
- iOS 多线程编程<七、GCD单例宏>
- IOS开发用户界面UI编程视频教程
- C++11重要特性:lambda+function
- dual camera同时preview
- websocket 链接服务器报 302 错误解决方法
- CAS SSO bug fix
- DAY80_IDA 16PLUGIN PONCE
- Android 与 HTML + Js的交互
- 【Android】Android开发之XML文件Element XXXX must be declared的解决方法
- makefile总结
- cocoapad的配置
- 在线学习算法FTRL
- Linux分配swap空间
- onclick中字符串转义,函数调用的问题