CAS入门实战(1)--简介

CAS 是 Centeral Authentication Service 缩写,即 中央认证服务,旨在为 Web 应用系统提供一种可靠的单点登录方法;本文主要介绍其基本概念。

1、CAS 特点

  • 支持 CAS v1, v2 and v3 协议
  • 支持 SAML v1 and v2 协议
  • 支持 OAuth v2 协议
  • 支持 OpenID & OpenID Connect 协议
  • 支持 WS-Federation Passive Requestor 协议
  • 可通过 JAAS,LDAP,RDBMS,X.509,Radius,SPNEGO,JWT,Remote,Apache Cassandra,Trusted,BASIC,Apache Shiro,MongoDb,Pac4J 等方式进行身份验证
  • 可委托 WS-FED、Facebook、Twitter、SAML IdP、OpenID、OpenID Connect、CAS 等进行身份验证
  • 可通过 ABAC, Time/Date, REST, Internet2's Grouper 等授权
  • 可通过 Hazelcast,Ehcache,JPA,Apache Cassandra,Memcached,Apache Ignite,MongoDb,Redis,DynamoDb,Couchbase 等进行高可用集群部署。
  • 应用支持 JSON、LDAP、YAML、Apache Cassandra、JPA、Couchbase、MongoDb、DynamoDb、Redis 等技术和组件
  • 可通过 Duo Security,YubiKey,RSA,Google Authenticator,U2F,WebAuthn 等进行多重身份验证
  • 可通过控制台管理管理日志记录、监视、统计信息、配置、客户端注册等
  • 全局和单独应用的主题设置
  • 密码管理和密码策略增强
  • 可使用 Apache Tomcat, Jetty, Undertow,  Docker 来部署应用

2、CAS 架构

CAS 包含两个部分:CAS Clients(CAS 客户端)、CAS Server(CAS 服务端)。

CAS 服务端是基于 Spring 框架构建的 Java 应用,其主要职责是通过颁发和验证票证来验证用户身份并授予对启用 CAS 的服务(通常称为 CAS 客户端)的访问权限。

CAS 客户端 有两种不同的含义。一种含义:CAS 客户端是任何启用了 CAS 的应用程序,可以通过受支持的协议与服务端进行通信。另一种含义:CAS 客户端也是一个软件包,可以与各种软件平台和应用程序集成,以便通过某些身份验证协议(例如 CAS、SAML、OAuth)与 CAS 服务端进行通信。

CAS 客户端已经开发了支持许多软件平台和产品。CAS 客户端支持如下平台:
Apache httpd Server (mod_auth_cas module)
Java (Java CAS Client)
.NET (.NET CAS Client)
PHP (phpCAS)
Perl (PerlCAS)
Python (pycas)
Ruby (rubycas-client)

3、CAS 支持的协议

客户端通过几种受支持的协议中的任何一种与服务端进行通信。所有支持的协议在概念上都是相似的,但有些协议具有特定的功能或特征。例如,CAS 协议支持委派(代理)身份验证,SAML 协议支持属性释放和单点注销。

支持的协议如下:
CAS (versions 1, 2, and 3)
SAML 1.1 and 2
OpenID Connect
OpenID
OAuth 2.0
WS Federation

4、基于 CAS 协议的单点登录过程

CAS 框架本身支持多种协议,这里介绍下该框架中使用较多的 CAS 协议登录过程。

1) 访问服务:用户发送请求访问应用系统(CAS 客户端)中受保护的服务资源。
2) 重定向认证:CAS 客户端分析 HTTP 请求中没有 Service Ticket(即 ST)或 SessionID,说明用户还没有进行身份认证。于是,重定向用户请求到 CAS 服务端进行身份认证,并把用户此次访问 CAS 客户端的 URL 作为参数(service)传递给 CAS 服务端。
3) 用户认证:CAS 服务器接收到身份认证请求后转向登录页面,用户提供认证信息后进行身份认证。身份认证成功后,CAS 服务器给浏览器返回一个 TGC(用户身份信息凭证的 cookie)。
4) 发放票据:CAS 服务器会产生一个随机的 ST,然后重定向到 CAS 客户端。
5) 验证票据:CAS 客户端收到 ST 后,向 CAS 服务器验证票据 ST 的合法性,验证通过后,允许用户访问客户端服务。
6) 传输用户信息:CAS 服务器验证票据 ST 通过后,传输用户认证结果信息给客户端。

5、术语解释

Ticket Granting ticket (TGT) :授权票据,用于生成 ST,存在服务端。
Ticket-granting cookie (TGC) :授权票据的 cookie,通过该 cookie 可以查找到 TGT。
Service ticket (ST) :服务票据,由 TGT 生成的一次性票据,用于验证,只能用一次。CAS 客户端会调用 CAS 服务端来检验该票据的有效性。

 

 

 

posted @ 2022-04-30 19:36  且行且码  阅读(657)  评论(0编辑  收藏  举报