麻烦各位了,有以下问题:
CAS 是通过 TGT(Ticket Granting Ticket) 来获取 ST(Service Ticket) ,通过 ST 来访问服务。网上说配置好后。
CAS是基于agent的。一次完整的sso过程为
1.用户第一次打开系统A的页面
2.系统A发现当前用户没有登录
3.系统将登录过程委托给本地的agent,比如CAS的java client或者web client
4.本地agent将页面转向给sso系统,并且生成一个随机的token
5.用户在sso系统上输入账号密码,登录成功
6.sso系统调用系统A上agent的一个url,将账号信息加密发送回A
7.该agent通过生成的token解密账号信息,传送到系统A内部。
8.系统A接收到该账号随后进行授权操作。
如果用户打开系统B页面,而该系统也运行同一个SSO的agent,那么过程同上面类似,只是跳过第5步。这时用户浏览器都是处于SSO系统所在域,所以可以直接将以前用户的账号信息发回。
------------------------------
不是很明白,用户先访问A后,再本地访问访问B的时候,系统B收到什么信息可以确认改用户访问过A!系统A与系统B的域名不一样,不会是cookie,那是什么?在网上看了看,下面一段
上图是一个最基础的 CAS 协议, CAS Client 以 Filter 方式保护 Web 应用的受保护资源,过滤从客户端过来的每一个 Web 请求,同时, CAS Client 会分析 HTTP 请求中是否包请求 Service Ticket( 上图中的 Ticket) ,如果没有,则说明该用户是没有经过认证的,于是, CAS Client 会重定向用户请求到 CAS Server ( Step 2 )。 Step 3 是用户认证过程,如果用户提供了正确的 Credentials , CAS Server 会产生一个随机的 Service Ticket ,然后,缓存该 Ticket ,并且重定向用户到 CAS Client (附带刚才产生的 Service Ticket ), Service Ticket 是不可以伪造的,最后, Step 5 和 Step6 是 CAS Client 和 CAS Server 之间完成了一个对用户的身份核实,用 Ticket 查到 Username ,因为 Ticket 是 CAS Server 产生的,因此,所以 CAS Server 的判断是毋庸置疑的。
-----------------
CAS Client 会分析 HTTP 请求中是否包请求 Service Ticket,这个st 是怎么放到http请求中去的?网上那些例子好像直接输入一个url,不带参数的,也有单点登录效果。
问题补充:
7.原理剖析
Yale CAS使用了Ticket Granting Cookie (简称TGC)去作为获取Service Ticket(简称ST)的凭据,这个TGC 是保存在客户端的cookie,即当第2次被其他CAS Client重定向的时候,CAS Server实际上已经从用户的Cookie中抓取到TGC,然后知道TGC对应的用户,因此避免了再次登录,如果CAS Server抓取不到TGC,则用户需要登陆。
众所周知,cookie是不能跨域的。但是CAS能够做abc.com和xyz.com的sso,因为CAS Server缓存了所有的ticket,所以Client无需共享cookies。
------------------
是不是这个CAS server 也可以通过http访问的
应用场景是不是这样 :一个应用 是 domain1.com一个应用是domain2.com cas server 的 域名 是 domain.com ,所有对 domain1和domain2 的请求都会转发到domain.com,没有登录的话,在domain.com登陆,设置的cookie TGC的域是doamin.com,以后所有对domain1和domain2的请求都会转发到domain.com,也就是CAS server ,这个时候便可以获得这个cookie TGC进行验证。
是不是这样?
问题补充:
呵呵 谢谢
我先前不清楚的地方就是 我觉得先登录A后,再进入B时候,必须携带一个标志,才能证明这个用户先前已经登陆了,而A 与B的域不同,进入B的时候不能拿到cookie的,原来都会转发到一个统一的域拿到这个cookie,也就是标志,而这个cookie也是通过cas server进行设置的,cas server是可以通过http访问的,所以可以在浏览器下设置这个cookie。当然也可以在登录完后在A ,B各自的域设置cookie。
那这种模式,我也可以自己实现 ,不用cas了?? 好像配置cas的时候有什么key的 是用来干什么的,加密信息吗?加密什么信息?谢谢 我没有配置过,之前在做一个单点登录的时候碰到问题就百度到了 cas 呵呵
相关推荐
主要介绍了springboot跨域问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Apereo Cas支持跨域请求的相关jar包 cors-filter-1.7.0.wso2v1.jar java-property-utils-1.9.jar
基于springmvc+maven+webservce+memecached 单点登陆实现,实现完全跨域、单点退出
主要介绍了vue+springboot前后端分离实现单点登录跨域问题的解决方法,需要的朋友可以参考下
主要介绍了详解iframe跨域的几种常用方法(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
JEECG BPM 单点登录说明文档(kisso集成),已经在项目中使用。
sso服务端需要的模块如下cas 4.1.x版本[为什么不用4.2.x,看了一下使用gradle,我eclipse只是安装了maven,不想折腾gradle,毕竟Javaweb项目maven居多,android项目 AS默认gradle]: cas-server-core //核心模块 cas-...
CAS Micro Central Authentication Service based nodejs and mongodb. 待更新 基于nodejs、mongodb的微型CAS系统 说明 由于公司会员系统数据库在阿里云的MySql上,业务系统使用过多,不方便迁移到mongodb,所以在单...
Java 分布式项(SSM、分布式Dubbo、全文检索Solr、Vue、Zookeeper、文件系统FastDFS、缓存Redis、单点登录CAS,权限控制Spring Security,跨域CORS) 技术选型 ...跨域问题解决方案 CORS 二维码生成
在平台开发过程中,项目分为前台(frontend)www.xxx.com和后台(backend) yun.xxx.com两部分,绑定两个域名, 我们知道在没有...//跨域session域名配置,获取当前主机名 $host_array = explode('.', $_SERVER[HTTP_HOST]
一同事求援:后台系统的登录成功了,但不能成功登进系统,仍然跳转到登录页,但同一套代码另一个环境却没有问题。 背景 经了解,他对同一个项目使用tomcat部署了两个环境,一个在开发服务器上,一个在他本机,两个...
dubbox springboot 消息中间件 solr CAS 缓存策略 跨域解决方案
返回token信息:子系统会使用JSONP跨域访问此接口获取token信息 各个业务子系统: JSONP跨域获取UC中的token信息并存到自己域名下的cookies中 业务接口会首先在UC中进行token的鉴权 例子 UC系统: localhost:8080/uc/...
但是有一个限制,那两台部署应用(demo1、demo2)的 机器的域名需要相同,这在后面的章节中会解释到cookie和domain的关系以及如何制作跨域的WEB-SSO 解压缩SSOAuth.zip文件,在/WEB-INF/下的web.xml中请修改...
这个文档是经过我将近两个星期的研究,证实了其中文档的真实性和可用性,只要你跟着文档里面的步骤配置和实施,绝对实现cas单点登录(sso),包括跨域访问cas
freemarker 单点登录:cas 权限管理:SpringSecurity, 跨域:cros 支付:微信扫描 短信验证:阿里大于 密码加密:BCrypt 富文本:KindEditor 事务:声明式事务 任务调度:spring task,有问题请留言
本套视频,详解讲解了两套SSO解决方案. 1、基于Cookie跨域特性,实现SSO方案 2、使用第三方框架CAS,实现SSO方案
比如说浏览器打开了一个单页面(SPA)应用,过了一段时间token(或者session)过期了,这个时候页面上发起 Ajax请求之后,后端返回302状态码跳转到login页面。 我这是使用的是 Vue + axios ,发现 axios 无法拦截到 ...
01分布式框架-Dubbox 02品牌管理 03规格及模板管理 04安全框架与商家入驻审核 ...15单点登录解决方案CAS 16购物车解决方案 17跨域解决方案与提交订单 18微信扫码支付 19秒杀解决方案 20品有购物系统业务分析
使用spring-jms 负载均衡:nginx 搜索:solr集群(solrCloud),配合zookeeper搭建, 使用spring-data-solor 缓存:redis集群,使用spring-data-redis 图片存储:fastDFS集群 网页静态化:freemarker 单点登录:cas ...