当前位置:网站首页 > 技术博客 > 正文

cas单点退出



文章目录

1.1 单点登录定义

单点登录(Single sign on),英文名称缩写SSO,SSO的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统。也就是说只要登录一次单体系统就可以。

1.2 单点登录角色

单点登录一般包括下面三种角色:

①用户(多个);

②认证中心(一个);

③Web应用(多个)。

PS:这里所说的web应用可以理解为SSO Client,认证中心可以说是SSO Server。

1.3 单点登录分类

因为http协议是无状态的协议,所以要保持登录状态,必须要存储登录信息,按照存储方式,单点登录实现方式主要可以分为两种。

2.1 CAS简单定义

CAS(Center Authentication Service)是耶鲁大学研究的一款开源的单点登录项目,主要为web项目提供单点登录实现,属于Web SSO

2.2 CAS体系结构

CAS体系结构分为CAS Server和CAS Client。

CAS Server就是Cas开源的,需要去github下载,然后进行修改;Cas Client

可以是App或者web端的或者PC端,CAS支持多种开发语言,java、php、C#等等

PS:图来自官网,这里简单介绍一下,从图可以看出,CAS支持多种方式的认证,一种是LDAP的、比较常见的数据库Database的JDBC,还有Active Directory等等;支持的协议有Custom Protocol 、 CAS 、 OAuth 、 OpenID 、 RESTful API 、 SAML1.1 、 SAML2.0 等

2.3 CAS原理

下面给出一张来自CAS官方的图片

CAS登录等系统分为CAS Server和CAS Client,下面,我根据我的理解稍微解释一下:

1、用户访问CAS Client请求资源

2、客户端程序做了重定向,重定向到CAS Server

3、CAS Server会对请求做认证,验证是否有TGC(Ticket Granted Cookie,有TGC说明已经登录过,不需要再登录,没有就返回登录页面

4、认证通过后会生成一个Service Ticket返回Cas Client,客户端进行Ticket缓存,一般放在Cookie里,我们称之为TGC(Ticket Granted Cookie)

5、然后Cas Client就带着Ticket再次访问Cas Server,CAS Server进行Ticket验证

6、CAS Server对Ticket进行验证,通过就返回用户信息,用户拿到信息后就可以登录

看到这个过程,我们大概就能理解CAS是怎么实现的,看起来过程挺多的,不过这些过程都是CAS在后台做的。CAS Service和CAS Client通讯基于HttpUrlConnection

注意要点:

3.1 CAS支持Http登录配置

CAS默认是要https的链接才能登录的,不过学习的话是可以先驱动https限制,本博客介绍的是基于Cas4.2.7的,之前改过4.0的,详情见

Cas4.2.7和4.0的修改是不一样的,Cas4.2.7版本需要自己编译,是基于Gradle的,不是基于Maven的,觉得麻烦可以下载4.0,因为4.0版本有提供war包,不需要自己编译,下面介绍一下4.2.7版本,怎么支持http登录

需要修改cas4.2.7的cas-server-webapp/WEB-INF/cas.properties,全都改为非安全的

cas-server-webapp/resources/service/HTTPSandIMAPS-.json原来的

加上http

注释cas-server-webapp/WEB-INF/view/jsp/default/ui/casLoginView.jsp页面中校验是否是HTTPS协议的标签块

然后登录就没非安全提示了

3.2 CAS服务端部署运行

然后将war包丢在Tomcat的webapp里,部署启动,默认账号密码casuser/Mellon,cas4.2.7的账号密码是写在cas.properties里的,这个和4.0的不一样

登录成功,当然在项目中,肯定不能这样做,这个需要我们配置jdbc或者加上权限校验等等

单点登出,链接是http://127.0.0.1:8080/cas/logout

本博客介绍一下基于SpringBoot的Cas客户端接入,数据库采用mysql,权限控制采用Shiro

maven配置,加上Shiro和CAS的相关jar:

CAS和Shiro的相关版本

加上Shiro和cas相关jar

新建一个环境类,保存cas的一些配置链接:

ShiroCas配置类:

自定义的CasRealm:

上面例子是比较麻烦的,我们要接入客户端可以常用第三方的starter lib来对接

yaml配置:

加个Springboot配置类:

  • 上一篇: windows任务栏上的内容
  • 下一篇: 内连接结果
  • 版权声明


    相关文章:

  • windows任务栏上的内容2025-03-08 12:30:05
  • js connection2025-03-08 12:30:05
  • 弹性盒子样式2025-03-08 12:30:05
  • py文件是啥2025-03-08 12:30:05
  • 微信小程序源码平台2025-03-08 12:30:05
  • 内连接结果2025-03-08 12:30:05
  • 同步 异步 区别2025-03-08 12:30:05
  • 二叉树的遍历口诀2025-03-08 12:30:05
  • springboot配置文件yml和properties区别2025-03-08 12:30:05
  • js事件种类2025-03-08 12:30:05