Appearance
CAS Overlay 8.0.x Maven 开发版
项目简介
CAS (Central Authentication Service) 是 Apereo 基金会维护的企业级开源单点登录系统,为企业应用提供统一的身份认证与授权机制。本项目基于 CAS Overlay 8.0.1 版本进行定制化开发,提供完整的开发基座、配置模板和部署方案,旨在帮助开发者快速构建、定制和部署符合企业需求的 CAS 认证服务。

技术支持
- 技术支持: 北京必码科技工作室
- 官方文档: https://bima.cc
- 官方店铺: https://bima.taobao.com
- 联系邮箱: bima.cc@qq.com
- 联系微信: e18929958
核心改造
CAS-Overlay 企业级定制开发版
专为企业级身份认证场景深度二次开发,彻底重构原生 CAS 架构,开箱即用、零门槛适配企业各类账号体系,完美支撑微服务、分布式、容器化部署需求,解决原生 CAS 部署配置复杂、调试困难等核心痛点。
核心二次开发功能:
- 01:架构现代化升级 — 摒弃传统 WAR 包架构,全面转型 Spring Boot 标准 JAR 包架构,部署流程极简优化,原生适配微服务生态与 Docker / K8s 容器化部署,兼容企业现代化运维体系。
- 02:双源认证全覆盖 / JDBC + LDAP — 集成 MyBatis 数据库访问框架,支持 JDBC 数据库账号认证 + LDAP 目录服务双认证模式,无缝对接企业现有账号存储方案,无需改造原有账号体系,满足内网、混合架构等全场景身份校验需求。
- 03:本地开发零障碍 / 自定义启动类 — 提供专属
CasWebApplication主启动类,支持本地直接 Debug 启动、断点调试,告别原生 CAS 复杂启动配置,大幅提升开发调试效率。 - 04:灵活自定义认证逻辑 / 图形验证码 — 摒弃原生固定校验规则,支持自定义用户名 / 密码校验逻辑(JDBC 模式),基于 Redis 的前置校验图形验证码功能。可按需再扩展多因子校验、账号状态等个性化校验规则。
- 05:双协议认证 / 任意自定义返回值 — 同时支持 OAuth2.0 + OIDC 双标准认证协议,兼容各类第三方应用对接需求;支持自定义认证返回值,可灵活输出用户详情、角色权限、部门信息等任意自定义业务数据。
- 06:双协议反向代理适配 / HTTP + HTTPS 全兼容 — 支持 HTTP、HTTPS 双协议反向代理,适配主流网关,自动适配代理请求信息,无需额外改造,满足内外网访问及安全传输需求。
- 07:JWT AccessToken 支持 / 自定义属性扩展 — 全面支持 JWT 格式 AccessToken,支持在 AccessToken 中添加自定义用户属性(如用户 ID、昵称、手机号、邮箱等)任意自定义业务数据,满足企业个性化身份信息传递需求。
- 08:分布式集群部署 / 高可用支撑 — 基于 Redis 实现 Ticket 集中存储,支持多节点分布式集群部署,无状态设计保障系统高可用性、横向扩展性,满足企业高并发访问场景。
- 09:全量前端资源开放 / 可视化定制 — 完整提取前端静态资源、页面模板,无加密、无限制,支持开发者根据企业品牌自由定制登录页、首页、错误页等前端界面。
- 10:国际化多语言支持 — 内置中文、英文等多语言配置,满足企业国际化业务、跨区域使用需求。(示例)
- 11:容器化 / 自动化部署 — 内置标准化 Dockerfile 与 Jenkins 部署脚本,一键完成容器打包、自动化部署,无缝接入企业 CI / CD 持续集成流程。
环境要求
- JDK:25
- MySQL:8.x(默认端口 3306)
- Redis:7.x(默认端口 6379)
- LDAP:可选(默认端口 389)
- Maven:项目自带 Maven Wrapper 3.9.9
- VS Code(推荐)
- 构建过程需要访问 Maven 中央仓库,确保网络连接正常
数据库配置
1. 数据库初始化
本项目提供了完整的数据库初始化脚本,位于 src/main/resources/user_center.sql。该脚本包含以下内容:
- 用户管理表:包括
user_info用户信息表,默认初始化了超级管理员账号
初始化步骤:
- 创建数据库:在 MySQL 数据库中创建名为
user_center的数据库 - 执行初始化脚本:在
user_center数据库中执行user_center.sql脚本 - 验证初始化:确认所有表结构已创建,且
user_info表中包含默认的超级管理员账号
2. 数据库连接配置
数据库连接配置位于 src/main/resources/spring-common.xml 文件中,主要配置项如下:
xml
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<!-- 将下面数据库配置替换为自己的 -->
<property name="url"
value="${BIMA_DB_URL:jdbc:mysql://nas.bima.cc:3306/user_center?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai}"/>
<property name="username" value="${BIMA_DB_USERNAME:demo}"/>
<property name="password" value="${BIMA_DB_PASSWORD:数据库密码}"/>
</bean>1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
配置说明:
- driverClassName:数据库驱动类名,使用 MySQL 驱动
- url:数据库连接地址,格式为
jdbc:mysql://主机:端口/数据库名?参数 - username:数据库用户名
- password:数据库密码
- 连接池配置:包括初始连接数、最大连接数、最小空闲连接数等
修改步骤:
- 打开
src/main/resources/spring-common.xml文件 - 修改
url、username、password为实际的数据库连接信息 - 保存文件并重新构建项目
3. 默认管理员账号
初始化脚本中默认创建了超级管理员账号:
- 用户名:admin
- 密码:admin(密码已加密存储)
首次登录后,建议修改默认密码(使用 cc.bima.cas.utils.Sha256Utils.encrypt 生成新的密码散列,注意盐值需要与数据库中的盐值一致)以提高安全性。
快速开始
方式一:开发者模式(以 VS Code 工具为例)
导入项目:
- 在 VS Code 中打开项目根目录
- 等待项目依赖下载完成
启动服务:
- 找到并打开
cc.bima.cas.CasWebApplication主启动类 - 右键点击该类,选择
Debug As->Java Application启动服务 - 服务启动后,可在控制台查看启动日志和调试信息
- 找到并打开
方式二:命令行模式(标准 Maven 命令)
bash
# 构建与校验
./mvnw clean test
# 直接启动服务(开发测试)
./mvnw spring-boot:run -DskipTests
# 打包为可执行 JAR 文件(生产部署)
./mvnw clean package -DskipTests1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
方式三:Docker 容器模式(基于 Jenkins 构建)
项目根目录已提供 Dockerfile 和 Jenkinsfile,Docker 与 Jenkins 构建均使用项目自带的 Wrapper。构建产物为 target/cas.jar。
构建 Docker 镜像:
bashdocker build -t cas-overlay:8.0.1 .1运行 Docker 容器:
bash#!/bin/bash set -euo pipefail DOCKER_CMD="docker" # 清理旧容器 $DOCKER_CMD stop cas-overlay-8.0-maven 2>/dev/null || true $DOCKER_CMD rm cas-overlay-8.0-maven 2>/dev/null || true # 启动新容器 $DOCKER_CMD run -d \ --name cas-overlay-8.0-maven \ -p 8080:8080 \ -p 8443:8443 \ --restart=always \ cas-overlay:8.0.1 # 验证启动状态 $DOCKER_CMD ps | grep cas-overlay-8.0-maven || $DOCKER_CMD logs cas-overlay-8.0-maven1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
访问 CAS 服务(适配反向代理)
- CAS 服务地址:
https://cas.bima.cc:8443/cas/login - 首次访问会提示证书警告,可忽略或添加信任(仅用于测试环境)
- 登录成功后,可在
/cas/logout路径注销会话
标准 OAuth 2.0 认证流程(示例)
配置三方应用
在 src/main/resources/services/ 目录下创建服务配置文件,例如 bima-cc-10001.json:
json
{
"@class": "org.apereo.cas.services.OidcRegisteredService",
"clientId": "oauth2-clientId-bima-web",
"clientSecret": "oauth2-clientSecret-bima-web",
"generateRefreshToken": true,
"supportedGrantTypes": [ "java.util.HashSet", [ "authorization_code", "refresh_token" ] ],
"supportedResponseTypes": [ "java.util.HashSet", [ "code" ] ],
"scopes": [ "java.util.HashSet", [ "openid", "profile", "email" ] ],
"serviceId": "^(http|https|imaps)://.*.bima.cc.*",
"name": "必码",
"id": 10001,
"evaluationOrder": 1,
"jwtAccessToken": true,
"signIdToken": true,
"jwks": "classpath:keystore.jwks",
"logoutUrl": "https://abc.bima.cc/logout",
"subjectType": "public",
"tokenEndpointAuthenticationMethod": "client_secret_post",
"attributeReleasePolicy": {
"@class": "org.apereo.cas.services.ReturnAllowedAttributeReleasePolicy",
"allowedAttributes": [ "java.util.ArrayList", [ "id", "oauthClientId", "userId", "userName", "userNickName", "userTelphone", "userEmail" ] ]
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1. 获取授权码(Authorization Code)
第三方应用重定向用户到 CAS 授权页面,用户登录并授权后,CAS 会返回授权码:
bash
# 重定向用户到授权页面
https://cas.bima.cc:8443/cas/oauth2.0/authorize?client_id=oauth2-clientId-bima-web&redirect_uri=https://abc.bima.cc&response_type=code1
2
2
2. 获取访问令牌(Access Token)
使用第一步获取的授权码,向 CAS 服务器请求访问令牌:
bash
# 使用授权码获取访问令牌
curl -k -X POST https://cas.bima.cc:8443/cas/oauth2.0/accessToken \
-d "client_id=oauth2-clientId-bima-web" \
-d "client_secret=oauth2-clientSecret-bima-web" \
-d "redirect_uri=https://abc.bima.cc" \
-d "code=<authorization_code>" \
-d "grant_type=authorization_code"1
2
3
4
5
6
7
2
3
4
5
6
7
3. 获取用户信息
使用访问令牌获取用户信息:
bash
# 使用访问令牌获取用户信息
https://cas.bima.cc:8443/cas/oauth2.0/profile?access_token=<access_token>1
2
2
4. 刷新访问令牌
当访问令牌过期时,使用刷新令牌获取新的访问令牌:
bash
# 使用刷新令牌获取新的访问令牌
curl -k -X POST https://cas.bima.cc:8443/cas/oauth2.0/accessToken \
-d "grant_type=refresh_token" \
-d "client_id=oauth2-clientId-bima-web" \
-d "client_secret=oauth2-clientSecret-bima-web" \
-d "refresh_token=<refresh_token>"1
2
3
4
5
6
2
3
4
5
6
标准 OIDC 认证流程(示例)
1. 获取授权码(Authorization Code)
第三方应用重定向用户到 CAS 授权页面,用户登录并授权后,CAS 会返回授权码:
bash
# 重定向用户到授权页面
https://cas.bima.cc:8443/cas/oidc/authorize?client_id=oauth2-clientId-bima-web&redirect_uri=https://abc.bima.cc&response_type=code&scope=openid1
2
2
2. 获取访问令牌(Access Token)
使用第一步获取的授权码,向 CAS 服务器请求访问令牌:
bash
# 使用授权码获取访问令牌
curl -k -X POST https://cas.bima.cc:8443/cas/oidc/token \
-d "client_id=oauth2-clientId-bima-web" \
-d "client_secret=oauth2-clientSecret-bima-web" \
-d "redirect_uri=https://abc.bima.cc" \
-d "code=<authorization_code>" \
-d "grant_type=authorization_code"1
2
3
4
5
6
7
2
3
4
5
6
7
3. 获取用户信息
使用访问令牌获取用户信息:
bash
# 使用访问令牌获取用户信息
https://cas.bima.cc:8443/cas/oidc/profile?access_token=<access_token>1
2
2
4. 刷新访问令牌
当访问令牌过期时,使用刷新令牌获取新的访问令牌:
bash
# 使用刷新令牌获取新的访问令牌
curl -k -X POST https://cas.bima.cc:8443/cas/oidc/token \
-d "grant_type=refresh_token" \
-d "client_id=oauth2-clientId-bima-web" \
-d "client_secret=oauth2-clientSecret-bima-web" \
-d "refresh_token=<refresh_token>"1
2
3
4
5
6
2
3
4
5
6
免责声明
本项目基于 GitHub 开源软件进行定制化开发,旨在为企业和开发者提供更便捷的项目基座解决方案。使用本项目时,请务必了解以下免责声明:
- 开源基础:本项目基于 GitHub 开源软件构建,遵循原开源协议的相关规定。
- 定制开发:我们对原开源软件进行了定制和扩展,以提供更优质的开发体验和功能支持。
- 责任限制:对于使用本项目可能产生的任何直接或间接的经济损失、数据丢失或其他问题,北京必码科技工作室不承担任何责任。
- 使用建议:在生产环境中使用本项目前,请进行充分的测试和验证,确保其符合您的业务需求和安全要求。
- 技术支持:我们提供技术支持服务,但不保证解决所有可能出现的问题。
- 合规使用:用户应确保在使用本项目时遵守相关法律法规和行业规范,不得用于任何违法或违规用途。