单点登录系统(SSO)之CAS(中央认证服务)

SSO(Single Sign On)单点登录系统,是在多个系统中值要求只要登录一次,就可以用已登录的身份访问多个系统,去掉了每次访问不同的系统都要重新登录的弊端。

CAS(中央/集中认证服务):The Central Authentication Service project, more commonly referred to as CAS is an authentication system originally created by Yale University to provide a trusted way for an application to authenticate a user.

CAS是实现SSO的一个开源项目,最初由耶鲁大学创建。很明显冲名字就可以看出其原理是:多个系统使用一个相同的“中央认证服务”来实现的。

1. CAS 架构

1) 系统组成:分成了一个 CAS server 和 多个CAS clients 两大物理组成部分。

2)CAS Clients

The term “CAS client” has two distinct meanings in its common use. A CAS client is any CAS-enabled application that can communicate with the server via a supported protocol. A CAS client is also a software package that can be integrated with various software platforms and applications in order to communicate with the CAS server via some authentication protocol (e.g. CAS, SAML, OAuth). CAS clients supporting a number of software platforms and products have been developed.

CAS clients: 也就是 多个业务系统。我们用户在访问业务系统时,业务系统作为 CAS client, 来访问CAS server进行认证。实现方式是,将我们redirect到CAS server上,然后我们输入用户名密码,CAS server进行认证。所以相对于CAS server,我们用浏览器访问多个业务系统就是 CAS clients。

3)CAS Server

The CAS server is Java servlet built on the Spring Framework whose primary responsibility is to authenticate users and grant access to CAS-enabled services, commonly called CAS clients, by issuing and validating tickets. An SSO session is created when the server issues a ticket-granting ticket (TGT) to the user upon successful login. A service ticket (ST) is issued to a service at the user’s request via browser redirects using the TGT as a token. The ST is subsequently validated at the CAS server via back-channel communication. These interactions are described in great detail in the CAS Protocol document.

CAS server是一个基于spring的系统,其首要职责就是对登录用户进行认证,然后授权给它们去访问“业务系统”也就是CAS clients。其实现方式:发出票据和验证票据。比如,一个用户要登录一个“业务系统A”,那么该业务系统,将我们重定向到 CAS server, 然后我们输入用户名和密码等,然后CAS server进行认证,也就是验证用户名和密码是否正确,如果正确,就发给我们一个 TGT 票据,然后针对该“业务系统A”, CAS server 又根据TGT 生产一个专门针对该业务系统的 ST 票据。然后如果我们又去访问另外一个“业务系统B”,那么这个“业务系统B”又将我们重定向到 CAS server,但是这一次,我们携带了 TGT 票据,我们不用再次输入用户名和密码,CAS server 会根据我们的 TGT 针对该“业务系统B” 又生产一个专门针对该业务系统的 ST 票据。 然后我们又要访问“业务系统A”,此时我们有了 TGT 和 针对“业务系统A”的 ST 票据,这次,业务系统A会将自己的 ST 票据,发送给 CAS server 进行验证,如果存在。那么就认证通过。

总结一下:

1>第一次没有 TGT 和 ST 票据,需要输入 用户名和密码 在 CAS server上进行认证;

2>认证通过之后会 生成  TGT 票据和针对该 CAS client 的 ST 票据;

3>有了 ST 票据之后,CAS client 将 ST 票据发送给 CAS server 进行查找,如果存在则通过认证;

4>如果只有 TGT 票据,那么将 TGT 票据发给 CAS server,生成一个专门针对该 CAS client 的 ST 票据;

5> TGT 票据应该是基于cookie,也就是保存在cookie中的,而各个业务系统的 ST 票据是保存在自己的业务系统的内存中的;

4)第一次登陆时的交换图:

5)Software Components

It is helpful to describe the CAS server in terms of three layered subsystems:

  • Web (Spring MVC/Spring Webflow)
  • Ticketing
  • Authentication

Almost all deployment considerations and component configuration involve those three subsystems. The Web tier is the endpoint for communication with all external systems including CAS clients. The Web tier delegates to the ticketing subsystem to generate tickets for CAS client access. The SSO session begins with the issuance of a ticket-granting ticket on successful authentication, thus the ticketing subsystem frequently delegates to the authentication subsystem.

The authentication system is typically only processing requests at the start of the SSO session, though there are other cases when

it can be invoked (e.g. forced authentication).

CAS Server 系统的架构有三部组成(三个子系统): 1> web端;2> 票据系统; 3>认证系统;

web端代理了 CAS clients,来向票据系统申请票据和验证票据,票据系统根据要求产生票据和验证票据;而认证系统就是对输入的用户名和密码进行验证,验证成功之后,通知票据系统生成票据。所以认证系统只有在第一次登陆时才会使用到。票据系统应该是三个子系统中最繁忙的。

参考:

1)http://jasig.github.io/cas/4.0.x/planning/Architecture.html

2)http://sowow.sinaapp.com/archives/57

