前端需要了解的 SSO 与 CAS 知识

不管是什么公司,只要产品数量大于一个,那么单点登录势必是绕不过去的一个问题。作为前端程序员,我们对其虽然接触不多,但适当的了解还是必要的。本文就来谈谈单点登录相关的问题。 
前置知识 
了解 SSO,最好具备以下知识。当然,如果不是特别熟,也不影响阅读。

cookie及session 
浏览器同源策略及跨域 
了解登录系统的构成 
什么是 SSO 与 CAS?

SSO

SSO 是英文 Single Sign On 的缩写,翻译过来就是单点登录。顾名思义,它把两个及以上个产品中的用户登录逻辑抽离出来,达到只输入一次用户名密码,就能同时登录多个产品的效果。 
使用 SSO 的优点很明显: 
提升用户体验。就以我厂为例。我厂有两个产品,丁香人才网和丁香园论坛,假如你是我厂用户,肯定无法忍受登录丁香园论坛的时候输入一次用户名密码,登录人才网又要输入一次用户名密码吧? 
避免重复开发。假如你是我厂后端,每天任务都饱和的不行,肯定无法忍受到人才网开发一套登录逻辑,到论坛又开发一套登录逻辑吧? 
提升安全系数 
假如你是我厂运维,发现了一个安全隐患需要紧急修复。你肯定无法忍受给茫茫多的产品后端都发一封邮件,责令修复吧?万一漏了一个呢? 

如果你想学习前端,可以来这个Q群,首先是291,中间是851,最后是189,里面可以学习和交流,也有资料可以下载。
CAS 
SSO 仅仅是一种架构,一种设计,而 CAS 则是实现 SSO 的一种手段。两者是抽象与具体的关系。当然,除了 CAS 之外,实现 SSO 还有其他手段,比如简单的 cookie。CAS (Central Authentication Service)中心授权服务,本身是一个开源协议,分为 1.0 版本和 2.0 版本。1.0 称为基础模式,2.0称为代理模式,适用于存在非 Web 应用之间的单点登录。 
同域 SSO如图,同域 SSO 是最简单的一种情况。此时,两个产品都是在一个域名下,单点登录是很自然的选择。我们来捋一捋步骤,搞清楚这里的步骤是理解后文的基础,千万不要跳过。 
用户访问产品 a,向 后台服务器发送登录请求。 
登录认证成功,服务器把用户的登录信息写入 session。 
服务器为该用户生成一个 cookie,并加入到 response header 中,随着请求返回而写入浏览器。 
该 cookie 的域设定为 dxy.cn。 
下一次,当用户访问同域名的产品 b 时,由于 a 和 b 在同一域名下,也是 dxy.cn,浏览器会自动带上之前的 cookie。此时后台服务器就可以通过该 cookie 来验证登录状态了。 
实际上,这种场景就是最简单最传统的登录操作。虽然我们把产品 a 和 b 人为分开了,但由于它们在同域上,就算看成是同一产品的不同类目也未尝不可。我们没有设置独立的 SSO 服务器,因为业务后台服务器本身就足以承担 SSO 的职能。 
同父域 SSO 
同父域 SSO 是同域 SSO 的简单升级,唯一的不同在于,服务器在返回 cookie 的时候,要把cookie 的 domain 设置为其父域。比如两个产品的地址分别为 a.dxy.cn 和 b.dxy.cn,那么 cookie 的域设置为 dxy.cn 即可。在访问 a 和 b 时,这个 cookie 都能发送到服务器,本质上和同域 SSO 没有区别。 
.跨域 SSO 
可以看到,在上面两种情况下,我们都没有专门设置 SSO 服务器。但是当两个产品不同域时,cookie 无法共享,所以我们必须设置独立的 SSO 服务器了。这个时候,我们就是通过标准的 CAS 方案来实现 SSO 的。 
详解CAS

CAS 1.0 协议定义了一组术语,一组票据,一组接口。 
术语:

Client:用户。 
Server:中心服务器,也是 SSO 中负责单点登录的服务器。 
Service:需要使用单点登录的各个服务,相当于上文中的产品 a/b。 
/login:登录接口,用于登录到中心服务器。 
/logout:登出接口,用于从中心服务器登出。 
/validate:用于验证用户是否登录中心服务器。 
/serviceValidate:用于让各个 service 验证用户是否登录中心服务器。 

时间: 2024-10-24 21:18:41

前端需要了解的 SSO 与 CAS 知识的相关文章

【SSO-CAS】SSO之CAS单点登录实例演示

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为"中国PE第一股",市值超1000亿元.    ----------------------------------------------------------------------------

