Cas认证原理

1.cas相当于一个web应用,应配置在一台电脑上,作为cas认证服务器。

首先有三个URL:
登录URL:cas的登录认证url(假设为:https://cas/login
验证URL:cas的验证ticket(票据)url
登出URL:cas的登出url(假设为:https://cas/logout

1、浏览器首先访问页面(假设为:https://myweb/weblogin 并假设登录后首页为https://myweb/index.jsp),fileter过滤器首先会对cookie验证,如果不成功跳转到cas登录认证url

备注1:
其中这个url会是这样的,https://cas/login?service=https://myweb/index.jsp,会在跳转到cas认证界面,如果认证成功,应该跳到那个界面呢?登录成功当然是跳到用户首页,所以后面这个地址参数,就是密码输对后跳到业务系统内部首页的地址,这个地址是在web.xml里面配置cas拦截器配置的参数,如果有多个业务系统,那么每个业务系统的web.xml里面都会有配置这个参数,表示认证成功后将跳转到该业务系统的首页。

备注2:
当然出于安全性的考虑,可以把service后面的参数进行加密,跳转前进行解密,然后跳转。

2、cas进行认证,但是认证这个功能其实不是cas服务器负责的,通常是LDAP。

3、认证成功后,首先会生成一个随机字符串ticket(票据),只能使用一次,然后cas将请求重定向到原来的url,但是会带上ticket,https://myweb/weblogin?ticket=gdfsdfgKfse

4、收到ticket后,应用程序需要调用验证url进行验证,返回一个NetID给应用程序以及返回一个特殊cookie(ticket-granting cookie:关闭浏览器后cookie自动过期)给浏览器。
备注1 casUrl验证过程:
cas通过内部的数据库对其进行判断。如果判断是有效性,则返回一个NetID给应用程序,随后cas将ticket作废,返回一个cookie给浏览器)。

5、以后访问其它第三方业务系统,就通过cookie进行,如果关闭浏览器,那么cookie就过期,同理,cas的登出url https://cas/logout也是设置cookie过期,或者删除cookie。

### CAS认证原理 CAS (Central Authentication Service) 是一种广泛使用的单点登录协议,其核心目标是通过集中式的身份验证服务来减少用户的重复登录操作。当用户访问受保护的应用程序时,应用程序会重定向到 CAS 服务器进行身份验证[^1]。 #### 认证流程概述 以下是 CAS 的基本工作流程: 1. 用户尝试访问某个受保护资源(如应用 A),但由于未经过身份验证,会被重定向至 CAS 登录页面。 2. 用户输入凭证(用户名和密码)并提交给 CAS 服务器。 3. 如果凭证有效,则 CAS 创建一个唯一的票据(Ticket Granting Ticket, TGT)。TGT 存储在 CAS 中,并返回给客户端浏览器一个临时的服务票据(Service Ticket, ST)。 4. 浏览器携带此 ST 返回原始请求的应用 A。 5. 应用 A 将收到的 ST 发送回 CAS 验证端点以确认该票据的有效性。 6. 若 ST 合法,CAS 告知应用 A 身份验证成功,并允许用户继续访问受保护资源。 这一过程确保了只有合法用户才能获取所需数据或功能权限。 ### 实现方式与配置教程概要 为了实现上述机制,在实际部署过程中通常涉及以下几个主要环节: #### 环境准备阶段 - **Java 开发环境**: 安装 JDK 和 Maven/Gradle 构建工具链用于项目编译打包。 - **数据库支持可选**: 对于持久化存储需求可以选择 MySQL 或 PostgreSQL 来保存额外的信息比如审计日志等。 #### Gradle 构建文件设置样例 下面展示了一个简单的 `build.gradle` 文件片段用来定义依赖项以及插件版本号: ```groovy plugins { id 'org.springframework.boot' version '2.7.0' } dependencies { implementation 'org.apereo.cas:cas-server-core-webapi-support:7.1.0' } ``` 这段脚本指定了 Spring Boot 版本还有 Apereo CAS Web API 支持模块的具体版本信息。 #### 打包及运行指南 完成源码编辑之后可以通过命令行执行如下指令来进行最终产物制作: ```bash ./gradlew clean build java -jar build/libs/cas.war --server.port=8443 ``` 这里假设已经正确设置了 SSL/TLS 参数以便启用 HTTPS 连接。 ### 注意事项 在整个实施期间需要注意安全性考量,例如妥善保管密钥材料防止泄露;另外还要考虑高可用架构设计保障业务连续性等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值