3)http://jasig.github.io/cas/4.0.x/index.html

时间: 2024-08-07 17:01:28

单点登录系统(SSO)之CAS(中央认证服务)的相关文章

单点登录系统(SSO)的开发思路

单点登录并不是一个新鲜的玩意儿,比较官方的解释是企业业务整合的解决方案之一,通俗来讲SSO就是一个通用的用户中心,国内比较流行的UCenter就是一套单点登录解决方案.而近期以CSDN明文存储用户密码并泄露用户信息开始的各大网站争先恐后的泄露自己的用户数据库除了暴露了这些网站的良心和智商外,如何设计用户中心已成为架构师们的热点话题之一.在最近一两年的项目经验中有幸接触到各种平台的单点登录系统的开发,所以借此机会总结下B/S架构的单点登录系统的开发经验. 单点登录系统的类别 就目前比较流行的应用来

多平台的网站实现单点登录系统(SSO)的开发思路 让你的会员中心更加统一(参考资料)

单点登录并不是一个新鲜的玩意儿,比较官方的解释是企业业务整合的解决方案之一,通俗来讲SSO就是一个通用的用户中心,国内比较流行的UCenter就是一套单点登录解决方案.而近期以CSDN明文存储用户密码并泄露用户信息开始的各大网站争先恐后的泄露自己的用户数据库除了暴露了这些网站的良心和智商外,如何设计用户中心已成为架构师们的热点话题之一.在最近一两年的项目经验中有幸接触到各种平台的单点登录系统的开发,所以借此机会总结下B/S架构的单点登录系统的开发经验. 单点登录系统的类别 就目前比较流行的应用来

单点登录系统---SSO

1.------------------SSO介绍--------------------------------- 有什么卵用?搞什么飞机的? 大家看看这个图,一个系统是没有问题.如果是分布式的系统,session放到哪里,放到一个web工程中,那么其他的工程咋取值嘞! 1.有的人想到session复制,的确可行,但是如果web项目很多,它的效率非常低 2.可以使用Session服务器,保存Session信息,使每个节点是无状态.需要模拟Session. 单点登录系统是使用redis模拟Ses

单点登录系统SSO以及实现技术CAS了解(手记)

一.单点登录 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的 解决方案之一.SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访 问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用 于同一个用户的登录的机制. 优点: 1)提高用户的效率. 用户不再被多次登录困扰,也不需要记住多个 ID 和密码.另外,用户忘记密码并求助于支持人员的情况也会减少. 2)提高开发人员的效率. SSO 为开发人员提供了一个通用的身份验证框架.实际上,

第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第十天】(单点登录系统实现)

https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结[第六天] 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)[第七天](redis缓存) 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)[第八天](solr服务器搭建.搜

CAS 实现单点登录(SSO)基本实现流程(一)

概念: 单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. CAS(Central Authentication Service),中央认证服务.CAS(Central Authentication Service)是一款不错的针对 Web应用的单点登录框架. 讲解CAS之前先来学习两个基本术语 术语解释: ?    Ticket Grangting Ticket

单点登录(两种单点登录类型:SSO/CAS、相同一级域名的SSO)

单点登录:SSO(Single Sign On) 什么是单点登录:大白话就是多个网站共享一个用户名和密码的技术,对于普通用户来说,只需要登录其中任意一个网站,登录其他网站的时候就能够自动登陆,不需要再输入 用户名和密码了. 单点登录类型: 1.具有相同一级域名的多个网站,以新浪为例,新浪首页实际上是一个导航页面,它提供了很多很多的旗下网站地址,比如 (1)新浪新闻: http://news.sina.com.cn/ (2)新浪科技:http://tech.sina.com.cn/ (3)新浪博客

java单点登录系统CAS的简单使用

转:http://blog.csdn.net/yunye114105/article/details/7997041 背景 有几个相对独立的java的web应用系统, 各自有自己的登陆验证功能,用户在使用不同的系统的时候,需要登陆不同的系统.现在需要提供一个统一的登陆/登出界面, 而不修改各个系统原来的登陆验证机制.于是采用单点登录系统CAS. 使用步骤 要使用单点登录,需要部署CAS系统, CAS服务端可以直接部署在tomcat下运行, 对于CAS服务端来说,所有要集成单点登录的web应用都是

互联网分布式微服务云平台规划分析--SSO单点登录系统

介绍 鸿鹄云架构[SSO单点登录系统]为所有微服务提供统一的用户认证服务,系统本身属于微服务模式,使用JWT+Redis分布式存储方案,确保不同微服务.系统之间的安全通讯和统一用户校验.认证.在整个服务平台中起着用户枢纽中心的作用. 平台基础功能 用户注册&登录.用户登录&校验(APP).用户登录&校验(PC).用户登出.用户密码修改.用户密码重置运行环境支持 开发工具:Eclipse.MyEclipse.Idea WEB容器:内置Tomcat JDK版本:1.8+ 系统支持:Wi