前端开发工程师和美工掌握的知识的区别

文章描述:前端开发所需掌握的知识. 摘要:很多公司甚至是多数以互联网网站为主要业务的公司都会把"美工"的概念搞混淆,通常这些公司都会把网页设计+网页制作的人员统称为"美工".而一家成熟的互联网公司则会把网站方面的人才规划的比较详细,如UED团队(用户体验设计,英文User Experience Design的缩写),其中详细划分成了"交互设计"."视觉设计"."前端开发"."用户研究".

【SSO-CAS】sso 之 cas 实现的几个问题

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为"中国PE第一股",市值超1000亿元.    ----------------------------------------------------------------------------

WEB前端设计师常用工具集锦_基础知识

下面是我整理和收集的一些前端开发常用的 插件.工具.软件等不为别的,相当于给电脑做个小备份,至于使用方法,以后我会总结,目前的话还是自行google吧. [FireFox插件] 1.  Firefbug     --    页面调式工具 2.  YSlow     --    网页评级工具 3.  pixel Perfect      --    HTML与设计稿对比 4.  CSS Usage     --    CSS使用效率优化工具 5.  Page Speed     --    快速优

web前端知识体系小结(转)

1. 前言 大约在几个月之前,让我看完了<webkit技术内幕>这本书的时候,突然有了一个想法.想把整个web前端开发所需要的知识都之中在一个视图中,形成一个完整的web前端知识体系,目的是想要颠覆人们对于前端只有三大块(html.css.js)的认识--做web前端需要的比这三大块要多得多. 拖了好几个月了,但是由于近期将要参加的某一个活动,我不得不这两天把这个东西整出来.说干就干.上午我就开始在办公室画草图,乱七八糟的在那儿理思路. 大家不要害怕,其实下文中的这个知识框架要比草图中的好看的

前端面试题目搜集

前端面试题目搜集 一.理论知识 1.1.讲讲输入完网址按下回车,到看到网页这个过程中发生了什么 a. 域名解析 b. 发起TCP的3次握手 c. 建立TCP连接后发起http请求 d. 服务器端响应http请求,浏览器得到html代码 e. 浏览器解析html代码,并请求html代码中的资源 f. 浏览器对页面进行渲染呈现给用户 参考<一次完整的HTTP事务是怎样一个过程>   1.2.谈谈你对前端性能优化的理解 a. 请求数量:合并脚本和样式表,CSS Sprites,拆分初始化负载,划分主

观点 | 2017年前端初学者的生存指南

逝者如斯夫,不舍昼夜. 历史在向前发展,前端的"摩尔定律"是每隔18个月难度会上升一次,过去的2016年我们不再回顾,展望2017年,对于初学者想要生存下来,该怎么办?如果你有这个疑问,那么你就得好好阅读一下,我这篇文章了. 数据不准,2017年2月19日搜索,来自拉勾网(吐槽:万年不匹配)和智联招聘. PS:(请原谅我截图了一Angularjs的JD) 看起来行业需求的重点都在各种框架的使用上,其实不然.做为初学者,一定要对前端行业有足够的信心与耐心,你才可能走下去.前端是一个承上启

WEB前端开发想要月薪2W吗?先掌握这些技能

所谓成功是没有捷径的,但是成功是有技巧的,这里面的技巧,就取决于你的专业度,程序员与程序员之间的薪资待遇,就在于你掌握技术的程度,今天小编分享7个CSS技巧,想拿高薪,一定要掌握今天分享的重点哦~ web前端开发工程师目前来讲是一个热门职位,但是要成为一个合格的web前端开发工程师,需要掌握的知识可不少,这就简单的讲讲. 大致的来讲,web前端开发工程师需要掌握的知识有:HTML.CSS.JAVASCRIPT.XML.JSON.服务器脚本语言(PHP,ASP,.NET,JSP等等).jquery

CAS Client集群环境的问题及解决方案

[原创申明:文章为原创,欢迎非盈利性转载,但转载必须注明来源] 之前写过一篇文章,介绍单点登录的基本原理.这篇文章重点介绍开源单点登录系统CAS的登录和注销的实现方法.并结合实际工作中碰到的问题,探讨在集群环境中应用单点登录可能会面临的问题.这篇文章在上一篇的基础上,增加了第四部分,最终的解决方案. 1 单点登录的过程 为了描述方便,假设有如下一个单点登录系统.一套CASServer,两套CAS Client系统.为了描述的方便,省略CAS Server调用用户系统完成登录,以及CASClien