大家好,又见面了,我是你们的朋友全栈君。
文章目录
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
注意要点:
现在博客简单介绍一下,CAS Server简单部署实现,CAS是一款开源框架,目前应用比较广泛。下面简单介绍一下: cas开源到github上,不过只有几个版本有cas release服务端,其它大部分版本都只有source源码而已,所以其它版本都需要自己编译,不想自己编译的可以下载V4.0.0版本的。 https://github.com/apereo/cas/releases/tag/v4.0.0
下载cas server之后,我们就可以简单部署一下,中间件可以用Tomcat cas的安全机制是依靠SSL实现的,所以一般的http非安全链接不支持的,虽然是这么说,不过学习练习的话,也可以去掉https要求,下面介绍说一下:
可以先将cas-server-4.0.0-release.zip解压到Tomcat的webapp目录下面,然后需要修改一个配置文件 (1)、先修改一下cas-server-4.0.0-release的WEB-INF下面的deployerConfigContext.xml 修改前:
修改后,PS:加上p:requireSecure=“false”
(2)、修改WEB-INF下面的spring-configuration文件夹下面的ticketGrantingTicketCookieGenerator.xml 修改前:
修改后,PS:改为p:cookieSecure=“false”
(3)、修改WEB-INF下面的spring-configuration文件夹下面的warnCookieGenerator.xml 修改前:
修改后,PS:改为p:cookieSecure=“false”
(4)、修改CAS默认登录jsp页面 可以注释WEB-INFviewjspdefault䗊sLoginView.jsp页面如下代码
去掉Https支持要求后,就可以通过http的链接登录cas server了,用户名是casuser,密码是Mellon PS:可以在deployerConfigContext.xml里看到配置,正规项目是实现jdbc支持
单点登录
单点登出
参考教程:
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133724.html原文链接:https://javaforall.cn
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/2780.html