CAS 入门及精通
20
集成spring security
主要为we链
casAuthenticationFilter casValidationFilter
22
创新融通 蓬勃生机
中国领先的金融IT综合服务商 中国领先的金融IT综合服务商
股票代码 NYSE:LFT
9
配置 DataStore
打开文件 %CATALINA_HOME%/webapps/cas/WEBINF/deployerConfigContext.xml,添加一个新的 , bean 标签,对于 SQL SERVER,内容如清单 4 所 标签, , (跟spring配置一样 配置一样): 示(跟spring配置一样):
11
使用 QueryDatabaseAuthenticationHandler
12
添加 passwordEncoder
另外,由于存放在数据库中的密码通常是加密过的, 另外,由于存放在数据库中的密码通常是加密过的, 所以 AuthenticationHandler 在匹配时需要知道使 用的加密方法, 用的加密方法,在 deployerConfigContext.xml 文 件中我们可以为具体的 AuthenticationHandler 类 property,指定加密器类, 配置一个 property,指定加密器类,比如对于 QueryDatabaseAuthenticationHandler: :
5
部署 CAS Server
CAS Server 是一个 Web 应用包,将前面下载的 应用包, cas-server-3.1.1-release.zip 解开,把其中的 cas解开, server-webapp-3.1.1.war 拷贝到 tomcat的 的 webapps 目录,并更名为 cas.war。由于前面已配 目录, 。 协议, tomcat, 置好 tomcat 的 https 协议,可以重新启动 tomcat, 然后访问: 然后访问:https://localhost:8443/cas ,如果能出 登录页面, 现正常的 CAS 登录页面,则说明 CAS Server 已经 部署成功。 部署成功。
18
CASFilter 可选参数
19
传递登录用户名
CAS 在登录成功过后,会给浏览器回传 Cookie,设 在登录成功过后, , 置新的到的 Service Ticket。但客户端应用拥有各自 。 的 Session,我们要怎么在各个应用中获取当前登录 , 用户的用户名呢? 用户的用户名呢?CAS Client 的 Filter 已经做好了 处理,在登录成功后, 处理,在登录成功后,就可以直接从 Session 的属 性中获取。 性中获取。
6
扩展认证接口
CAS Server 负责完成对用户的认证工作,它会处理 负责完成对用户的认证工作, 信息,用户名/密码 登录时的用户凭证 (Credentials) 信息,用户名 密码 对是最常见的凭证信息。 对是最常见的凭证信息。CAS Server 可能需要到数 据库检索一条用户帐号信息, 据库检索一条用户帐号信息,也可能在 XML 文件中 检索用户名/密码 密码, 获取等, 检索用户名/密码,还可能通过 LDAP Server 获取等, 在这种情况下, 在这种情况下,CAS 提供了一种灵活但统一的接口 和实现分离的方式, 和实现分离的方式,实际使用中 CAS 采用哪种方式 的基本协议分离开的, 认证是与 CAS 的基本协议分离开的,用户可以根据 认证的接口去定制和扩展。 认证的接口去定制和扩展。 扩展 AuthenticationHandler
CAS Seminar
CAS总括 总括
CAS 是 Yale 大学发起的一个开源项目,旨在为 大学发起的一个开源项目, Web 应用系统提供一种可靠的单点登录方法,CAS 应用系统提供一种可靠的单点登录方法, 的一个项目。 在 2004 年 12 月正式成为 JA-SIG 的一个项目。 CAS 具有以下特点: 具有以下特点: 1、开源的企业级单点登录解决方案。 、开源的企业级单点登录解决方案。 2、CAS Server 为需要独立部署的 Web 应用。 、 应用。 3、CAS Client 支持非常多的客户端 这里指单点登 、 支持非常多的客户端(这里指单点登 应用), 录系统中的各个 Web 应用 ,包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
14
部署客户端应用
单点登录的目的是为了让多个相关联的应用使用相同 的登录过程,通过本文的配置,实现单点登录, 的登录过程,通过本文的配置,实现单点登录,即只 需登录一次就可以访问这多个应用。 需登录一次就可以访问这多个应用。
15
与 CAS Server 建立信任关系
配置 Tomcat 的 SSL 协议 导入证书
13
部署依赖包
将 cas-server-support-jdbc-3.1.1.jar 拷贝到 %CATALINA_HOME%/webapps/cas/ WEB-INF/lib 目录。 目录。 数据库驱动 其他依赖包如: 其他依赖包如:commons-collections-3.2.jar, commons-dbcp-1.2.1.jar, commons-pool-1.3.jar
10
配置 AuthenticationHandler
使用哪个 AuthenticationHandler,需要在 , deployerConfigContext.xml 中设置,默认情况下, 中设置,默认情况下, CAS 使用一个简单的 username=password 的 AuthenticationHandler,在文件中可以找到如下一 , 行:<bean class=“org.jasig.cas.authentication.handler.sup port.SimpleTestUsernamePassword AuthenticationHandler” />,我们可以将其注释掉, ,我们可以将其注释掉, 换成我们希望的一个 AuthenticationHandler,比如, ,比如, 使用QueryDatabaseAuthenticationHandler。 使用 。
谢 谢!
2
图 1. CAS 基础协议
3
部署 CAS Server
协议. 配置 Tomcat 使用 Https 协议 部署 CAS Server 扩展认证接口 JDBC 认证方法 部署依赖包
4
配置 Tomcat 使用 Https 协议
如果希望 Tomcat 支持 Https,主要的工作是配置 , SSL 协议,其配置过程和配置方法可以参考 Tomcat 协议, 的相关文档。不过在生成证书的过程中,会有需要用 的相关文档。不过在生成证书的过程中, 到主机名的地方, 地址, 到主机名的地方,CAS 建议不要使用 IP 地址,而要 使用机器名或域名。 使用机器名或域名。
8
JDBC 认证方法
JDBC 认证方法支持多种数据库,DB2, Oracle, 认证方法支持多种数据库, MySql, Microsoft SQL Server 等均可,这里以 等均可, DB2 作为例子介绍。并且假设 作为例子介绍。并且假设DB2数据库名: 数据库名: 数据库名 CASTest,数据库登录用户名: db2user,数据库 ,数据库登录用户名: , 登录密码: db2password,用户信息表为: 登录密码: db2password,用户信息表为: userTable,该表包含用户名和密码的两个数据项分 , 别为 userName 和 password。 。 1. 配置 DataStore 2. 配置 AuthenticationHandler
16
配置 CAS Filter
将 cas-client-java-2.1.1.zip 改名为 cas-client-java2.1.1.jar 并拷贝到 casTest1/WEB-INF/lib目录下, 目录下, 目录下 文件, 修改 web.xml 文件,添加 CAS Filter。 。
17
CASFilter 必需的参数
7
扩展 AuthenticationHandler
CAS 提供扩展认证的核心是 AuthenticationHandler 接口 接口. 个需要实现的方法, 该接口定义了 2 个需要实现的方法,supports ()方 方 法用于检查所给的包含认证信息的Credentials 是否 法用于检查所给的包含认证信息的 受当前 AuthenticationHandler 支持;而 支持; authenticate() 方法则担当验证认证信息的任务,这 方法则担当验证认证信息的任务, 也是需要扩展的主要方法, 也是需要扩展的主要方法,根据情况与存储合法认证 信息的介质进行交互, 类型的值, 信息的介质进行交互,返回 boolean 类型的值, true 表示验证通过,false 表示验证失败。 表示验证通过, 表示验证失败。
java cas 原理
java cas 原理
CAS(Compare and Swap)是一种原子操作,用于在多线程环境下实现无锁数据结构。
Java中的CAS原理主要包括以下几个方面:
1. CAS操作包含三个参数:内存位置、预期值和新值。
当内存位置的值与预期值相等时,将内存位置的值更新为新值,否则不进行任何操作。
整个过程是原子的,即要么成功更新,要么保持不变。
2. Java中的CAS操作是通过sun.misc.Unsafe类实现的。
Unsafe 类提供了一组底层操作方法,可以对内存进行直接操作,从而实现高性能的数据结构和算法。
3. CAS操作通常需要配合volatile关键字使用,以确保变量的可见性。
当一个变量被声明为volatile时,它会保证所有线程都能看到该变量的最新值。
4. CAS操作虽然可以实现无锁数据结构,但在某些情况下仍然可能出现问题。
例如,当多个线程同时尝试更新同一个变量时,可能导致“ABA”问题。
为了解决这个问题,可以使用版本号或时间戳等机制来确保数据的一致性。
总之,Java中的CAS原理是一种基于原子操作的无锁数据结构
技术,通过Unsafe类提供的底层操作方法实现。
虽然CAS操作可以提高程序的性能,但在使用时需要注意数据一致性和并发控制等问题。
cas算法详解
cas算法详解CAS算法,全称为比较-交换排序(Comparison and Swap),是一种基于比较和交换操作的排序算法。
它通过比较两个元素的大小关系,然后根据需要进行交换,以达到排序的目的。
CAS算法具有简单、直观、易于实现的特点,在实际应用中得到了广泛的应用。
CAS算法的核心思想是利用比较和交换操作来实现排序。
它通过不断地比较相邻的两个元素的大小关系,如果发现顺序不对就进行交换,直到所有元素都排好序为止。
CAS算法的基本思路如下:1. 首先,从待排序的元素中选择一个基准元素,通常选择第一个或最后一个元素作为基准。
2. 然后,将整个序列分为两部分,一部分是小于基准元素的,另一部分是大于基准元素的。
3. 接着,对两部分分别进行递归排序,直到每个子序列只有一个元素为止。
4. 最后,将排好序的子序列进行合并,得到最终的有序序列。
CAS算法的实现过程可以用伪代码表示如下:```function casSort(arr)if length(arr) ≤ 1 thenreturn arrelsepivot ← arr[0] // 选择第一个元素作为基准left ← [x in arr[1:] if x ≤ pivot] // 小于等于基准的部分right ← [x in arr[1:] if x > pivot] // 大于基准的部分return casSort(left) + [pivot] + casSort(right)end ifend function```CAS算法的时间复杂度为O(nlogn),其中n为待排序序列的长度。
它的空间复杂度为O(n),需要额外的空间来存储左右子序列。
CAS算法的优点在于实现简单、性能良好。
由于它只涉及比较和交换操作,没有复杂的计算过程,因此执行效率较高。
此外,CAS算法还具有稳定性好的特点,不会改变相同元素的相对顺序。
然而,CAS算法也存在一些缺点。
首先,它需要额外的空间来存储左右子序列,这增加了空间的开销。
cas机制详解
cas机制详解CAS(Central Authentication Service)是一种常用的单点登录(SSO)协议,它通过在不同的应用系统之间共享用户认证信息,实现了用户只需要登录一次即可访问多个应用系统的功能。
CAS机制的核心思想是将用户认证的过程从应用系统中分离出来,并由一个独立的CAS服务器来完成。
具体来说,CAS机制包括以下几个主要组件:CAS客户端、CAS服务器以及应用系统。
用户访问一个需要认证的应用系统,该系统会检测用户是否已经登录。
如果用户尚未登录,系统将重定向到CAS服务器的登录页面。
用户在CAS服务器上输入用户名和密码进行登录。
CAS服务器验证用户的身份,如果验证通过,CAS服务器将生成一个全局唯一的票据(Ticket),并将该票据发送给用户的浏览器。
用户的浏览器将该票据发送给之前访问的应用系统。
应用系统收到票据后,会将它发送给CAS服务器进行验证。
CAS服务器验证票据的有效性,并返回给应用系统一个成功或失败的响应。
如果验证成功,应用系统会将用户登录信息与该应用系统的用户信息进行关联,并为用户创建一个本地的会话。
用户在之后访问该应用系统时,应用系统会直接使用本地会话进行认证,而不需要再次访问CAS服务器。
如果用户访问其他需要认证的应用系统,整个过程将会重复。
用户只需要登录一次,即可在多个应用系统中共享登录状态。
CAS机制的优点在于提供了一种简单且安全的用户认证解决方案。
通过将用户认证过程集中管理,CAS机制可以降低应用系统的开发和维护成本。
同时,CAS服务器作为一个独立的认证中心,可以提供更加强大和可扩展的认证功能,比如支持多种认证方式(如用户名密码认证、第三方认证等)、多因素认证等。
CAS机制还具有高度的可定制性。
CAS服务器可以根据不同的应用系统的需求,进行灵活的配置和扩展。
比如,可以通过CAS服务器实现单点注销功能,用户注销后会自动注销所有已登录的应用系统。
总结来说,CAS机制通过集中管理用户认证信息,实现了单点登录和认证的功能,提高了用户体验和系统安全性。
CAS编号详解
CAS编号详解CAS: chemical abstract service Register number.查询的网站有好多,一般使用google,输入物质名和CAS就行了。
美国化学摘要服务社( Chemical Abstracts Service)CAS 是一个由科学家组成的团队,它为科学研究和探索创造并提供最完整有效的数字信息环境。
如何利用化学命名/分子式/结构式来检索化学文献一、前言享有『世界化学文献之钥』美名的化学摘要,它是由美国化学摘要服务社( Chemical Abstracts Service, CAS)所出版的,其在化学化工文献上的贡献地位是不容忽视的。
同时CAS也因应潮流所需,另外研发了一套STN线上检索系统,这套检索系统包括了200多种型型色色的数据库,在众多的数据库中,其最大的卖点在于它有一个独门的数据库─REGISTRY FILE,这个数据库的特色就在于它是一个强大的化学字典数据库,它可以利用化学命名、化学分子式和化学结构式来检索化学领域相关的资料,若再配合STN线上其它的数据库,则不论寻找参考文献、专利、化学物质物化性、化学物质注册或商情资料都能无往不利。
二、关于REGISTRY FILE由CAS所研发出的STN线上检索系统中,REGISTRY FILE为其最独特的数据库,而其特色在于它具有化学字典功能的特性,为一含以化学物质来辨识进而收集资料的数据库。
REGISTRY FILE收录了1,600万的化学物质,其中包含了2,000万以上的化学品名称,同时它可以以化学名称、化学分子式或结构式来检索资料,它更提供了一强有力的化学物质登录号(CAS Registry number, CAS RNs),以做为查询复杂化学物质的独特且具权威的入门。
先来介绍什么是CAS RNs,它对化学物质而言,好象是化学物质的身份证字号一样,为唯一且特定的一种编号,每一种化合物都可能有很多种不同的命名,以一般IUPAC命名的4,4’-sulfonyldianiline 为例、它的商品名为Avlosulfon、而它的实验名为NSC 6091、进而CA索引命名为Benzenamine,4,4’-sulfonyl bis- 、至于其它的命名又如:1,1’-sulfonylbis﹝4-aminobenzene﹞等,在如此繁多的命名中,若以单一的命名来查询资料,势必会造成资料收集不全的困扰,但以这个例子来看,其化学物质登录号为【80-08-0】,以这唯一的信息来检索资料,可节省许多精力与时间,同时资料也会收集较齐全。
cas标准(一)
cas标准(一)CAS标准什么是CAS标准?CAS标准是指Central Authentication Service(中央认证服务)的标准规范。
它是一种单点登录协议,用于处理用户的身份验证和对受保护资源的授权。
CAS标准是由耶鲁大学发起的开源项目,在全球范围内得到广泛应用。
它提供了一个统一的认证系统,允许用户仅通过一次登录,即可访问多个受保护的应用程序。
CAS标准的特点CAS标准具有以下特点:1.单点登录:用户只需登录一次,即可访问所有受保护的应用程序,无需再次输入用户名和密码。
2.安全性:CAS使用令牌来验证用户身份,令牌在认证服务器和应用程序之间进行传递,确保用户信息的安全性。
3.可扩展性:CAS标准支持插件扩展,可以与其他认证系统集成,如LDAP、Active Directory等。
4.跨平台:CAS可以在不同的操作系统和开发框架中使用,如Java、.NET、PHP等。
CAS标准的工作流程CAS标准的工作流程如下:1.用户访问受保护的应用程序,并尚未登录。
2.应用程序检测到用户未登录,将用户重定向至CAS认证服务器。
3.用户在CAS认证服务器上输入用户名和密码进行登录。
4.CAS认证服务器验证用户的身份,若验证成功,生成一个令牌。
5.CAS认证服务器将令牌发送给应用程序。
6.应用程序接收到令牌,使用令牌向CAS认证服务器请求用户的属性信息。
7.CAS认证服务器使用令牌检索用户的属性信息,并将其返回给应用程序。
8.应用程序使用用户的属性信息进行授权操作。
CAS标准的应用场景CAS标准广泛用于以下场景:1.高校教育系统:学生、教职工可以通过CAS进行登录,并访问学校内部的资源管理系统、图书馆系统等。
2.企事业单位:公司员工可以通过CAS登录,访问OA系统、财务系统等。
3.社交网络:用户可以通过CAS登录,访问多个社交网络平台,并实现账号互联。
CAS标准的优势使用CAS标准的优势体现在以下方面:1.用户体验优化:CAS实现了单点登录,用户只需一次登录即可访问多个应用程序,提升了用户的便利性和使用体验。
cas标准
cas标准CAS(Chemical Abstracts Service)标准是一种国际化的化学信息标准,由美国化学会(ACS)创建和维护。
CAS标准用于对化学物质进行唯一的标识和索引,以确保全球化学信息的一致性和可靠性。
CAS号码是由Chemical Abstracts Service为化学物质分配的唯一标识符,它对应于每个已知化学物质和混合物。
CAS标准的主要参考内容如下:1. CAS号码的结构和格式:CAS号码由三部分组成,即分组号、集团号和检查位。
分组号包含2至7个数字,标识了不同的化学物质类别;集团号包含2至7个数字和字母,标识了相似类型的化学物质;检查位是一个数字或字母,用于验证CAS号码的准确性。
2. CAS号码的分配规则:CAS号码按照一定的规则分配,其中包括如何确定分组号和集团号、如何验证CAS号码的准确性等。
CAS号码的分配是基于化学物质的化学和结构信息进行的,以确保每个化学物质都有唯一的CAS号码。
3. CAS号码的应用:CAS号码广泛应用于化学物质的识别、检索和管理。
在科学研究、化学品生产和销售、环境监测等领域,CAS号码被用于唯一标识化学物质。
科研人员可以通过CAS号码来获取化学物质的相关信息,如结构、性质、用途等。
化学品生产商和供应商可以通过CAS号码来管理他们的产品信息和库存情况。
环境监测机构可以通过CAS号码来追踪和识别环境中的化学物质。
4. CAS数据库的结构和搜索方法:CAS维护了一个全球最大的化学物质数据库,其中包含了大量化学物质的相关信息。
CAS数据库的结构和搜索方法是使用CAS号码进行化学物质检索的关键。
CAS数据库采用索引、关键词和化学结构等多种检索方式,可以按照化学物质的名称、分子式、CAS号码等进行搜索。
5. CAS号码的更新和维护:由于新的化学物质不断被发现和制备,CAS号码系统需要进行持续的更新和维护。
CAS号码的更新通过不断监测化学文献和专利数据库进行,确保CAS 号码与新的化学物质保持同步。
c语言中cas的用法
c语言中cas的用法CAS(Compare And Swap,比较并交换)是一种多线程并发控制的方法,被广泛应用于并发编程和并发数据结构中。
它主要用于解决多线程环境下的原子性问题,通过比较指定内存位置的值与给定预期值是否相等,若相等则将该位置的值替换为新的值。
本文将详细介绍CAS的原理、用法以及应用场景。
一、CAS的原理CAS的原理比较简单,其关键步骤如下:1. 比较内存中的值与预期值,若相等则进行下一步,否则返回失败;2. 使用新值替换内存中的旧值;3. 返回操作结果,表示是否替换成功。
CAS操作是由硬件指令提供的,一般是原子性的,即在多线程环境下能够保证线程安全。
简单来说,CAS操作通过比较指针指向的内存单元的值与预期值是否相等,若相等则进行替换,否则认为操作失败。
因此,CAS操作可以保证在多线程环境下只有一个线程能够成功执行更新操作,从而保证了线程的安全性。
二、CAS的用法在C语言中,CAS的用法主要涉及到两个函数/宏:CAS和__sync_bool_compare_and_swap。
下面分别介绍这两个用法。
1. CAS函数CAS函数是通过内嵌汇编实现的,可以直接在C语言中使用。
其通用格式如下:int CAS(int *ptr, int oldvalue, int newvalue)解释:- ptr:指向要被比较和替换的内存单元- oldvalue:预期的值- newvalue:新的值参数解释完毕,接下来就是展示如何使用CAS函数实现原子操作。
以一个简单的示例为例,假设有一个全局变量g_count,我们需要实现一个原子的自增操作,代码如下:int CAS(int *ptr, int oldvalue, int newvalue);int g_count = 0;void AtomicIncrease(){int expected = g_count;while (!CAS(&g_count, expected, expected + 1)){expected = g_count;}}解释:- 首先,我们将当前g_count的值保存在局部变量expected中;- 然后,通过循环不断尝试使用CAS函数进行原子自增操作;- 若CAS操作失败,则重新获取g_count的值,继续尝试。
cas的理解
cas的理解CAS的理解什么是CAS?CAS,全称为Compare and Swap,即比较并交换。
它是一种多线程同步机制,用于实现线程安全的数据操作。
在多线程环境下,由于多个线程可能同时访问同一个共享变量,因此会出现竞态条件(Race Condition)问题。
而CAS机制可以有效地解决这个问题。
CAS的原理CAS机制的核心思想是:先比较内存中的值是否与期望值相等,如果相等,则将新值写入内存;否则不做任何操作。
这个过程是原子性的,即不会被其他线程中断。
具体地说,在执行CAS操作时,需要提供三个参数:内存地址、期望值和新值。
然后CPU会将内存地址指向的值与期望值进行比较,如果相等,则将新值写入该内存地址;否则不做任何操作。
在执行CAS操作时可能会出现ABA问题。
例如,在一个计数器变量中先后执行了两次加1和减1操作,最终得到的结果与初始值相等。
此时如果有一个线程执行了如下操作:先读取了初始值A,并将其修改为B;然后另一个线程又将其修改为A,此时第一个线程再次读取该变量时发现它仍然等于A,则认为没有被修改过。
但实际上,该变量已经被修改过,只是恰好又被修改回了原来的值。
为了解决这个问题,可以使用带有版本号的CAS机制。
CAS的应用CAS机制在Java中广泛应用于Atomic类、ConcurrentHashMap、AQS等并发工具中。
它可以提高程序的并发性能和可伸缩性,并且使用起来比较简单。
Atomic类是一个原子类,提供了一组原子操作方法,例如getAndAdd、getAndSet等。
这些方法都是基于CAS机制实现的,可以保证线程安全。
ConcurrentHashMap是一个高效的线程安全哈希表实现,它采用了分段锁技术和CAS机制来保证线程安全。
AQS(AbstractQueuedSynchronizer)是一个抽象同步器,在Java中广泛应用于Lock、Semaphore、CountDownLatch等同步工具中。
cas 基础协议
cas 基础协议CAS(Central Authentication Service)是一种分布式的Web单点登录协议,它提供了集中登录和授权服务,可以实现多个应用系统间的用户身份认证和授权。
下面是对CAS基础协议的相关参考内容。
CAS协议的工作原理如下:1. 用户访问一个需要认证的应用系统;2. 应用系统检测到用户未登录,会将用户重定向到CAS Server;3. 用户在CAS Server上进行身份认证,输入用户名和密码;4. CAS Server校验用户的身份,如果验证成功,CAS Server会生成一个令牌(Ticket)并将其发送给用户的浏览器;5. 用户的浏览器将令牌发送回应用系统;6. 应用系统收到令牌后,将令牌发送给CAS Server进行校验;7. CAS Server校验通过后,应用系统将用户登录成功。
CAS协议的主要特点如下:1. 单点登录:用户只需登录一次,即可访问多个应用系统,无需重复输入用户名和密码,提高了用户体验;2. 集中授权:CAS Server负责集中管理用户的授权信息,应用系统根据CAS Server的认证结果进行权限控制;3. 分布式架构:CAS Server可以部署在多台服务器上,实现分布式认证和授权服务,提高了系统的稳定性和可扩展性;4. 可扩展性:CAS协议支持多种认证方式,如用户名密码认证、证书认证、第三方认证等,可以根据需求进行扩展和定制;5. 安全性:CAS协议采用加密算法保护用户的敏感信息,防止信息被窃取和篡改。
CAS协议的实现参考:1. CasClient:一个开源的Java客户端,实现了CAS协议的客户端功能,可用于应用系统的集成。
它提供了一组简单易用的API,帮助应用系统与CAS Server进行集成。
可以通过源代码来了解CAS协议的实现原理。
2. CAS Server:CAS Server是一个开源的CAS服务器端实现,支持Java、PHP、.NET等多种编程语言,可以根据需要选择合适的版本。
Cas详细配置
CAS框架配置详解博客分类:CAS一、概述单点登录(Single Sign On , 简称SSO )是目前比较流行的服务于企业业务整合的解决方案之一,SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
CAS(Central Authentication Service)是一款不错的针对Web 应用的单点登录框架,本文介绍了CAS 的原理、协议、在Tomcat 中的配置和使用,对于采用CAS 实现轻量级单点登录解决方案的入门读者具有一定指导作用。
二、CAS介绍CAS 是Yale 大学发起的一个开源项目,旨在为Web 应用系统提供一种可靠的单点登录方法,CAS 在2004 年12 月正式成为JA-SIG 的一个项目()。
CAS 具有以下特点:1)开源的企业级单点登录解决方案2)CAS Server 为需要独立部署的Web 应用3)CAS Client 支持非常多的客户端(指Web 应用),包括Java,.Net,PHP,Perl,Ruby 等三、CAS原理及协议从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。
CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。
AS 最基本的协议过程:CAS Client 与受保护的客户端应用部署在一起,以Filter 方式保护受保护的资源。
对于访问受保护资源的每个Web 请求,CAS Client 会分析该请求的Http 请求中是否包含Service Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的CAS Server 登录地址,并传递Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。
用户在第3 步中输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的Service Ticket,并缓存以待将来验证,之后系统自动重定向到Service 所在地址,并为客户端浏览器设置一个Ticket Granted Cookie(TGC),CAS Client 在拿到Service 和新产生的Ticket 过后,在第5,6 步中与CAS Server 进行身份合适,以确保Service Ticket 的合法性。
