(一)SSO之CAS框架通俗原理

news/2024/5/17 18:36:54
SSO统一验证

        SSO(Single Sign On ),SSO统一验证的目的是为了让多个系统使用统一登录入口,用户只需要登录其中一个系统,在cookie时间内便可以不用登录,就直接进入系统了。

CAS简介

         CAS是SSO的一个框架,全称为:Central Authentication Service,是一款不错的针对web应用的单点登录框架,包括java,。net,PHP,Prel,Apache,uPortal,Ruby等。

        直接上原理图,如下图所示:


这幅图画的是很不错的,思前想后,还是直接搬过来了,我们以第一次登录和不是第一次登录为分界线讲述。

       首先需要明白几个道理,什么是服务器,什么是客户端?

       服务器,从第一次听到这个字眼到现在一直让我们感到十分神秘的感觉,一种高高在上的感觉,在天上的感觉。而实际上服务器和我们的这种感觉恰好相反,服务器,就是为别人提供服务的,百度百科是这样说的,server是指一个管理资源并为用户提供服务的计算机。说白了服务器就是一台计算机,只不过这台计算机可以给别的应用或者计算机提供服务,就像餐厅中服务员为顾客服务一样,而一台这样的计算机,人们把他拟人化,称之为服务器。

        而服务员是相对于顾客而言的,没有顾客服务员也就不再是服务员,而顾客也可能是其他的服务员,计算机中也是如此,服务器是相对于客户端而言的。

         在上图中,我们首先看到的是CAS Client和CAS Server,这就是两个相对的概念。如果没有这个框架,我们系统登录自己系统的页面,那Web Browser就是客户端,而支持系统的后台部署到的那台机器就属于服务器了。当加上CAS的时候,我们就又上升了一层,因为CAS Server是为CAS client服务的。

        在这里CAS Client包括CAS 自己的客户端(也就是一个java程序CAS Client jar包)和我们要使用CAS单点登录的项目,他们放在一起组成了CAS Client,而CAS Server 是对输入的用户名和密码进行不同方式的验证。

第一次登录系统,使用CAS流程

        用户打开浏览器,通过地址第一次请求受到保护的资源,CAS客户端会把请求自动的重定向到CAS服务器端,CAS服务器端发现没有证据,就直接把CAS server的登录界面转到浏览器,呈现给用户。此时,用户输入用户名和密码之后,点击登录按钮,请求验证,CAS客户端同样重定向到CAS服务器,发现有会话标识,开始进行验证,验证失败,则浏览器中呈现失败的信息。验证成功,会把用户名和密码放到session中,并添加一个证据,跳转到系统的主界面。

 

       第二次请求自己的系统,CAS流程

当用户请求自己的系统,会直接请求到CAS的登陆页面, 然后CAS server端进行判断, 发现有session 和证据, 就直接转到了系统主界面。

          

       我们这样做的话,只能使用CAS自己的默认的登录界面,且各种应用使用的是统一登录界面,这样很不人性化。那可以不可以让不同的应用有自己不同的登录界面,但都记性同一个CAS验证呢?下一篇,不同应用自定义自己的CAS登陆页面。


http://www.niftyadmin.cn/n/3484062.html

相关文章

Node.js IP 库引擎 lib-qqwry v1.3.0 发布,支持命令行下使用

lib-qqwry lib-qqwry是一个高效纯真IP库(qqwry.dat)引擎。 安装 npm i lib-qqwry使用 cli (v1.3.0) 从1.3版本开始支持命令模式, 你可以用把lib-qqwry安装到全局来使用; qqwry search <ip> [ips...] 查询IP/IP段qqwry find <keyword> [keyword...] 反查IP段qqwry …

(二)SSO之CAS框架单点退出,自定义退出界面

用CAS的退出,只能使用它自己的那个退出界面,如果有这样的要求, 要求退出后自动跳转到登录界面, 该如何做呢?下面这篇文章实现了退出后可以自定义跳转界面. 用了CAS,发现退出真是个麻烦事&#xff0c;退出后跳转到了CAS的注销页面&#xff0c;而且不关闭浏览器的话&#xff0c;…

头条、快手,那些我曾经错过的暴富机会

本文首发于微信公共号&#xff1a; 中产之路 一位北京阿里的朋友M君到杭州出差&#xff0c;前几天一块吃饭&#xff0c;15-16年间&#xff0c;我们都在猎豹移动&#xff0c;是一个大组的同事兼饭友。聊了很多事情&#xff0c;一些共同认识的人和事&#xff0c;各自的行业动态等…

引入外部字体

在页面引入外部字体的方法style: 定义字体名字 font-face {font-family: MissYua;src: url("./css/fonts/MissYuan.woff") format(woff); } 类名引用 .environment { font-family: MissYua;font-size:64px;color:#005ead; } 标签复制代码标签<div class"env…

linux test

some test 1.在登录Linux时&#xff0c;一个具有唯一进程ID号的shell将被调用&#xff0c;这个ID是什么(b) A.NID B.PID C.UID C.CID2.下面那个用户存放用户密码信息(b) A./boot B./etc C./var D./dev3.用于自动补全功能时&#xff0c;输入命令或文件的前1个或后几个字母按什么…

使用RSA进行信息加密解密的WebService示例

按&#xff1a;以下文字涉及RSA对WebService传递的数据的加密解密&#xff0c;如果您已经熟知RSA或是有其它更好的方法请不要往下看以免浪费时间.WebService采用的协议是SOAP&#xff0c;它基于HTTP&#xff0c;而HTTP是明文方式&#xff0c;也就是说&#xff0c;采用WebServic…

Redis/------源码编译安装

1.下载解压 2.make 3 进入SRC ./redis-server 出现画面标识成功 4 下载 https://github.com/redis/hiredis/releases 5解压进入 make -j 6 make install转载于:https://www.cnblogs.com/Gupq/p/10540966.html

JavaScript中事件委托(事件代理)详解

在JavaScript的事件中,存在事件委托(事件代理),那么什么是事件委托呢? 事件委托在生活中的例子: 有三个同事预计会在周一收到快递。为签收快递&#xff0c;有两种办法&#xff1a;一是三个人在公司门口等快递&#xff1b;二是委托给前台MM代为签收。现实当中&#xff0c;我们大…