您现在的位置是:网站首页> 内容页

CAS单点登录原理简单介绍

  • 威廉希尔中国官网
  • 2019-03-07
  • 331人已阅读
简介1.SSO简介1.1单点登录定义单点登录(Singlesignon),英文名称缩写SSO,SSO的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受

1. SSO简介

1.1 单点登录定义

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

1.2 单点登录角色

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

①用户(多个);

②认证中心(一个);

③Web应用(多个)。

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

2. CAS简介

2.1 CAS简单定义

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

2.2 CAS体系结构

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

PS:图来自官网

2.3 CAS原理

下面给出一张来自CAS官方的图片CAS登录等系统分为CAS Server和CAS Client,下面,我根据我的理解稍微解释一下:

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

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

3、CAS Server会对请求做认证

4、认证通过后会生成一个Ticket返回Cas Client

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

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

看到这个过程,我们大概就能理解CAS是怎么实现的,看起来过程挺多的,不过这些过程都是CAS在后台做的

CAS单点登录

现在博客简单介绍一下,CAS Server简单部署实现,CAS是一款开源框架,目前应用比较广泛。下面简单介绍一下:cas开源到github上,不过只有几个版本有cas release服务端,其它大部分版本都只有source源码而已,所以其它版本都需要自己编译,不想自己编译的可以下载V4.0.0版本的。https://github.com/apereo/cas/releases/tag/v4.0.0

下载cas server之后,我们就可以简单部署一下,中间件可以用Tomcatcas的安全机制是依靠SSL实现的,所以一般的http非安全链接不支持的,虽然是这么说,不过学习练习的话,也可以去掉https要求,下面介绍说一下:

可以先将cas-server-4.0.0-release.zip解压到Tomcat的webapp目录下面,然后需要修改一个配置文件(1)、先修改一下cas-server-4.0.0-release的WEB-INF下面的deployerConfigContext.xml修改前:

<!-- Required for proxy ticket mechanism. --> <bean id="proxyAuthenticationHandler" p:httpClient-ref="httpClient" />

修改后,PS:加上p:requireSecure="false"

<bean id="proxyAuthenticationHandler" p:httpClient-ref="httpClient" p:requireSecure="false"/></code>

(2)、修改WEB-INF下面的spring-configuration文件夹下面的ticketGrantingTicketCookieGenerator.xml修改前:

<bean id="ticketGrantingTicketCookieGenerator" p:cookieSecure="true" p:cookieMaxAge="-1" p:cookieName="CASTGC" p:cookiePath="/cas" />

修改后,PS:改为p:cookieSecure="false"

<bean id="ticketGrantingTicketCookieGenerator" p:cookieSecure="false" p:cookieMaxAge="-1" p:cookieName="CASTGC" p:cookiePath="/cas" />

(3)、修改WEB-INF下面的spring-configuration文件夹下面的warnCookieGenerator.xml修改前:

<bean id="warnCookieGenerator" p:cookieSecure="true" p:cookieMaxAge="-1" p:cookieName="CASPRIVACY" p:cookiePath="/cas" />

修改后,PS:改为p:cookieSecure="false"

<bean id="warnCookieGenerator" p:cookieSecure="false" p:cookieMaxAge="-1" p:cookieName="CASPRIVACY" p:cookiePath="/cas" />

(4)、修改CAS默认登录jsp页面可以注释WEB-INFviewjspdefaultuicasLoginView.jsp页面如下代码

<c:if test="${not pageContext.request.secure}"> <div id="msg" > <h2>Non-secure Connection</h2> <p>You are currently accessing CAS over a non-secure connection. Single Sign On WILL NOT WORK. In order to have single sign on work, you MUST log in over HTTPS.</p> </div></c:if>

去掉Https支持要求后,就可以通过http的链接登录cas server了,用户名是casuser,密码是MellonPS:可以在deployerConfigContext.xml里看到配置,正规项目是实现jdbc支持

<bean id="primaryAuthenticationHandler" > <property name="users"> <map> <entry key="casuser" value="Mellon"/> </map> </property> </bean>

登录成功

待续...,PS:找时间继续写...

附录

PS:参考学习教程

单点登录实现方式:单点登录的三种实现方式

SpringBoot集成CasSpringBoot集成CASSpring Boot 集成Shiro和CAS基于Spring Boot的单点登录springboot + shiro + cas4.2.7 实战

CAS单点登录教程:Cas专题文章列表测试认证方式搭建CASSSO之单点登录详细搭建教程CAS实现SSO单点登录原理使用 CAS 在 Tomcat 中实现单点登录

文章评论

Top