Apereo CAS实现单点登录(sso)

一什么是单点登录(sso)

用户一次登录可以访问所有互相信任的应用系统

传统的session无法在系统分别部署到不同的服务器中使用

二什么是CAS

是实现SSO单点登录的框架
点击进入CAS官网:

特点

  1. 开源企业级单点登录解决方案
  2. CAS Service(CAS服务端): 是需要独立部署的Web应用
  3. CAS Client(CAS客户端): 支持非常多的客户端(java,PHP…)

三CAS Server

前置准备 jdk,tomcat的安装和环境变量的配置

3.1下载与部署cas的war包

链接:百度网盘 请输入提取码
提取码:6nzn

下载cas.war后将其放入到tomcat的安装目录中的 apache-tomcat-8.5.72\webapps文件夹下:
**加粗样式

3.2启动tomcat查看cas Server是否安装成功

进入tomcat的安装目录中bin文件夹下
Windows系统双击 startup.bat
在这里插入图片描述

自动弹出黑窗口:
在这里插入图片描述
第一次加载有的小伙伴可能加载的慢一些,
注意不要对黑窗口 敲击回车 否则会暂停窗口
出现READY表示加载完成
在这里插入图片描述

浏览器输入 http://localhost:8080/cas/login

在这里插入图片描述
回到tomcat的安装目录我们会发现webapps文件夹下多了个cas文件夹
在这里插入图片描述

进入tomcat的安装目录中webapps\cas\WEB-INF\classes
打开application.properties文件
在这里插入图片描述

在最后一行找到我们需要的用户名和密码
用户名 casuser
密码 Mellon
在这里插入图片描述

回到浏览器输入后登陆成功!
在这里插入图片描述

3.3CAS Server其它功能演示

在tomcat的安装目录中webapps\cas\WEB-INF\classes\webflow中有loginlogout文件夹
在这里插入图片描述

我们大胆猜测
logout文件夹是管理登出功能的
浏览器输入 http://localhost:8080/cas/logout
在这里插入图片描述

回过头来看webapps\cas\WEB-INF\classes\application.properties文件
在这里插入图片描述

四CAS 客户端

点击下载我的源码
SpringBoot2+SpringSecurity+CAS: SpringBoot2+SpringSecurity+CAS实现单点登录的客户端
这里是
SpringBoot2+SpringSecurity+CAS 安全认证整合项目

启动后访问http://localhost:7200/
发现浏览器自动跳转到
http://127.0.0.1:8080/cas/login?service=http%3A%2F%2Flocalhost%3A7200%2Flogin
但是报了个错误
在这里插入图片描述
解决方法:
在tomcat的安装目录中cas\WEB-INF\classes\application.properties添加如下

<span style="color:#333333"><span style="background-color:#f9f5e9"><code>cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true
</code></span></span>

重启CAS服务端和客户端


发现报出如下错误
在这里插入图片描述
解决方法
cas服务4后服务端默认是https协议的配置文件,而我们浏览器是http的需要修改它
路径cas\WEB-INF\classes\services\HTTPSandIMAPS-10000001.json

<span style="color:#333333"><span style="background-color:#f9f5e9"><code>        {
          "@class" : "org.apereo.cas.services.RegexRegisteredService",
          // "serviceId" : "^(https|imaps)://.*",
          "serviceId" : "^(https|http|imaps)://.*",
          "name" : "HTTPS and IMAPS",
          "id" : 10000001,
          "description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.",
          "evaluationOrder" : 10000
        }       
</code></span></span>

重启CAS服务端和客户端


在这里插入图片描述
输入用户名密码
用户名 casuser
密码 Mellon

在这里插入图片描述


输入http://localhost:7200/hello
在这里插入图片描述


登出http://localhost:7200/logout
在这里插入图片描述


登出后输入http://localhost:7200/hello
发现自动跳转到登录页面
在这里插入图片描述

五CAS 认证流程

在开始前先了解几个名词
user用户
Browser浏览器
CAS Server 服务器
Protected App 应用1
Protected App 应用2
TGC 存放用户身份认证凭证的cookie,在浏览器和CAS Server间通讯时使用,是CAS Server用来明确用户身份的凭证。TGT封装了TGC值以及此Cookie值对应的用户信息.
TGT:TGT对象的ID就是TGC的值,在服务器端,通过TGC查询TGT。
ST:service ticket,CAS为用户签发的访问某一service的票据,ST是TGT签发的。
全局会话:未完
局部会话: 未完

在这里插入图片描述

解释一下这张官网流程图

  1. 用户通过浏览器访问应用1, 应用1发现用户未登录,返回302,并携带上一个service参数,让用户到CAS Server上登录
  2. 浏览器自动重定向到CAS Server上, CAS Server获取用户Cookie中携带的TGC,去校验用户是否登录
    如果已经登录,则完成身份验证(此时CAS Server可以根据用户的TGC找TGT,进而获取用户信息)
    如果未登录,则重定向到CAS Server的登录页面,用户输入用户名/密码,CAS Server生成TGT,根据TGT签发一个ST,将TGC放在用户的cookie中,完成身份校验
  3. CAS Server 完成身份校验之后,会将 ST 拼接在 service 中,返回 302,浏览器将首先将 TGC 存在 Cookie 中,然后根据 302 的指示,携带上 ST 重定向到应用1。
  4. 应用1 收到浏览器传来的 ST 之后,拿去 CAS Server 上校验,去判断用户的登录状态,如果用户登录合法,CAS Server 就会返回用户信息给 应用1。
  5. 浏览器再去访问应用2,应用2 发现用户未登录,重定向到 CAS Server。
  6. CAS Server 发现此时用户实际上已经登录了,于是又重定向回应用2,同时携带上 ST。
  7. 应用2 拿着 ST 去 CAS Server 上校验,获取用户的登录信息

六登出

七与token的区别

CAS Server需要存储TGC
而 Token不存储在服务端
2.Token支持跨域单点登录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值