签入版本

This commit is contained in:
小蚂蚁云官方 2026-04-24 21:52:52 +08:00
commit 2e1c47846b
2330 changed files with 331101 additions and 0 deletions

45
.gitignore vendored Normal file
View File

@ -0,0 +1,45 @@
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store
/logs
.svn
.idea
.git
.flattened-pom.xml
derby.log

153
.jenkins/.jenkinsfile Normal file
View File

@ -0,0 +1,153 @@
pipeline {
agent any
options {
buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '2', numToKeepStr: '2'))
}
stages {
stage('Setup Parameters & ENV') {
steps {
configFileProvider([configFile(fileId: 'xiaomayi-cloud-nacos', variable: 'settingsFile')]) {
script {
def config = readJSON file:"$settingsFile"
def jobNameStr = JOB_NAME.tokenize('/') as String[]
def jobName = jobNameStr[0]
def branchConfig = config."branchConfig"."${env.BRANCH_NAME}"
def serviceConfig = config."serviceConfig"."${jobName}"
MAVEN_SET = branchConfig.MAVEN_SET
registry = branchConfig.registry
registryCredential = branchConfig.registryCredential
namespace = branchConfig.namespace
jenkinsAgent = branchConfig.jenkinsAgent
echo "jobName: ${jobName}"
echo "The Maven Set XML for the ${env.BRANCH_NAME} branch is: ${MAVEN_SET}"
projectName = serviceConfig.containerName
servicePath = serviceConfig.servicePath
jarPackageName = serviceConfig.jarPackageName
baseImage = "${registry}/xiaomayi-base/jdk:17.0.16-centos8-dos"
port = serviceConfig."port"
jarFile = "${jarPackageName}"
jarFilePath = "${servicePath}/target"
serverHost01= serviceConfig.serverHost01
echo "jarFile: ${jarFile}"
echo "jarFilePath: ${jarFilePath}"
echo "serverHost01: ${serverHost01}"
if ("${env.BRANCH_NAME}" == "dev") {
serverIP01 = branchConfig."${serverHost01}"
echo "serverIP01: ${serverIP01}"
properties([
parameters([
string(
defaultValue: 'dev',
description: '编译参数',
name: 'PROFILES',
trim: true
)
])
])
} else if ("${env.BRANCH_NAME}" == "test"){
serverIP01 = branchConfig."${serverHost01}"
echo "serverIP01: ${serverIP01}"
properties([
parameters([
string(
defaultValue: 'test',
description: '编译参数',
name: 'PROFILES',
trim: true
)
])
])
} else if ("${env.BRANCH_NAME}" == "master") {
properties([
parameters([
string(
defaultValue: 'prod',
description: '编译参数',
name: 'PROFILES',
trim: true
)
])
])
serverIP01 = branchConfig."${serverHost01}"
echo "serverIP01: ${serverIP01}"
} else {
error("Build failed because failed to fetch settings for branch")
}
echo "The serverIP for the branch: ${env.BRANCH_NAME}, profile: ${PROFILES} is: ${serverIP01}"
}
}
}
}
stage('Build') {
agent {
// docker {
// image "maven:3.8.6-openjdk-8"
// args '-v /etc/hosts:/etc/hosts:ro'
// label jenkinsAgent
// }
label {
label jenkinsAgent
}
}
steps {
configFileProvider([configFile(fileId: MAVEN_SET, variable: 'MAVEN_SETTINGS_XML')]) {
sh "/usr/local/maven/bin/mvn --settings ${MAVEN_SETTINGS_XML} dependency:purge-local-repository -Dinclude=com.xiaomayi -fpom.xml clean package -P${PROFILES} -Dmaven.test.skip=true"
sh "ls -lsh ${jarFilePath}/${jarFile}"
sh "md5sum ${jarFilePath}/${jarFile}"
// echo "MD5 ${jarFile}: `md5sum ${jarFilePath}/${jarFile}`"
}
}
}
stage('Container Build') {
options {
skipDefaultCheckout()
}
agent {
label {
label jenkinsAgent
}
}
steps {
script {
echo "VAR_BASE_IMAGE: ${baseImage}"
echo "VAR_PORT: ${port}"
echo "VAR_JARFILE: ${jarFile}"
echo "VAR_JARFILE_PATH: ${jarFilePath}"
docker.withRegistry("https://"+registry, registryCredential) {
dockerImage = docker.build("${namespace}/${projectName}:${PROFILES}-${env.BUILD_ID}", "--build-arg VAR_PROFILES=${PROFILES} --build-arg VAR_BASE_IMAGE=${baseImage} --build-arg VAR_PORT=${port} --build-arg VAR_JARFILE=${jarFile} --build-arg VAR_JARFILE_PATH=${jarFilePath} -f .jenkins/Dockerfile ./")
dockerImage.push()
// dockerImage.push('latest')
}
sh "docker rmi -f ${namespace}/${projectName}:${PROFILES}-${env.BUILD_ID}"
sh "docker rmi -f ${registry}/${namespace}/${projectName}:${PROFILES}-${env.BUILD_ID}"
}
// cleanWs()
}
}
stage("Deploy") {
options {
skipDefaultCheckout()
}
agent {
label {
label jenkinsAgent
}
}
steps {
script {
sh "ssh -o StrictHostKeyChecking=no esxi@${serverIP01} 'cd /usr/local/docker/nginx/html/xiaomayi-nacos-elevue/; ./deploy.sh deploy ${projectName} ${PROFILES}-${env.BUILD_ID}'"
}
}
}
}
}

35
.jenkins/Dockerfile Normal file
View File

@ -0,0 +1,35 @@
# 基础镜像地址
ARG VAR_BASE_IMAGE
# 基础镜像
FROM ${VAR_BASE_IMAGE}
# 镜像作者
LABEL MAINTAINER="xiaomayicloud@163.com"
# 环境变量
ARG VAR_PROFILES
# 端口
ARG VAR_PORT
# 文件
ARG VAR_JARFILE
# 文件地址
ARG VAR_JARFILE_PATH
# 设置端口
ENV PORT=${VAR_PORT}
ENV JAVA_OPTS="-server -Xms256m -Xmx1g -Xss256k"
# 设置文件包名
ENV JARFILE=${VAR_JARFILE}
# 设置环境变量
ENV PROFILES=${VAR_PROFILES}
# 暴露端口
EXPOSE ${PORT}
# 设置工作区
WORKDIR /opt/apps
# 拷贝文件
COPY ${VAR_JARFILE_PATH}/${VAR_JARFILE} ./
#CMD ["sh", "-c", "java ${JAVA_OPTS} -jar ${JARFILE} --spring.profiles.active=${PROFILES}"]
CMD ["sh", "-c", "java ${JAVA_OPTS} -jar ${JARFILE}"]

201
LICENSE Normal file
View File

@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

0
README.en.md Normal file
View File

191
README.md Normal file
View File

@ -0,0 +1,191 @@
<div align="center">
<p align="center">
<img src="./upload/demo/logo.png" height="150" alt="logo"/>
</p>
</div>
<h4 align="center">小蚂蚁云微服务Nacos+AntDesign版</h4>
<p align="center">
<p align="center">
<a href='https://gitee.com/xiaomayicloud/XiaoMaYi-Nacos-AntdVue/stargazers'>
<img src='https://gitee.com/xiaomayicloud/XiaoMaYi-Nacos-AntdVue/badge/star.svg?theme=gray' alt='star' />
</a>
<a href='https://gitee.com/xiaomayicloud/XiaoMaYi-Nacos-AntdVue/members'>
<img src='https://gitee.com/xiaomayicloud/XiaoMaYi-Nacos-AntdVue/badge/fork.svg?theme=gray' alt='fork' />
</a>
</p>
</p>
#### 项目介绍
基于SpringCloud、SpringSecurity、OAuth2、Nacos、Seata、MybatisPlus、Vue3、TypeScript、AntDesign、MySQL等技术栈实现的单体前后端分离后台管理系统后端基于Java语言采用SpringCloud、SpringBoot3、SpringSecurity、OAuth2、Nacos、Seata、MybatisPlus、MySQL等主流技术栈前端基于Vue3、TypeScript、Vite等技术栈实现采用AntDesign前端UI框架基于目前Vue前后端分离主流设计思想为了实现精细化分工模块化、组件化开发模式目前采用完全前后端分离架构实现前端应用通过API调用后端服务的方式实现数据交互整套系统拥有完善的RBAC权限架构体系权限颗粒度精细至按钮级别支持多主题切换模式多端兼容手机客户端、PAD平板、PC电脑等终端设备提升了用户使用体验同时为了简化开发本身集成了基础模块如用户模块、角色模块、菜单模块、部门模块、岗位模块、职级模块、日志模块、租户模块、字典模块、配置模块、行政区划、任务调度等基础功能模块 为了支持个别企业和开发者多租户功能需求,在设计之初已重点设计并支持多租户功能;为了实现项目快速开发,官方自定义研发了整套代码生成器功能,可以根据单个规范的数据表结构一键生成模块的后端文件代码和前端模块代码;为了高度适配企业、政府和开发者定制化项目的需求,目前单体前后端分离架构发行了多个版本,根据实际需求按需选择即可,软件框架本身已集成了权限架构体系和基础功能模块,极大的提高了开发效率,降低了项目研发成本以及节省了人力。
#### 软件架构
+ 采用 `JDK17` 基础开发环境,采用 `Maven` 构建工具;
+ 采用 `模块化``插件化` 设计,实现核心类库按需引入;
+ 采用 `Spring Cloud``Spring Cloud Alibaba``SpringBoot` 等微服务组件框架;
+ 采用 `Spring Authorization Server``SpringSecurity`等微服务统一认证框架;
+ 采用 `Nacos``Seata`、 等微服务统一认证框架;
+ 采用 `Vue3``TypeScript``AntDesign``Vite` 等技术实现完全前后端分离;
+ 采用 `MybatisPlus``hutool``fastjson2` 等主流开源框架;
+ 采用 `Json Web Token``redis` 缓存技术等令牌生成机制;
+ 采用 `AOP` 切面技术实现日志及权限访问控制,颗粒度至按钮节点级别;
+ 采用 `Validator` 验证器,实现 `DTO` 参数严格校验;
+ 采用 `SpringDoc``knife4j` 实现在线文档查看;
+ 采用 `redis` 缓存技术记录登录信息,实现在线强制退出机制;
+ 采用 `mybatis-plus-generator` 实现代码生成器,一键生成模块文件;
+ 采用 `MybatisPlus` 实现多租户数据隔离策略;
+ 集成 `阿里短信``邮件` 等核心功能,实现业务解耦;
+ 集成 `在线监控` 技术,实现应用健康度、性能在线监控;
+ 集成 `Druid` 数据库连接池,用于管理数据库连接;
#### 软件信息
+ 软件名称小蚂蚁云微服务Nacos+AntDesign版
+ 软件作者:@小蚂蚁云团队
+ 软件协议Apache-2.0
+ 官网网址:[https://www.xiaomayicloud.com](https://www.xiaomayicloud.com)
+ 文档网址:[http://docs.cloud.nacos.antdvue.xiaomayicloud.com](http://docs.cloud.nacos.antdvue.xiaomayicloud.com)
+ 演示地址:[http://manage.cloud.nacos.antdvue.xiaomayicloud.com](http://manage.cloud.nacos.antdvue.xiaomayicloud.com)
#### 功能模块
+ 主控制台:纯静态页面,提供给有需要的企业、开发者做定制化使用;
+ 用户管理:实现用户数据录入于管理,增强了账户安全;
+ 角色管理基于RBAC权限架构体系实现角色权限的管理
+ 菜单管理:用于权限菜单数据管理以及菜单节点权限数据管理;
+ 部门管理:用于管理系统架构体系中的部门数据;
+ 岗位管理:针对用户岗位属性的数据进行统一维护管理;
+ 租户管理:主要对租户入住数据进行管理和租户账号开通管理;
+ 日志管理:用于登录日志、操作日志管理和维护;
+ 参数管理:用于对系统核心参数的定义和管理;
+ 配置管理:用于对动态配置参数的统一管理和设置;
+ 字典管理:用于对字典数据、字典项数据的管理为维护;
+ 通知公告:主要对通知、公告等站外、站内数据进行管理;
+ 行政区划:针对全国行政区划分数据进行管理和维护;
+ 消息管理:对系统消息模块进行查阅和管理;
+ 短信日志:主要用于记录发送短信的日志信息进行管理;
+ 邮件日志:主要用于记录邮件发送记录和数据维护管理;
+ 文件日志:主要用于上传图片、文件等资源附件日志记录进行管理;
+ 文件模板:主要对系统中使用的文件模板进行上传和管理;
+ 邮件模板:主要对系统使用的邮件模板文件进行管理;
+ 短信模板:主要对系统短信模板信息进行录入、维护和管理;
+ 消息模板:主要针对系统业务发送的消息内容进行统一管理;
+ 系统设置:针对系统的常规配置数据进行可视化管理维护;
+ CMS管理主要用于网站相关的数据进行管理的模块
+ 任务调度:主要用于对定时任务进行定义和统一调度管理;
+ SQL监控主要结合Druid数据库连接池技术实现数据库SQL监控管理
+ 性能监控用于监控应用CPU、内存、服务器、磁盘、虚拟机等信息
+ 健康监控:主要用于对系统健康度和运行状态、性能进行监控;
+ 代码生成:官方定制化模板生成器,用于简化单模块开发,提高效率;
+ 接口文档用于查阅系统接口在线文档查阅API地址、入参、出参等
#### 其他版本
| 版本名称 | 说明 | 地址
|:--------------------------:|:----:| :----:
| 小蚂蚁云单体Vue3+ElementPlus版 | 基于SpringBoot3、SpringSecurity、MybatisPlus、Vue3、ElementPlus、TypeScript、Vite、MySQL等技术栈 | https://gitee.com/xiaomayicloud/XiaoMaYi-EleVue
| 小蚂蚁云单体Vue3+AntDesign版 | 基于SpringBoot3、SpringSecurity、MybatisPlus、Vue3、AntDesign、TypeScript、Vite、MySQL等技术栈 | https://gitee.com/xiaomayicloud/XiaoMaYi-AntdVue
| 小蚂蚁云单体Vue3+NaiveUI版 | 基于SpringBoot3、SpringSecurity、MybatisPlus、Vue3、NaiveUI、TypeScript、Vite、MySQL等技术栈 | https://gitee.com/xiaomayicloud/XiaoMaYi-NaiveVue
| 小蚂蚁云单体Vue3+ArcoDesign版 | 基于SpringBoot3、SpringSecurity、MybatisPlus、Vue3、ArcoDesign、TypeScript、Vite、MySQL等技术栈 | https://gitee.com/xiaomayicloud/XiaoMaYi-ArcoVue
| 小蚂蚁云微服务Nacos+ElementPlus版 | 基于SpringCloud、SpringSecurity、OAuth2、Nacos、Seata、MybatisPlus、Vue3、ElementPlus、TypeScript、Vite、MySQL等技术栈 | https://gitee.com/xiaomayicloud/XiaoMaYi-Nacos-EleVue
| 小蚂蚁云微服务Nacos+AntDesign版 | 基于SpringCloud、SpringSecurity、OAuth2、Nacos、Seata、MybatisPlus、Vue3、AntDesign、TypeScript、Vite、MySQL等技术栈 | https://gitee.com/xiaomayicloud/XiaoMaYi-Nacos-AntdVue
| 小蚂蚁云微服务Nacos+NaiveUI版 | 基于SpringCloud、SpringSecurity、OAuth2、Nacos、Seata、MybatisPlus、Vue3、NaiveUI、TypeScript、Vite、MySQL等技术栈 | https://gitee.com/xiaomayicloud/XiaoMaYi-Nacos-NaiveVue
| 小蚂蚁云微服务Nacos+ArcoDesign版 | 基于SpringCloud、SpringSecurity、OAuth2、Nacos、Seata、MybatisPlus、Vue3、ArcoDesign、TypeScript、Vite、MySQL等技术栈 | https://gitee.com/xiaomayicloud/XiaoMaYi-Nacos-ArcoVue
| 小蚂蚁云微服务Consul+ElementPlus版 | 基于SpringCloud、SpringSecurity、OAuth2、Consul、Seata、MybatisPlus、Vue3、ElementPlus、TypeScript、Vite、MySQL等技术栈 | https://gitee.com/xiaomayicloud/XiaoMaYi-Consul-EleVue
| 小蚂蚁云微服务Consul+AntDesign版 | 基于SpringCloud、SpringSecurity、OAuth2、Consul、Seata、MybatisPlus、Vue3、AntDesign、TypeScript、Vite、MySQL等技术栈 | https://gitee.com/xiaomayicloud/XiaoMaYi-Consul-AntdVue
| 小蚂蚁云微服务Consul+NaiveUI版 | 基于SpringCloud、SpringSecurity、OAuth2、Consul、Seata、MybatisPlus、Vue3、NaiveUI、TypeScript、Vite、MySQL等技术栈 | https://gitee.com/xiaomayicloud/XiaoMaYi-Consul-NaiveVue
| 小蚂蚁云微服务Consul+ArcoDesign版 | 基于SpringCloud、SpringSecurity、OAuth2、Consul、Seata、MybatisPlus、Vue3、ArcoDesign、TypeScript、Vite、MySQL等技术栈 | https://gitee.com/xiaomayicloud/XiaoMaYi-Consul-ArcoVue
#### 模块预览
<table>
<tr>
<td><img src="./upload/demo/1.png"/></td>
<td><img src="./upload/demo/2.png"/></td>
</tr>
<tr>
<td><img src="./upload/demo/3.png"/></td>
<td><img src="./upload/demo/4.png"/></td>
</tr>
<tr>
<td><img src="./upload/demo/5.png"/></td>
<td><img src="./upload/demo/6.png"/></td>
</tr>
<tr>
<td><img src="./upload/demo/7.png"/></td>
<td><img src="./upload/demo/8.png"/></td>
</tr>
<tr>
<td><img src="./upload/demo/9.png"/></td>
<td><img src="./upload/demo/10.png"/></td>
</tr>
<tr>
<td><img src="./upload/demo/11.png"/></td>
<td><img src="./upload/demo/12.png"/></td>
</tr>
<tr>
<td><img src="./upload/demo/13.png"/></td>
<td><img src="./upload/demo/14.png"/></td>
</tr>
<tr>
<td><img src="./upload/demo/15.png"/></td>
<td><img src="./upload/demo/16.png"/></td>
</tr>
<tr>
<td><img src="./upload/demo/17.png"/></td>
<td><img src="./upload/demo/18.png"/></td>
</tr>
<tr>
<td><img src="./upload/demo/19.png"/></td>
<td><img src="./upload/demo/20.png"/></td>
</tr>
<tr>
<td><img src="./upload/demo/21.png"/></td>
<td><img src="./upload/demo/22.png"/></td>
</tr>
<tr>
<td><img src="./upload/demo/23.png"/></td>
<td><img src="./upload/demo/24.png"/></td>
</tr>
<tr>
<td><img src="./upload/demo/25.png"/></td>
<td><img src="./upload/demo/26.png"/></td>
</tr>
<tr>
<td><img src="./upload/demo/27.png"/></td>
<td><img src="./upload/demo/28.png"/></td>
</tr>
<tr>
<td><img src="./upload/demo/29.png"/></td>
<td><img src="./upload/demo/30.png"/></td>
</tr>
<tr>
<td><img src="./upload/demo/31.png"/></td>
<td><img src="./upload/demo/32.png"/></td>
</tr>
</table>
#### 赞助商
如果您对我们的广告赞助计划感兴趣,欢迎随时与我们联系,了解更多合作细节。我们期待与您携手,共同开创美好未来!
若您有投放意向,可发送邮件到 : `xiaomayicloud@163.com` 咨询 [展示位赞助](http://docs.cloud.nacos.antdvue.xiaomayicloud.com/zh/other/sponsor.html) 的详细事宜。
#### 开源协议
开源软件遵循 [Apache 2.0 协议](https://www.apache.org/licenses/LICENSE-2.0.html)。
#### 版权信息
软件产品版权和最终解释权归【小蚂蚁云开源团队】所有,商业版使用需授权,未授权禁止恶意传播和用于商业用途,否则将追究相关人的法律责任。
本软件框架禁止任何单位和个人用于任何违法、侵害他人合法利益等恶意项目使用,禁止用于任何违反我国法律法规的一切项目研发,任何单位和个人使用本软件框架用于产品研发而产生的任何意外、疏忽、合约毁坏、诽谤、版权或知识产权侵犯及其造成的损失 (
包括但不限于直接、间接、附带或衍生的损失等),本团队不承担任何法律责任。本软件框架只能用于公司和个人内部的法律所允许的合法合规的软件产品(非开源和非竞品)研发,详细声明内容请官方阅读《框架免责声明》附件;
本项目包含的第三方源码和二进制文件之版权信息另行标注。
版权所有 Copyright © 2020~2026 [xiaomayicloud.com](https://www.xiaomayicloud.com) All rights reserved。
更多细节参阅 [LICENSE](LICENSE)

2
document/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*
!.gitignore

406
pom.xml Normal file
View File

@ -0,0 +1,406 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 项目组织名称 -->
<groupId>com.xiaomayi</groupId>
<!-- 项目名称 -->
<artifactId>xiaomayi</artifactId>
<!-- 项目版本号 -->
<version>${revision}</version>
<!-- 项目打包类型POM代表父级分模块管理 -->
<packaging>pom</packaging>
<!-- 项目名称 -->
<name>${project.artifactId}</name>
<!-- 项目描述 -->
<description>小蚂蚁云微服务后台管理系统</description>
<!-- 模块管理 -->
<modules>
<module>xiaomayi-auth</module>
<module>xiaomayi-gateway</module>
<module>xiaomayi-modules</module>
<module>xiaomayi-services</module>
<module>xiaomayi-visual</module>
<module>xiaomayi-common</module>
</modules>
<!-- 依赖版本管理 -->
<properties>
<!-- 全局版本号(实际项目使用时可自定义) -->
<revision>3.0.0</revision>
<!-- JDK版本号 -->
<java.version>17</java.version>
<!-- spring-cloud 微服务依赖版本此版本支持3.3.x、3.2.x -->
<spring-cloud.version>2023.0.3</spring-cloud.version>
<!-- spring-boot依赖版本号(备注v3.3.0更新于20240523) -->
<spring-boot.version>3.3.0</spring-boot.version>
<!-- 指定源代码使用的JDK版本 -->
<maven.compiler.source>17</maven.compiler.source>
<!-- 指定class文件的编译版本 -->
<maven.compiler.target>17</maven.compiler.target>
<!-- 设置工程构建编码 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 设置编译时JDK的版本 -->
<maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
<!-- 设置编码插件版本号 -->
<maven.compiler.version>3.8.1</maven.compiler.version>
<!-- 指定字符集编码 -->
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<!-- flatten版本统一管理插件版本号 -->
<flatten-maven-plugin.version>1.6.0</flatten-maven-plugin.version>
</properties>
<!-- 全局编译环境变量 -->
<profiles>
<!-- 本地开发环境 -->
<profile>
<id>local</id>
<properties>
<!-- 本地环境分支定义 -->
<package.environment>local</package.environment>
<!-- nacos注册配置中心服务地址 -->
<nacos.server>127.0.0.1:8848</nacos.server>
<!-- nacos服务注册分组 -->
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
<!-- nacos服务配置分组 -->
<nacos.config.group>DEFAULT_GROUP</nacos.config.group>
<!-- nacos登录账号 -->
<nacos.username>nacos</nacos.username>
<!-- nacos登录密码 -->
<nacos.password>nacos</nacos.password>
<!-- ELK日志收集服务地址 -->
<logstash.address>127.0.0.1:4560</logstash.address>
</properties>
<activation>
<!-- 设置默认开启本地环境 -->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 开发环境 -->
<profile>
<id>dev</id>
<properties>
<!-- 开发环境分支定义 -->
<package.environment>dev</package.environment>
<!-- nacos注册配置中心服务地址 -->
<nacos.server>127.0.0.1:8848</nacos.server>
<!-- nacos服务注册分组 -->
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
<!-- nacos服务配置分组 -->
<nacos.config.group>DEFAULT_GROUP</nacos.config.group>
<!-- nacos登录账号 -->
<nacos.username>nacos</nacos.username>
<!-- nacos登录密码 -->
<nacos.password>nacos</nacos.password>
<!-- ELK日志收集服务地址 -->
<logstash.address>127.0.0.1:4560</logstash.address>
</properties>
</profile>
<!-- 测试环境 -->
<profile>
<id>test</id>
<properties>
<!-- 测试环境分支定义 -->
<package.environment>test</package.environment>
<!-- nacos注册配置中心服务地址 -->
<nacos.server>127.0.0.1:8848</nacos.server>
<!-- nacos服务注册分组 -->
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
<!-- nacos服务配置分组 -->
<nacos.config.group>DEFAULT_GROUP</nacos.config.group>
<!-- nacos登录账号 -->
<nacos.username>nacos</nacos.username>
<!-- nacos登录密码 -->
<nacos.password>nacos</nacos.password>
<!-- ELK日志收集服务地址 -->
<logstash.address>127.0.0.1:4560</logstash.address>
</properties>
</profile>
<!-- 预发布环境 -->
<profile>
<id>uat</id>
<properties>
<!-- 预发布环境分支定义 -->
<package.environment>uat</package.environment>
<!-- nacos注册配置中心服务地址 -->
<nacos.server>127.0.0.1:8848</nacos.server>
<!-- nacos服务注册分组 -->
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
<!-- nacos服务配置分组 -->
<nacos.config.group>DEFAULT_GROUP</nacos.config.group>
<!-- nacos登录账号 -->
<nacos.username>nacos</nacos.username>
<!-- nacos登录密码 -->
<nacos.password>nacos</nacos.password>
<!-- ELK日志收集服务地址 -->
<logstash.address>127.0.0.1:4560</logstash.address>
</properties>
</profile>
<!-- 生产环境 -->
<profile>
<id>prod</id>
<properties>
<!-- 生产环境分支定义 -->
<package.environment>prod</package.environment>
<!-- nacos注册配置中心服务地址 -->
<nacos.server>127.0.0.1:8848</nacos.server>
<!-- nacos服务注册分组 -->
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
<!-- nacos服务配置分组 -->
<nacos.config.group>DEFAULT_GROUP</nacos.config.group>
<!-- nacos登录账号 -->
<nacos.username>nacos</nacos.username>
<!-- nacos登录密码 -->
<nacos.password>nacos</nacos.password>
<!-- ELK日志收集服务地址 -->
<logstash.address>127.0.0.1:4560</logstash.address>
</properties>
</profile>
</profiles>
<!-- 依赖管理 -->
<dependencyManagement>
<!-- 依赖声明 -->
<dependencies>
<!-- spring-cloud 微服务依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring-boot 公共依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 阿里微服务公共版本定义 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-alibaba</artifactId>
<version>${revision}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 核心类库公共版本定义 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-all</artifactId>
<version>${revision}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 系统服务API模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-system-api</artifactId>
<version>${revision}</version>
</dependency>
<!-- 用户服务API模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-user-api</artifactId>
<version>${revision}</version>
</dependency>
<!-- CMS内容服务API模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-community-api</artifactId>
<version>${revision}</version>
</dependency>
<!-- 后台服务API模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-admin-api</artifactId>
<version>${revision}</version>
</dependency>
<!-- 网站服务API模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-web-api</artifactId>
<version>${revision}</version>
</dependency>
<!-- 用户中心服务API模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-ucenter-api</artifactId>
<version>${revision}</version>
</dependency>
<!-- 商家服务API模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-merchant-api</artifactId>
<version>${revision}</version>
</dependency>
<!-- 客户端服务API模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-mobile-api</artifactId>
<version>${revision}</version>
</dependency>
<!-- 订单服务API模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-order-api</artifactId>
<version>${revision}</version>
</dependency>
<!-- 商品服务API模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-goods-api</artifactId>
<version>${revision}</version>
</dependency>
<!-- 案例服务API模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-example-api</artifactId>
<version>${revision}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 编译打包 -->
<build>
<!-- 设置应用打包名称 -->
<finalName>${project.name}</finalName>
<!-- 插件管理 -->
<plugins>
<!-- 配置当前项目的jdk版本信息 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
<configuration>
<!-- 编译时参数选项 -->
<parameters>true</parameters>
<!-- 输出编译详细细节 -->
<verbose>false</verbose>
<!-- 指定编码 -->
<encoding>UTF-8</encoding>
<!-- 指定源代码使用的JDK版本 -->
<target>${maven.compiler.target}</target>
<!-- 指定class文件的编译版本 -->
<source>${maven.compiler.source}</source>
<!-- 指定字符集编码 -->
<encoding>${maven.compiler.encoding}</encoding>
<!-- 设置编译时JDK版本号 -->
<compilerVersion>${maven.compiler.compilerVersion}</compilerVersion>
<!-- 设置跳过 -->
<skip>true</skip>
</configuration>
</plugin>
<!-- flatten统一管理版本号 -->
<plugin>
<!-- 使用flatten-maven-plugin插件 -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>${flatten-maven-plugin.version}</version>
<!-- 插件配置 -->
<configuration>
<!-- 更新原始pom.xml文件如果为true会修改原pom通常建议为false -->
<updatePomFile>true</updatePomFile>
<!-- 扁平化模式仅解析CI/CD友好的动态版本变量 -->
<flattenMode>resolveCiFriendliesOnly</flattenMode>
<!-- 定义POM文件中哪些元素需要被解析和扁平化处理 -->
<pomElements>
<!-- 解析版本号,替换占位符为实际值 -->
<version>resolve</version>
<!-- 解析groupId替换占位符为实际值 -->
<groupId>resolve</groupId>
<!-- 解析artifactId替换占位符为实际值 -->
<artifactId>resolve</artifactId>
<!-- 解析依赖声明,替换依赖中的占位符为实际值 -->
<dependencies>resolve</dependencies>
<!-- 解析依赖管理部分,替换其中的占位符为实际值 -->
<dependencyManagement>resolve</dependencyManagement>
<!-- 解析properties属性替换属性值为实际值 -->
<properties>resolve</properties>
<!-- 解析父POM引用确保父POM信息被正确解析 -->
<parent>resolve</parent>
</pomElements>
</configuration>
<!-- 插件执行配置 -->
<executions>
<!-- 第一个执行目标:执行扁平化操作 -->
<execution>
<id>flatten</id>
<!-- 在process-resources阶段执行修改后的阶段 -->
<phase>process-resources</phase>
<goals>
<!-- 执行flatten目标生成扁平化的POM文件 -->
<goal>flatten</goal>
</goals>
</execution>
<!-- 第二个执行目标:清理扁平化生成的文件 -->
<execution>
<id>flatten.clean</id>
<!-- 在clean阶段执行 -->
<phase>clean</phase>
<goals>
<!-- 执行clean目标清理生成的扁平化POM文件 -->
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<!-- 资源配置 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 关闭过滤 -->
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/webapp/</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
<!-- 开启过滤,即该资源中的变量将会被过滤器中的值替换 -->
<filtering>true</filtering>
<!-- 引入所有,匹配文件进行过滤 -->
<includes>
<include>application*</include>
<include>bootstrap*</include>
<include>logback*</include>
</includes>
</resource>
</resources>
</build>
<repositories>
<repository>
<id>public</id>
<name>aliyun nexus</name>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>aliyun nexus</name>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

BIN
upload/demo/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

BIN
upload/demo/10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

BIN
upload/demo/11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

BIN
upload/demo/12.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

BIN
upload/demo/13.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

BIN
upload/demo/14.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

BIN
upload/demo/15.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

BIN
upload/demo/16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

BIN
upload/demo/17.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

BIN
upload/demo/18.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

BIN
upload/demo/19.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

BIN
upload/demo/1_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

BIN
upload/demo/1_3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

BIN
upload/demo/1_4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

BIN
upload/demo/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

BIN
upload/demo/20.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

BIN
upload/demo/21.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

BIN
upload/demo/22.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

BIN
upload/demo/23.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

BIN
upload/demo/24.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

BIN
upload/demo/25.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

BIN
upload/demo/26.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

BIN
upload/demo/27.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 390 KiB

BIN
upload/demo/28.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

BIN
upload/demo/29.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

BIN
upload/demo/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

BIN
upload/demo/30.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

BIN
upload/demo/31.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

BIN
upload/demo/32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

BIN
upload/demo/33.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 KiB

BIN
upload/demo/34.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 KiB

BIN
upload/demo/35.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 KiB

BIN
upload/demo/36.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 KiB

BIN
upload/demo/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

BIN
upload/demo/5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

BIN
upload/demo/6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 KiB

BIN
upload/demo/7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB

BIN
upload/demo/8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

BIN
upload/demo/9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

BIN
upload/demo/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
upload/simyou.ttf Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 KiB

69
xiaomayi-auth/pom.xml Normal file
View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi</artifactId>
<version>${revision}</version>
</parent>
<!-- 项目名称 -->
<artifactId>xiaomayi-auth</artifactId>
<!-- 项目打包类型JAR包 -->
<packaging>jar</packaging>
<!-- 项目名称 -->
<name>xiaomayi-auth</name>
<!-- 项目描述 -->
<description>小蚂蚁云认证授权服务</description>
<!-- 依赖声明 -->
<dependencies>
<!-- OAuth2 授权认证模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-oauth</artifactId>
</dependency>
<!-- Nacos 注册配置中心 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-nacos</artifactId>
</dependency>
<!-- 操作日志 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-logger</artifactId>
</dependency>
<!-- OSS云存储依赖模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-oss</artifactId>
</dependency>
<!-- Spring Boot Admin 监控客户端 -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
</dependencies>
<!-- 构建打包配置 -->
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,111 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth;
import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure;
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
import com.xiaomayi.feign.annotation.EnableXFeignClients;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* <p>
* 授权应用服务
* </p>
*
* @author 小蚂蚁云团队
* @since 2023-06-12
*/
@SpringBootApplication(exclude = {
// 排除Druid数据源配置
DruidDataSourceAutoConfigure.class,
DataSourceAutoConfiguration.class,
MybatisPlusAutoConfiguration.class,
// 排除安全认证配置
SecurityAutoConfiguration.class
}, scanBasePackages = {"com.xiaomayi.*"})
@MapperScan("com.xiaomayi.**.**.mapper")
@EnableDiscoveryClient
@EnableXFeignClients
public class XMAuthApplication {
public static void main(String[] args) {
SpringApplication.run(XMAuthApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ 小蚂蚁云数据中台【认证授权服务】启动成功 ლ(´ڡ`ლ)゙");
}
}

View File

@ -0,0 +1,206 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.controller;
import com.xiaomayi.core.utils.R;
import com.xiaomayi.auth.dto.oauth2authorizationconsent.Oauth2AuthorizationConsentAddDTO;
import com.xiaomayi.auth.dto.oauth2authorizationconsent.Oauth2AuthorizationConsentListDTO;
import com.xiaomayi.auth.dto.oauth2authorizationconsent.Oauth2AuthorizationConsentPageDTO;
import com.xiaomayi.auth.dto.oauth2authorizationconsent.Oauth2AuthorizationConsentUpdateDTO;
import com.xiaomayi.auth.service.Oauth2AuthorizationConsentService;
import com.xiaomayi.logger.annotation.RequestLog;
import com.xiaomayi.logger.enums.RequestType;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能 前端控制器
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@RestController
@RequestMapping("/oauth2/authorization/consent")
@Tag(name = "OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意 功能管理", description = "OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意 功能管理")
@AllArgsConstructor
public class Oauth2AuthorizationConsentController {
private final Oauth2AuthorizationConsentService oauth2AuthorizationConsentService;
/**
* 查询分页列表
*
* @param oauth2AuthorizationConsentPageDTO 查询条件
* @return 返回结果
*/
@Operation(summary = "查询分页列表", description = "查询分页列表")
@PreAuthorize("@pms.hasAuthority('sys:oauth2AuthorizationConsent:page')")
@GetMapping("/page")
public R page(@SpringQueryMap Oauth2AuthorizationConsentPageDTO oauth2AuthorizationConsentPageDTO) {
return R.ok(oauth2AuthorizationConsentService.page(oauth2AuthorizationConsentPageDTO));
}
/**
* 查询数据列表
*
* @param oauth2AuthorizationConsentListDTO 查询条件
* @return 返回结果
*/
@Operation(summary = "查询数据列表", description = "查询数据列表")
@PreAuthorize("@pms.hasAuthority('sys:oauth2AuthorizationConsent:list')")
@GetMapping("/list")
public R getList(@SpringQueryMap Oauth2AuthorizationConsentListDTO oauth2AuthorizationConsentListDTO) {
return R.ok(oauth2AuthorizationConsentService.getList(oauth2AuthorizationConsentListDTO));
}
/**
* 根据ID查询详情
*
* @param id OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能ID
* @return 返回结果
*/
@Operation(summary = "根据ID查询详情", description = "根据ID查询详情")
@PreAuthorize("@pms.hasAuthority('sys:oauth2AuthorizationConsent:detail')")
@GetMapping("/detail/{id}")
public R getDetail(@PathVariable("id") String id) {
return R.ok(oauth2AuthorizationConsentService.getDetail(id));
}
/**
* 添加OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能
*
* @param oauth2AuthorizationConsentAddDTO 参数
* @return 返回结果
*/
@Operation(summary = "添加OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意功能", description = "添加OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意功能")
@RequestLog(title = "添加OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意功能", type = RequestType.INSERT)
@PreAuthorize("@pms.hasAuthority('sys:oauth2AuthorizationConsent:add')")
@PostMapping("/add")
public R add(@RequestBody @Validated Oauth2AuthorizationConsentAddDTO oauth2AuthorizationConsentAddDTO) {
return R.ok(oauth2AuthorizationConsentService.add(oauth2AuthorizationConsentAddDTO));
}
/**
* 更新OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能
*
* @param oauth2AuthorizationConsentUpdateDTO 参数
* @return 返回结果
*/
@Operation(summary = "更新OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意功能", description = "更新OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意功能")
@RequestLog(title = "更新OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意功能", type = RequestType.UPDATE)
@PreAuthorize("@pms.hasAuthority('sys:oauth2AuthorizationConsent:update')")
@PutMapping("/update")
public R update(@RequestBody @Validated Oauth2AuthorizationConsentUpdateDTO oauth2AuthorizationConsentUpdateDTO) {
return R.ok(oauth2AuthorizationConsentService.update(oauth2AuthorizationConsentUpdateDTO));
}
/**
* 删除OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能
*
* @param id 记录ID
* @return 返回结果
*/
@Operation(summary = "删除OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意功能", description = "删除OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意功能")
@RequestLog(title = "删除OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意功能", type = RequestType.DELETE)
@PreAuthorize("@pms.hasAuthority('sys:oauth2AuthorizationConsent:delete')")
@DeleteMapping("/delete/{id}")
public R delete(@PathVariable String id) {
return R.ok(oauth2AuthorizationConsentService.delete(id));
}
/**
* 批量删除OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能
*
* @param idList 记录ID
* @return 返回结果
*/
@Operation(summary = "批量删除OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意功能", description = "批量删除OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意功能")
@RequestLog(title = "批量删除OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意功能", type = RequestType.BATCH_DELETE)
@PreAuthorize("@pms.hasAuthority('sys:oauth2AuthorizationConsent:batchDelete')")
@DeleteMapping("/batchDelete")
public R batchDelete(@RequestBody @Validated List<String> idList) {
return R.ok(oauth2AuthorizationConsentService.batchDelete(idList));
}
}

View File

@ -0,0 +1,158 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.controller;
import com.xiaomayi.core.utils.R;
import com.xiaomayi.auth.dto.oauth2authorization.Oauth2AuthorizationPageDTO;
import com.xiaomayi.auth.service.Oauth2AuthorizationService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程客户端凭证流程密码流程设备流程等多种授权方式 前端控制器
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@RestController
@RequestMapping("/oauth2/authorization")
@Tag(name = "OAuth2 授权记录,存储授权流程中的各种令牌和状态信息,支持授权码流程、客户端凭证流程、密码流程、设备流程等多种授权方式管理", description = "OAuth2 授权记录,存储授权流程中的各种令牌和状态信息,支持授权码流程、客户端凭证流程、密码流程、设备流程等多种授权方式管理")
@AllArgsConstructor
public class Oauth2AuthorizationController {
private final Oauth2AuthorizationService oauth2AuthorizationService;
/**
* 查询分页列表
*
* @param oauth2AuthorizationPageDTO 查询条件
* @return 返回结果
*/
@Operation(summary = "查询分页列表", description = "查询分页列表")
@PreAuthorize("@pms.hasAuthority('sys:oauth2Authorization:page')")
@GetMapping("/page")
public R page(@SpringQueryMap Oauth2AuthorizationPageDTO oauth2AuthorizationPageDTO) {
return R.ok(oauth2AuthorizationService.page(oauth2AuthorizationPageDTO));
}
/**
* 根据ID查询详情
*
* @param id OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程客户端凭证流程密码流程设备流程等多种授权方式ID
* @return 返回结果
*/
@Operation(summary = "根据ID查询详情", description = "根据ID查询详情")
@PreAuthorize("@pms.hasAuthority('sys:oauth2Authorization:detail')")
@GetMapping("/detail/{id}")
public R getDetail(@PathVariable("id") String id) {
return R.ok(oauth2AuthorizationService.getDetail(id));
}
/**
* 撤销OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程客户端凭证流程密码流程设备流程等多种授权方式
*
* @param id 记录ID
* @return 返回结果
*/
@Operation(summary = "撤销令牌", description = "撤销令牌")
@PreAuthorize("@pms.hasAuthority('sys:oauth2Authorization:revoke')")
@DeleteMapping("/revoke/{id}")
public R revoke(@PathVariable String id) {
return oauth2AuthorizationService.revoke(id);
}
/**
* 批量撤销OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程客户端凭证流程密码流程设备流程等多种授权方式
*
* @param idList 记录ID
* @return 返回结果
*/
@Operation(summary = "批量撤销令牌", description = "批量撤销令牌")
@PreAuthorize("@pms.hasAuthority('sys:oauth2Authorization:batchRevoke')")
@DeleteMapping("/batchRevoke")
public R batchRevoke(@RequestBody @Validated List<String> idList) {
return oauth2AuthorizationService.batchRevoke(idList);
}
}

View File

@ -0,0 +1,273 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.controller;
import com.xiaomayi.core.constant.CacheConstant;
import com.xiaomayi.core.utils.R;
import com.xiaomayi.auth.dto.oauth2registeredclient.Oauth2RegisteredClientAddDTO;
import com.xiaomayi.auth.dto.oauth2registeredclient.Oauth2RegisteredClientListDTO;
import com.xiaomayi.auth.dto.oauth2registeredclient.Oauth2RegisteredClientPageDTO;
import com.xiaomayi.auth.dto.oauth2registeredclient.Oauth2RegisteredClientUpdateDTO;
import com.xiaomayi.auth.service.Oauth2RegisteredClientService;
import com.xiaomayi.logger.annotation.RequestLog;
import com.xiaomayi.logger.enums.RequestType;
import com.xiaomayi.oauth.utils.OAuth2ClientUtils;
import com.xiaomayi.oauth.vo.RegisteredClientVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息 前端控制器
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@RestController
@RequestMapping("/oauth2/registered/client")
@Tag(name = "OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息管理", description = "OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息管理")
@AllArgsConstructor
public class Oauth2RegisteredClientController {
private final Oauth2RegisteredClientService oauth2RegisteredClientService;
/**
* 查询分页列表
*
* @param oauth2RegisteredClientPageDTO 查询条件
* @return 返回结果
*/
@Operation(summary = "查询分页列表", description = "查询分页列表")
@PreAuthorize("@pms.hasAuthority('sys:oauth2RegisteredClient:page')")
@GetMapping("/page")
public R page(@SpringQueryMap Oauth2RegisteredClientPageDTO oauth2RegisteredClientPageDTO) {
return R.ok(oauth2RegisteredClientService.page(oauth2RegisteredClientPageDTO));
}
/**
* 查询数据列表
*
* @param oauth2RegisteredClientListDTO 查询条件
* @return 返回结果
*/
@Operation(summary = "查询数据列表", description = "查询数据列表")
@PreAuthorize("@pms.hasAuthority('sys:oauth2RegisteredClient:list')")
@GetMapping("/list")
public R getList(@SpringQueryMap Oauth2RegisteredClientListDTO oauth2RegisteredClientListDTO) {
return R.ok(oauth2RegisteredClientService.getList(oauth2RegisteredClientListDTO));
}
/**
* 根据ID查询详情
*
* @param id OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息ID
* @return 返回结果
*/
@Operation(summary = "根据ID查询详情", description = "根据ID查询详情")
@PreAuthorize("@pms.hasAuthority('sys:oauth2RegisteredClient:detail')")
@GetMapping("/detail/{id}")
public R getDetail(@PathVariable("id") String id) {
return R.ok(oauth2RegisteredClientService.getDetail(id));
}
/**
* 添加OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息
*
* @param oauth2RegisteredClientAddDTO 参数
* @return 返回结果
*/
@Operation(summary = "添加OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息", description = "添加OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息")
@RequestLog(title = "添加OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息", type = RequestType.INSERT)
@PreAuthorize("@pms.hasAuthority('sys:oauth2RegisteredClient:add')")
@PostMapping("/add")
public R add(@RequestBody @Validated Oauth2RegisteredClientAddDTO oauth2RegisteredClientAddDTO) {
return R.ok(oauth2RegisteredClientService.add(oauth2RegisteredClientAddDTO));
}
/**
* 更新OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息
*
* @param oauth2RegisteredClientUpdateDTO 参数
* @return 返回结果
*/
@Operation(summary = "更新OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息", description = "更新OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息")
@RequestLog(title = "更新OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息", type = RequestType.UPDATE)
@PreAuthorize("@pms.hasAuthority('sys:oauth2RegisteredClient:update')")
@PutMapping("/update")
public R update(@RequestBody @Validated Oauth2RegisteredClientUpdateDTO oauth2RegisteredClientUpdateDTO) {
return R.ok(oauth2RegisteredClientService.update(oauth2RegisteredClientUpdateDTO));
}
/**
* 删除OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息
*
* @param id 记录ID
* @return 返回结果
*/
@Operation(summary = "删除OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息", description = "删除OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息")
@RequestLog(title = "删除OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息", type = RequestType.DELETE)
@PreAuthorize("@pms.hasAuthority('sys:oauth2RegisteredClient:delete')")
@DeleteMapping("/delete/{id}")
public R delete(@PathVariable String id) {
return oauth2RegisteredClientService.delete(id);
}
/**
* 批量删除OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息
*
* @param idList 记录ID
* @return 返回结果
*/
@Operation(summary = "批量删除OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息", description = "批量删除OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息")
@RequestLog(title = "批量删除OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息", type = RequestType.BATCH_DELETE)
@PreAuthorize("@pms.hasAuthority('sys:oauth2RegisteredClient:batchDelete')")
@DeleteMapping("/batchDelete")
public R batchDelete(@RequestBody @Validated List<String> idList) {
return oauth2RegisteredClientService.batchDelete(idList);
}
/**
* 刷新客户端缓存
*
* @return 返回结果
*/
@Operation(summary = "刷新客户端缓存", description = "刷新客户端缓存")
@RequestLog(title = "刷新客户端缓存", type = RequestType.CACHE)
@GetMapping("/refreshCache")
public R refreshCache() {
return oauth2RegisteredClientService.refreshCache();
}
/**
* 获取客户端列表
*
* @return 返回结果
*/
@Operation(summary = "获取客户端列表", description = "获取客户端列表")
@PreAuthorize("@pms.hasAuthority('sys:oauth2RegisteredClient:client')")
@GetMapping("/getRegisteredClientList")
public List<RegisteredClientVO> getRegisteredClientList() {
return oauth2RegisteredClientService.getRegisteredClientList();
}
/**
* 生成客户端信息
*
* @param clientId 客户端ID
* @param clientSecret 客户端秘钥
* @return 返回结果
*/
@Operation(summary = "生成客户端信息", description = "生成客户端信息")
@GetMapping("/generate")
public R generate(@RequestParam String clientId, @RequestParam String clientSecret) {
String basicAuthHeader = OAuth2ClientUtils.generateBasicAuthHeader(clientId, clientSecret);
System.out.println("Basic认证头: " + basicAuthHeader);
// 输出: Basic认证头: Basic YWRtaW46MTIzNDU2
// 示例2: 解码Basic认证头
String[] credentials = OAuth2ClientUtils.decodeBasicAuthHeader(basicAuthHeader);
System.out.println("解码结果 - 客户端ID: " + credentials[0] + ", 客户端密钥: " + credentials[1]);
// 输出: 解码结果 - 客户端ID: admin, 客户端密钥: 123456
// 示例3: 加密客户端密钥
String encodedSecret = OAuth2ClientUtils.encodeClientSecret(clientSecret);
System.out.println("加密后的密钥: " + encodedSecret);
// 输出: 加密后的密钥: {bcrypt}$2a$10$bWKHoJPJBAzExn0NfCNSLurYq1gQQqrs0pNTAf58DD9es2OO.Rhre
// 示例4: 验证客户端密钥
boolean isValid = OAuth2ClientUtils.validateClientSecret(clientSecret, encodedSecret);
System.out.println("密钥验证结果: " + isValid);
// 输出: 密钥验证结果: true
// 结果输出
Map<String, Object> map = new HashMap<>();
map.put("clientId", clientId);
map.put("clientSecret", clientSecret);
map.put("basicAuthHeader", basicAuthHeader);
map.put("encodedSecret", encodedSecret);
return R.ok(map);
}
}

View File

@ -0,0 +1,224 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.dto.oauth2authorization;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
* <p>
* OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程客户端凭证流程密码流程设备流程等多种授权方式
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Data
@Schema(name = "OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程、客户端凭证流程、密码流程、设备流程等多种授权方式添加DTO", description = "OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程、客户端凭证流程、密码流程、设备流程等多种授权方式添加DTO")
public class Oauth2AuthorizationAddDTO {
@Schema(description = "注册客户端ID")
@NotBlank(message = "注册客户端ID不能为空")
private String registeredClientId;
@Schema(description = "主体名称,通常是用户标识或用户名")
@NotBlank(message = "主体名称,通常是用户标识或用户名不能为空")
private String principalName;
@Schema(description = "授权许可类型如authorization_code、client_credentials、password、refresh_token等")
@NotBlank(message = "授权许可类型如authorization_code、client_credentials、password、refresh_token等不能为空")
private String authorizationGrantType;
@Schema(description = "已授权范围,用户实际同意的权限范围列表")
@NotBlank(message = "已授权范围,用户实际同意的权限范围列表不能为空")
private String authorizedScopes;
@Schema(description = "授权属性,存储授权过程中的自定义属性和扩展数据")
private byte[] attributes;
@Schema(description = "状态参数用于防止CSRF攻击和保持请求状态")
@NotBlank(message = "状态参数用于防止CSRF攻击和保持请求状态不能为空")
private String state;
@Schema(description = "授权码值,加密存储的授权码")
private byte[] authorizationCodeValue;
@Schema(description = "授权码颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime authorizationCodeIssuedAt;
@Schema(description = "授权码过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime authorizationCodeExpiresAt;
@Schema(description = "授权码元数据,存储授权码相关的附加信息")
private byte[] authorizationCodeMetadata;
@Schema(description = "访问令牌值,加密存储的访问令牌")
private byte[] accessTokenValue;
@Schema(description = "访问令牌颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime accessTokenIssuedAt;
@Schema(description = "访问令牌过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime accessTokenExpiresAt;
@Schema(description = "访问令牌元数据,存储令牌类型、使用范围等信息")
private byte[] accessTokenMetadata;
@Schema(description = "访问令牌类型如Bearer、MAC等")
@NotBlank(message = "访问令牌类型如Bearer、MAC等不能为空")
private String accessTokenType;
@Schema(description = "访问令牌范围,该令牌实际可访问的资源范围")
@NotBlank(message = "访问令牌范围,该令牌实际可访问的资源范围不能为空")
private String accessTokenScopes;
@Schema(description = "OpenID Connect ID令牌值")
private byte[] oidcIdTokenValue;
@Schema(description = "ID令牌颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime oidcIdTokenIssuedAt;
@Schema(description = "ID令牌过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime oidcIdTokenExpiresAt;
@Schema(description = "ID令牌元数据存储用户身份信息等")
private byte[] oidcIdTokenMetadata;
@Schema(description = "刷新令牌值,用于获取新的访问令牌")
private byte[] refreshTokenValue;
@Schema(description = "刷新令牌颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime refreshTokenIssuedAt;
@Schema(description = "刷新令牌过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime refreshTokenExpiresAt;
@Schema(description = "刷新令牌元数据")
private byte[] refreshTokenMetadata;
@Schema(description = "设备流用户码值")
private byte[] userCodeValue;
@Schema(description = "用户码颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime userCodeIssuedAt;
@Schema(description = "用户码过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime userCodeExpiresAt;
@Schema(description = "用户码元数据")
private byte[] userCodeMetadata;
@Schema(description = "设备流设备码值")
private byte[] deviceCodeValue;
@Schema(description = "设备码颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime deviceCodeIssuedAt;
@Schema(description = "设备码过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime deviceCodeExpiresAt;
@Schema(description = "设备码元数据")
private byte[] deviceCodeMetadata;
}

View File

@ -0,0 +1,95 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.dto.oauth2authorization;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* <p>
* OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程客户端凭证流程密码流程设备流程等多种授权方式
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Data
@Schema(name = "OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程、客户端凭证流程、密码流程、设备流程等多种授权方式列表查询DTO", description = "OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程、客户端凭证流程、密码流程、设备流程等多种授权方式列表查询DTO")
public class Oauth2AuthorizationListDTO {
@Schema(description = "主体名称,通常是用户标识或用户名")
private String principalName;
@Schema(description = "访问令牌颁发时间")
private String accessTokenIssuedAt;
}

View File

@ -0,0 +1,98 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.dto.oauth2authorization;
import com.xiaomayi.mybatis.dto.PageDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程客户端凭证流程密码流程设备流程等多种授权方式
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(name = "OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程、客户端凭证流程、密码流程、设备流程等多种授权方式分页查询DTO", description = "OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程、客户端凭证流程、密码流程、设备流程等多种授权方式分页查询DTO")
public class Oauth2AuthorizationPageDTO extends PageDTO {
@Schema(description = "主体名称,通常是用户标识或用户名")
private String principalName;
@Schema(description = "访问令牌颁发时间")
private String accessTokenIssuedAt;
}

View File

@ -0,0 +1,228 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.dto.oauth2authorization;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
* <p>
* OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程客户端凭证流程密码流程设备流程等多种授权方式
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Data
@Schema(name = "OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程、客户端凭证流程、密码流程、设备流程等多种授权方式更新DTO", description = "OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程、客户端凭证流程、密码流程、设备流程等多种授权方式更新DTO")
public class Oauth2AuthorizationUpdateDTO {
@Schema(description = "授权记录主键ID")
@NotBlank(message = "授权记录主键ID不能为空")
private String id;
@Schema(description = "注册客户端ID")
@NotBlank(message = "注册客户端ID不能为空")
private String registeredClientId;
@Schema(description = "主体名称,通常是用户标识或用户名")
@NotBlank(message = "主体名称,通常是用户标识或用户名不能为空")
private String principalName;
@Schema(description = "授权许可类型如authorization_code、client_credentials、password、refresh_token等")
@NotBlank(message = "授权许可类型如authorization_code、client_credentials、password、refresh_token等不能为空")
private String authorizationGrantType;
@Schema(description = "已授权范围,用户实际同意的权限范围列表")
@NotBlank(message = "已授权范围,用户实际同意的权限范围列表不能为空")
private String authorizedScopes;
@Schema(description = "授权属性,存储授权过程中的自定义属性和扩展数据")
private byte[] attributes;
@Schema(description = "状态参数用于防止CSRF攻击和保持请求状态")
@NotBlank(message = "状态参数用于防止CSRF攻击和保持请求状态不能为空")
private String state;
@Schema(description = "授权码值,加密存储的授权码")
private byte[] authorizationCodeValue;
@Schema(description = "授权码颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime authorizationCodeIssuedAt;
@Schema(description = "授权码过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime authorizationCodeExpiresAt;
@Schema(description = "授权码元数据,存储授权码相关的附加信息")
private byte[] authorizationCodeMetadata;
@Schema(description = "访问令牌值,加密存储的访问令牌")
private byte[] accessTokenValue;
@Schema(description = "访问令牌颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime accessTokenIssuedAt;
@Schema(description = "访问令牌过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime accessTokenExpiresAt;
@Schema(description = "访问令牌元数据,存储令牌类型、使用范围等信息")
private byte[] accessTokenMetadata;
@Schema(description = "访问令牌类型如Bearer、MAC等")
@NotBlank(message = "访问令牌类型如Bearer、MAC等不能为空")
private String accessTokenType;
@Schema(description = "访问令牌范围,该令牌实际可访问的资源范围")
@NotBlank(message = "访问令牌范围,该令牌实际可访问的资源范围不能为空")
private String accessTokenScopes;
@Schema(description = "OpenID Connect ID令牌值")
private byte[] oidcIdTokenValue;
@Schema(description = "ID令牌颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime oidcIdTokenIssuedAt;
@Schema(description = "ID令牌过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime oidcIdTokenExpiresAt;
@Schema(description = "ID令牌元数据存储用户身份信息等")
private byte[] oidcIdTokenMetadata;
@Schema(description = "刷新令牌值,用于获取新的访问令牌")
private byte[] refreshTokenValue;
@Schema(description = "刷新令牌颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime refreshTokenIssuedAt;
@Schema(description = "刷新令牌过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime refreshTokenExpiresAt;
@Schema(description = "刷新令牌元数据")
private byte[] refreshTokenMetadata;
@Schema(description = "设备流用户码值")
private byte[] userCodeValue;
@Schema(description = "用户码颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime userCodeIssuedAt;
@Schema(description = "用户码过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime userCodeExpiresAt;
@Schema(description = "用户码元数据")
private byte[] userCodeMetadata;
@Schema(description = "设备流设备码值")
private byte[] deviceCodeValue;
@Schema(description = "设备码颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime deviceCodeIssuedAt;
@Schema(description = "设备码过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime deviceCodeExpiresAt;
@Schema(description = "设备码元数据")
private byte[] deviceCodeMetadata;
}

View File

@ -0,0 +1,102 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.dto.oauth2authorizationconsent;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import jakarta.validation.constraints.NotBlank;
/**
* <p>
* OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Data
@Schema(name = "OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意 功能添加DTO", description = "OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意 功能添加DTO")
public class Oauth2AuthorizationConsentAddDTO {
@Schema(description = "注册客户端ID")
@NotBlank(message = "注册客户端ID不能为空")
private String registeredClientId;
@Schema(description = "主体名称")
@NotBlank(message = "主体名称不能为空")
private String principalName;
@Schema(description = "已授权权限")
@NotBlank(message = "已授权权限不能为空")
private String authorities;
}

View File

@ -0,0 +1,92 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.dto.oauth2authorizationconsent;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* <p>
* OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Data
@Schema(name = "OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意 功能列表查询DTO", description = "OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意 功能列表查询DTO")
public class Oauth2AuthorizationConsentListDTO {
@Schema(description = "主体名称")
private String principalName;
}

View File

@ -0,0 +1,95 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.dto.oauth2authorizationconsent;
import com.xiaomayi.mybatis.dto.PageDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(name = "OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意 功能分页查询DTO", description = "OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意 功能分页查询DTO")
public class Oauth2AuthorizationConsentPageDTO extends PageDTO {
@Schema(description = "主体名称")
private String principalName;
}

View File

@ -0,0 +1,102 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.dto.oauth2authorizationconsent;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import jakarta.validation.constraints.NotBlank;
/**
* <p>
* OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Data
@Schema(name = "OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意 功能更新DTO", description = "OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意 功能更新DTO")
public class Oauth2AuthorizationConsentUpdateDTO {
@Schema(description = "注册客户端ID")
@NotBlank(message = "注册客户端ID不能为空")
private String registeredClientId;
@Schema(description = "主体名称")
@NotBlank(message = "主体名称不能为空")
private String principalName;
@Schema(description = "已授权权限")
@NotBlank(message = "已授权权限不能为空")
private String authorities;
}

View File

@ -0,0 +1,215 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.dto.oauth2registeredclient;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Range;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
/**
* <p>
* OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Data
@Schema(name = "OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息添加DTO", description = "OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息添加DTO")
public class Oauth2RegisteredClientAddDTO {
@Schema(description = "客户端封面")
private String clientCover;
@Schema(description = "客户端名称")
@NotBlank(message = "客户端名称不能为空")
private String clientName;
@Schema(description = "客户端ID")
@NotBlank(message = "客户端ID不能为空")
private String clientId;
@Schema(description = "客户端密钥")
private String clientSecret;
@Schema(description = "访问令牌有效期默认43200秒12小时")
@NotNull(message = "访问令牌有效期不能为空")
private Integer accessTokenExpires;
@Schema(description = "刷新令牌有效期默认2592000秒30天")
@NotNull(message = "刷新令牌有效期不能为空")
private Integer refreshTokenExpires;
@Schema(description = "授权码有效期默认300秒")
@NotNull(message = "授权码有效期不能为空")
private Integer authorizationCodeExpires;
@Schema(description = "客户端密钥过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime clientSecretExpiresAt;
@Schema(description = "客户端认证方法支持多种认证方式如client_secret_basic、client_secret_post等")
@NotBlank(message = "客户端认证方法支持多种认证方式如client_secret_basic、client_secret_post等不能为空")
private String clientAuthenticationMethods;
@Schema(description = "授权许可类型")
@NotEmpty(message = "授权许可类型不能为空")
private String[] authorizationGrantTypes;
@Schema(description = "重定向URI授权成功后重定向的地址列表")
@NotBlank(message = "重定向URI授权成功后重定向的地址列表不能为空")
private String redirectUris;
@Schema(description = "登出后重定向URI用户登出后重定向的地址列表")
@NotBlank(message = "登出后重定向URI用户登出后重定向的地址列表不能为空")
private String postLogoutRedirectUris;
@Schema(description = "授权范围定义客户端可以访问的资源范围如read、write等")
@NotEmpty(message = "授权范围定义客户端可以访问的资源范围如read、write等不能为空")
private String[] scopes;
/**
* 是否要求PKCE验证(Proof Key for Code Exchange)
* <p>
* PKCE增强授权码流程安全性防止授权码拦截攻击
* 适用于无法安全存储客户端密钥的公共客户端如SPA应用移动应用等
* <p>
* true: 要求PKCE验证推荐用于SPA移动端
* false: 不要求PKCE验证适用于Web服务端应用
*/
@Schema(description = "是否要求PKCE验证(Proof Key for Code Exchange)")
private Integer requireProofKey;
/**
* 是否要求授权同意
* <p>
* 控制是否在授权时向用户显示同意页面
* 开启后用户需确认授予的权限范围增强安全性和透明度
* <p>
* true: 显示授权同意页面推荐
* false: 跳过授权同意页面适用于受信任的内部应用
*/
@Schema(description = "是否要求授权同意")
private Integer requireAuthorizationConsent;
/**
* 是否重用刷新令牌
* <p>
* 控制刷新令牌被使用后是否仍然有效
* 涉及安全性和用户体验的权衡
* <p>
* true: 刷新令牌可重复使用默认用户体验好
* false: 刷新令牌使用后即失效安全性更高
*/
@Schema(description = "是否重用刷新令牌")
private Integer reuseRefreshTokens;
/**
* 访问令牌格式
* <p>
* SELF_CONTAINED: JWT格式令牌包含所有声明信息无需额外查询
* REFERENCE: 引用令牌只包含标识符需查询令牌存储获取详细信息
* <p>
* SELF_CONTAINED: 适合分布式系统令牌自包含推荐
* REFERENCE: 适合需要集中控制令牌的场景
*/
@Schema(description = "访问令牌格式(SELF_CONTAINED/REFERENCE)")
private String accessTokenFormat = "SELF_CONTAINED";
/**
* ID令牌签名算法
* <p>
* 用于OpenID Connect ID令牌的签名验证算法
* 确保ID令牌的完整性和来源可信
* <p>
* 常用算法:
* RS256: RSA with SHA-256最常用推荐
* ES256: ECDSA with SHA-256更安全但兼容性稍差
* RS384/RS512, ES384/ES512: 更强安全性选项
*/
@Schema(description = "ID令牌签名算法")
private String idTokenSignatureAlgorithm = "RS256";
@Schema(description = "客户端状态")
@NotNull(message = "客户端状态不能为空")
@Range(min = 1, max = 2, message = "客户端状态值在1-2之间")
private String status;
}

View File

@ -0,0 +1,98 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.dto.oauth2registeredclient;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* <p>
* OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Data
@Schema(name = "OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息列表查询DTO", description = "OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息列表查询DTO")
public class Oauth2RegisteredClientListDTO {
@Schema(description = "客户端ID")
private String clientId;
@Schema(description = "客户端名称")
private String clientName;
@Schema(description = "客户端状态")
private Integer status;
}

View File

@ -0,0 +1,101 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.dto.oauth2registeredclient;
import com.xiaomayi.mybatis.dto.PageDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(name = "OAuth2 已注册客户端", description = "OAuth2 已注册客户端")
public class Oauth2RegisteredClientPageDTO extends PageDTO {
@Schema(description = "客户端ID")
private String clientId;
@Schema(description = "客户端名称")
private String clientName;
@Schema(description = "客户端状态")
private Integer status;
}

View File

@ -0,0 +1,219 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.dto.oauth2registeredclient;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Range;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
/**
* <p>
* OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Data
@Schema(name = "OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息更新DTO", description = "OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息更新DTO")
public class Oauth2RegisteredClientUpdateDTO {
@Schema(description = "客户端主键ID")
@NotBlank(message = "客户端主键ID不能为空")
private String id;
@Schema(description = "客户端封面")
private String clientCover;
@Schema(description = "客户端名称")
@NotBlank(message = "客户端名称不能为空")
private String clientName;
@Schema(description = "客户端ID")
@NotBlank(message = "客户端ID不能为空")
private String clientId;
@Schema(description = "客户端密钥")
private String clientSecret;
@Schema(description = "访问令牌有效期默认43200秒12小时")
@NotNull(message = "访问令牌有效期不能为空")
private Integer accessTokenExpires;
@Schema(description = "刷新令牌有效期默认2592000秒30天")
@NotNull(message = "刷新令牌有效期不能为空")
private Integer refreshTokenExpires;
@Schema(description = "授权码有效期默认300秒")
@NotNull(message = "授权码有效期不能为空")
private Integer authorizationCodeExpires;
@Schema(description = "客户端密钥过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime clientSecretExpiresAt;
@Schema(description = "客户端认证方法支持多种认证方式如client_secret_basic、client_secret_post等")
@NotBlank(message = "客户端认证方法支持多种认证方式如client_secret_basic、client_secret_post等不能为空")
private String clientAuthenticationMethods;
@Schema(description = "授权许可类型")
@NotEmpty(message = "授权许可类型不能为空")
private String[] authorizationGrantTypes;
@Schema(description = "重定向URI授权成功后重定向的地址列表")
@NotBlank(message = "重定向URI授权成功后重定向的地址列表不能为空")
private String redirectUris;
@Schema(description = "登出后重定向URI用户登出后重定向的地址列表")
@NotBlank(message = "登出后重定向URI用户登出后重定向的地址列表不能为空")
private String postLogoutRedirectUris;
@Schema(description = "授权范围定义客户端可以访问的资源范围如read、write等")
@NotEmpty(message = "授权范围定义客户端可以访问的资源范围如read、write等不能为空")
private String[] scopes;
/**
* 是否要求PKCE验证(Proof Key for Code Exchange)
* <p>
* PKCE增强授权码流程安全性防止授权码拦截攻击
* 适用于无法安全存储客户端密钥的公共客户端如SPA应用移动应用等
* <p>
* true: 要求PKCE验证推荐用于SPA移动端
* false: 不要求PKCE验证适用于Web服务端应用
*/
@Schema(description = "是否要求PKCE验证(Proof Key for Code Exchange)")
private Integer requireProofKey;
/**
* 是否要求授权同意
* <p>
* 控制是否在授权时向用户显示同意页面
* 开启后用户需确认授予的权限范围增强安全性和透明度
* <p>
* true: 显示授权同意页面推荐
* false: 跳过授权同意页面适用于受信任的内部应用
*/
@Schema(description = "是否要求授权同意")
private Integer requireAuthorizationConsent;
/**
* 是否重用刷新令牌
* <p>
* 控制刷新令牌被使用后是否仍然有效
* 涉及安全性和用户体验的权衡
* <p>
* true: 刷新令牌可重复使用默认用户体验好
* false: 刷新令牌使用后即失效安全性更高
*/
@Schema(description = "是否重用刷新令牌")
private Integer reuseRefreshTokens;
/**
* 访问令牌格式
* <p>
* SELF_CONTAINED: JWT格式令牌包含所有声明信息无需额外查询
* REFERENCE: 引用令牌只包含标识符需查询令牌存储获取详细信息
* <p>
* SELF_CONTAINED: 适合分布式系统令牌自包含推荐
* REFERENCE: 适合需要集中控制令牌的场景
*/
@Schema(description = "访问令牌格式(SELF_CONTAINED/REFERENCE)")
private String accessTokenFormat = "SELF_CONTAINED";
/**
* ID令牌签名算法
* <p>
* 用于OpenID Connect ID令牌的签名验证算法
* 确保ID令牌的完整性和来源可信
* <p>
* 常用算法:
* RS256: RSA with SHA-256最常用推荐
* ES256: ECDSA with SHA-256更安全但兼容性稍差
* RS384/RS512, ES384/ES512: 更强安全性选项
*/
@Schema(description = "ID令牌签名算法")
private String idTokenSignatureAlgorithm = "RS256";
@Schema(description = "客户端状态")
@NotNull(message = "客户端状态不能为空")
@Range(min = 1, max = 2, message = "客户端状态值在1-2之间")
private String status;
}

View File

@ -0,0 +1,456 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.endpoint;
import cn.hutool.core.util.StrUtil;
import com.xiaomayi.core.utils.JwtTokenUtils;
import com.xiaomayi.core.utils.R;
import com.xiaomayi.logger.annotation.LoginLog;
import com.xiaomayi.logger.enums.LoginType;
import com.xiaomayi.oauth.service.JwtBlacklistService;
import com.xiaomayi.oauth.vo.LoginUser;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpHeaders;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.core.OAuth2AccessToken;
import org.springframework.security.oauth2.server.authorization.OAuth2Authorization;
import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService;
import org.springframework.security.oauth2.server.authorization.OAuth2TokenType;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
* OAuth2令牌管理端点 - 提供令牌撤销和退出登录功能
* </p>
* <p>
* 核心功能
* 1. 用户主动退出登录撤销访问令牌并加入黑名单
* 2. 管理员强制撤销指定令牌
* 3. 批量令牌撤销操作
* 4. 令牌状态检查和验证
* 5. 黑名单统计信息查询
* 6. 用户信息获取接口
* </p>
* <p>
* 设计原则
* - 遵循OAuth2 RFC 7009令牌撤销规范
* - 提供RESTful API接口符合OpenAPI标准
* - 完整的错误处理和日志记录机制
* - 安全的数据访问控制和权限验证
* - 高性能的令牌处理机制
* </p>
* <p>
* 安全特性
* - JWT令牌黑名单机制确保撤销的令牌立即失效
* - 令牌脱敏处理防止敏感信息泄露
* - 集群环境下的令牌同步撤销
* - 完整的审计日志记录
* </p>
*
* @author 小蚂蚁云团队
* @since 2023-06-12
*/
@Slf4j
@RestController
@RequestMapping("/oauth2")
@RequiredArgsConstructor
public class OAuth2TokenEndpoint {
/**
* OAuth2授权服务
* 用于管理OAuth2授权记录和令牌状态提供令牌的存储查询和删除功能
*/
private final OAuth2AuthorizationService authorizationService;
/**
* JWT黑名单服务
* 用于管理已撤销的JWT令牌确保被撤销的令牌在有效期内无法继续使用
*/
private final JwtBlacklistService blacklistService;
/**
* Bearer令牌前缀
* 标准的OAuth2 Bearer Token认证方案前缀
*/
private static final String BEARER_PREFIX = OAuth2AccessToken.TokenType.BEARER.getValue();
/**
* 管理员强制撤销令牌接口
* <p>
* 使用场景
* - 安全事件响应
* - 用户账户异常
* - 系统维护操作
* </p>
*
* @param token 需要撤销的令牌
* @return 撤销操作结果
*/
@Operation(summary = "撤销令牌", description = "强制撤销指定的访问令牌并加入黑名单(管理员功能)")
@DeleteMapping("/revoke/{token}")
public R revokeToken(@PathVariable("token") String token) {
log.info("管理员请求撤销令牌并加入黑名单: {}", JwtTokenUtils.maskToken(token));
// 参数校验
if (StrUtil.isBlank(token)) {
log.warn("撤销令牌请求参数为空");
return R.failed("令牌参数不能为空");
}
// 使用增强的撤销逻辑
return blacklistService.revokeAccessTokenWithBlacklist(token);
}
/**
* 批量撤销令牌接口
* <p>
* 使用场景
* - 管理员批量撤销用户令牌安全事件响应
* - 系统维护时批量清理令牌
* - 用户批量登出操作
* </p>
* <p>
* 安全考虑
* - 需要管理员权限验证
* - 详细的执行结果返回
* - 异常处理和日志记录
* </p>
*
* @param tokens 需要撤销的令牌列表不能为空
* @return 包含执行结果的响应对象包括成功和失败的数量及详细信息
*/
@Operation(summary = "批量撤销令牌", description = "批量撤销多个JWT令牌并加入黑名单管理员功能")
@PostMapping("/batch/revoke")
public R<Map<String, Object>> batchRevokeTokens(@RequestBody List<String> tokens) {
log.info("接收到批量撤销令牌请求,令牌数量: {}", tokens == null ? 0 : tokens.size());
// 参数校验确保令牌列表不为空
if (tokens == null || tokens.isEmpty()) {
log.warn("批量撤销令牌请求失败:令牌列表为空");
return R.failed("令牌列表不能为空");
}
// 初始化统计变量
int successCount = 0;
int failCount = 0;
List<String> results = new ArrayList<>();
// 遍历处理每个令牌
for (String token : tokens) {
String maskToken = JwtTokenUtils.maskToken(token);
try {
// 调用单个令牌撤销逻辑
R result = blacklistService.revokeAccessTokenWithBlacklist(token);
if (result.isOk()) {
successCount++;
results.add("令牌 " + maskToken + ": 撤销成功");
log.debug("令牌撤销成功: {}", maskToken);
} else {
failCount++;
results.add("令牌 " + maskToken + ": 撤销失败 - " + result.getMsg());
log.warn("令牌撤销失败: {}, 原因: {}", maskToken, result.getMsg());
}
} catch (Exception e) {
// 异常处理记录错误但不中断批量处理
failCount++;
String errorMsg = "令牌 " + maskToken + ": 撤销异常 - " + e.getMessage();
results.add(errorMsg);
log.error("批量撤销令牌时发生异常: {}", maskToken, e);
}
}
// 构建返回结果
Map<String, Object> data = new HashMap<>();
data.put("successCount", successCount);
data.put("failCount", failCount);
data.put("totalCount", tokens.size());
data.put("details", results);
log.info("批量撤销令牌完成: 成功={}, 失败={}, 总计={}", successCount, failCount, tokens.size());
return R.ok(data, String.format("批量撤销完成: 成功%d个, 失败%d个", successCount, failCount));
}
/**
* 检查令牌状态接口
* <p>
* 功能说明
* 提供完整的令牌状态验证包括格式验证过期检查黑名单检查等
* 主要用于前端定期检查令牌有效性避免使用无效令牌发起请求
* </p>
* <p>
* 验证流程
* 1. 令牌格式验证
* 2. 过期时间检查
* 3. 黑名单状态检查
* 4. 令牌信息提取如有效
* </p>
*
* @param token 需要检查的JWT令牌字符串
* @return 包含令牌状态详细信息的响应对象
*/
@Operation(summary = "检查令牌状态", description = "检查JWT令牌的有效性和黑名单状态")
@GetMapping("/check/token")
public R<Map<String, Object>> checkTokenStatus(@RequestParam String token) {
String maskToken = JwtTokenUtils.maskToken(token);
log.debug("检查令牌状态请求: {}", maskToken);
// 参数校验
if (StrUtil.isBlank(token)) {
log.warn("令牌状态检查失败:令牌参数为空");
return R.failed("令牌参数不能为空", 401);
}
// 根据访问令牌查找授权记录
OAuth2Authorization authorization = authorizationService.findByToken(
token, OAuth2TokenType.ACCESS_TOKEN);
// 检查授权记录是否存在
if (authorization == null) {
log.warn("未找到对应的授权记录,令牌可能已过期: {}", maskToken);
return R.failed("令牌已失效", 401);
}
Map<String, Object> result = new HashMap<>();
try {
// 步骤1: 检查令牌格式有效性
if (!JwtTokenUtils.isValidJwtFormat(token)) {
log.debug("令牌格式无效: {}", maskToken);
return R.failed("令牌格式无效", 401);
}
// 步骤2: 检查令牌是否过期
if (JwtTokenUtils.isTokenExpired(token)) {
log.debug("令牌已过期: {}", maskToken);
return R.failed("令牌已过期", 401);
}
// 步骤3: 检查令牌是否在黑名单中
String jti = JwtTokenUtils.getJti(token);
boolean blacklisted = blacklistService.isBlacklisted(jti);
if (blacklisted) {
log.debug("令牌已被撤销: jti={}", jti);
return R.failed("令牌已被撤销", 401);
}
result.put("jti", jti);
result.put("subject", JwtTokenUtils.getSubject());
result.put("userId", JwtTokenUtils.getUserId());
result.put("username", JwtTokenUtils.getUsername());
// 处理过期时间信息
Long exp = JwtTokenUtils.getExpiration(token);
result.put("expiration", exp);
result.put("remainingTime", JwtTokenUtils.getRemainingTime(token));
result.put("expirationTime", new Date(exp * 1000));
log.info("令牌状态检查通过: {}", JwtTokenUtils.maskToken(token));
} catch (Exception e) {
// 异常处理在检查过程中发生错误
log.error("检查令牌状态时发生异常: {}", JwtTokenUtils.maskToken(token), e);
return R.failed("检查令牌状态时发生异常");
}
return R.ok(result, "令牌有效");
}
/**
* 获取黑名单统计信息
* <p>
* 管理员功能用于监控系统黑名单状态
* - 黑名单总数统计
* - 即将过期的令牌数量
* - 系统健康状态监控
* </p>
*
* @return 包含黑名单统计信息的响应对象
*/
@Operation(summary = "黑名单统计", description = "获取JWT黑名单统计信息管理员功能")
@GetMapping("/blacklist/stats")
public R<Map<String, Object>> getBlacklistStats() {
log.info("获取黑名单统计信息请求");
try {
Map<String, Object> stats = blacklistService.getBlacklistStats();
log.debug("黑名单统计信息获取成功: {}", stats);
return R.ok(stats, "获取黑名单统计信息成功");
} catch (Exception e) {
log.error("获取黑名单统计信息失败", e);
return R.failed("获取黑名单统计信息失败");
}
}
/**
* 增强的退出登录接口 - 支持JWT黑名单
* <p>
* 改进特性
* 1. 退出时不仅删除授权记录还将JWT加入黑名单
* 2. 确保已签发的令牌立即在集群所有节点失效
* 3. 支持审计日志记录
* 4. 优雅的错误处理
* </p>
* <p>
* 安全机制
* - 令牌格式验证
* - 授权记录清理
* - 黑名单登记
* - 安全上下文清除
* </p>
*
* @param authorization HTTP Authorization头包含Bearer令牌
* @return 退出登录操作结果
*/
@Operation(summary = "退出登录", description = "用户退出登录,撤销当前访问令牌并加入黑名单")
@LoginLog(title = "退出登录", type = LoginType.LOGOUT)
@DeleteMapping("/logout")
public R logout(@RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authorization) {
log.info("处理用户退出登录请求(增强黑名单支持)");
// 检查授权头是否为空
if (StrUtil.isBlank(authorization)) {
log.warn("退出登录请求缺少Authorization头");
return R.ok("退出成功");
}
// 验证Bearer令牌格式
if (!authorization.startsWith(BEARER_PREFIX)) {
log.warn("退出登录请求包含无效的令牌格式: {}", authorization);
return R.ok("退出成功");
}
// 提取纯令牌值
String tokenValue = authorization.replace(BEARER_PREFIX, StrUtil.EMPTY).trim();
if (StrUtil.isBlank(tokenValue)) {
log.warn("退出登录请求令牌值为空");
return R.ok("退出成功");
}
log.debug("开始撤销令牌并加入黑名单: {}", JwtTokenUtils.maskToken(tokenValue));
// 调用增强的令牌撤销逻辑
return blacklistService.revokeAccessTokenWithBlacklist(tokenValue);
}
/**
* 获取当前用户信息接口
* <p>
* 功能说明
* 返回当前认证用户的详细信息包括基本信息权限列表等
* 用于前端展示用户信息和权限控制
* </p>
*
* @param loginUser 通过Spring Security注入的当前用户对象
* @return 用户信息映射包含用户基本信息和权限列表
*/
@Operation(summary = "获取用户信息", description = "获取当前认证用户的详细信息")
@GetMapping("/userinfo")
public Map<String, Object> getUserInfo(@AuthenticationPrincipal LoginUser loginUser) {
log.debug("获取用户信息请求: userId={}", loginUser != null ? loginUser.getUserId() : "unknown");
Map<String, Object> userInfo = new HashMap<>();
// 安全检查确保用户对象不为空
if (loginUser == null) {
log.warn("获取用户信息失败:用户未认证");
return userInfo;
}
try {
// 填充用户基本信息
userInfo.put("userId", loginUser.getUserId());
userInfo.put("username", loginUser.getUsername());
userInfo.put("realname", loginUser.getRealname());
userInfo.put("deptId", loginUser.getDeptId());
userInfo.put("tenantId", loginUser.getTenantId());
userInfo.put("dataScope", loginUser.getDataScope());
userInfo.put("userType", loginUser.getUserType());
// 提取并转换权限信息
List<String> authorities = loginUser.getAuthorities().stream()
.map(GrantedAuthority::getAuthority)
.collect(Collectors.toList());
userInfo.put("authorities", authorities);
log.debug("用户信息获取成功: userId={}, username={}", loginUser.getUserId(), loginUser.getUsername());
} catch (Exception e) {
log.error("获取用户信息时发生异常", e);
}
return userInfo;
}
}

View File

@ -0,0 +1,223 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xiaomayi.mybatis.model.TenantEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.EqualsAndHashCode;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
/**
* <p>
* OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程客户端凭证流程密码流程设备流程等多种授权方式
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("oauth2_authorization")
@Schema(name = "OAuth2 授权记录,存储授权流程中的各种令牌和状态信息,支持授权码流程、客户端凭证流程、密码流程、设备流程等多种授权方式", description = "OAuth2 授权记录,存储授权流程中的各种令牌和状态信息,支持授权码流程、客户端凭证流程、密码流程、设备流程等多种授权方式")
public class Oauth2Authorization extends TenantEntity {
@Schema(description = "授权记录主键ID")
private String id;
@Schema(description = "注册客户端ID")
private String registeredClientId;
@Schema(description = "主体名称,通常是用户标识或用户名")
private String principalName;
@Schema(description = "授权许可类型如authorization_code、client_credentials、password、refresh_token等")
private String authorizationGrantType;
@Schema(description = "已授权范围,用户实际同意的权限范围列表")
private String authorizedScopes;
@Schema(description = "授权属性,存储授权过程中的自定义属性和扩展数据")
private byte[] attributes;
@Schema(description = "状态参数用于防止CSRF攻击和保持请求状态")
private String state;
@Schema(description = "授权码值,加密存储的授权码")
private byte[] authorizationCodeValue;
@Schema(description = "授权码颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime authorizationCodeIssuedAt;
@Schema(description = "授权码过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime authorizationCodeExpiresAt;
@Schema(description = "授权码元数据,存储授权码相关的附加信息")
private byte[] authorizationCodeMetadata;
@Schema(description = "访问令牌值,加密存储的访问令牌")
private byte[] accessTokenValue;
@Schema(description = "访问令牌颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime accessTokenIssuedAt;
@Schema(description = "访问令牌过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime accessTokenExpiresAt;
@Schema(description = "访问令牌元数据,存储令牌类型、使用范围等信息")
private byte[] accessTokenMetadata;
@Schema(description = "访问令牌类型如Bearer、MAC等")
private String accessTokenType;
@Schema(description = "访问令牌范围,该令牌实际可访问的资源范围")
private String accessTokenScopes;
@Schema(description = "OpenID Connect ID令牌值")
private byte[] oidcIdTokenValue;
@Schema(description = "ID令牌颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime oidcIdTokenIssuedAt;
@Schema(description = "ID令牌过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime oidcIdTokenExpiresAt;
@Schema(description = "ID令牌元数据存储用户身份信息等")
private byte[] oidcIdTokenMetadata;
@Schema(description = "刷新令牌值,用于获取新的访问令牌")
private byte[] refreshTokenValue;
@Schema(description = "刷新令牌颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime refreshTokenIssuedAt;
@Schema(description = "刷新令牌过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime refreshTokenExpiresAt;
@Schema(description = "刷新令牌元数据")
private byte[] refreshTokenMetadata;
@Schema(description = "设备流用户码值")
private byte[] userCodeValue;
@Schema(description = "用户码颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime userCodeIssuedAt;
@Schema(description = "用户码过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime userCodeExpiresAt;
@Schema(description = "用户码元数据")
private byte[] userCodeMetadata;
@Schema(description = "设备流设备码值")
private byte[] deviceCodeValue;
@Schema(description = "设备码颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime deviceCodeIssuedAt;
@Schema(description = "设备码过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime deviceCodeExpiresAt;
@Schema(description = "设备码元数据")
private byte[] deviceCodeMetadata;
}

View File

@ -0,0 +1,110 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xiaomayi.mybatis.model.TenantEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.EqualsAndHashCode;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* <p>
* OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("oauth2_authorization_consent")
@Schema(name = "OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意 功能", description = "OAuth2 授权同意记录,存储用户对客户端的长期授权同意信息,用于实现 记住同意 功能")
public class Oauth2AuthorizationConsent extends TenantEntity {
@Schema(description = "记录ID")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@Schema(description = "注册客户端ID")
private String registeredClientId;
@Schema(description = "主体名称")
private String principalName;
@Schema(description = "已授权权限")
private String authorities;
}

View File

@ -0,0 +1,176 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.xiaomayi.mybatis.model.TenantEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.EqualsAndHashCode;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
/**
* <p>
* OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("oauth2_registered_client")
@Schema(name = "OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息", description = "OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息")
public class Oauth2RegisteredClient extends TenantEntity {
@Schema(description = "客户端主键ID")
private String id;
@Schema(description = "客户端封面")
private String clientCover;
@Schema(description = "客户端名称")
private String clientName;
@Schema(description = "客户端ID")
private String clientId;
@Schema(description = "客户端ID颁发时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime clientIdIssuedAt;
@Schema(description = "客户端密钥")
@JsonIgnore
private String clientSecret;
@Schema(description = "客户端密钥过期时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime clientSecretExpiresAt;
@Schema(description = "访问令牌有效期默认43200秒12小时")
private Integer accessTokenExpires;
@Schema(description = "刷新令牌有效期默认2592000秒30天")
private Integer refreshTokenExpires;
@Schema(description = "授权码有效期默认300秒")
private Integer authorizationCodeExpires;
@Schema(description = "客户端认证方法支持多种认证方式如client_secret_basic、client_secret_post等")
private String clientAuthenticationMethods;
@Schema(description = "授权许可类型")
private String authorizationGrantTypes;
@Schema(description = "重定向URI授权成功后重定向的地址列表")
private String redirectUris;
@Schema(description = "登出后重定向URI用户登出后重定向的地址列表")
private String postLogoutRedirectUris;
@Schema(description = "授权范围定义客户端可以访问的资源范围如read、write等")
private String scopes;
@Schema(description = "是否要求PKCE验证(Proof Key for Code Exchange)")
private Integer requireProofKey;
@Schema(description = "是否要求授权同意")
private Integer requireAuthorizationConsent;
@Schema(description = "是否重用刷新令牌")
private Integer reuseRefreshTokens;
@Schema(description = "访问令牌格式(SELF_CONTAINED/REFERENCE)")
private String accessTokenFormat;
@Schema(description = "ID令牌签名算法")
private String idTokenSignatureAlgorithm;
@Schema(description = "客户端配置设置JSON格式包含PKCE、要求授权许可等配置")
private String clientSettings;
@Schema(description = "令牌配置设置JSON格式包含访问令牌、刷新令牌的有效期等配置")
private String tokenSettings;
@Schema(description = "客户端状态")
private Integer status;
}

View File

@ -0,0 +1,119 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.filter;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebFilter;
import org.springframework.web.server.WebFilterChain;
import reactor.core.publisher.Mono;
/**
* <p>
* 认证令牌拦截器
* </p>
*
* @author 小蚂蚁云团队
* @since 2023-06-12
*/
@Slf4j
@Component
public class OAuth2TokenFilter implements WebFilter {
/**
* 过滤器
*
* @param exchange the current server exchange
* @param chain provides a way to delegate to the next filter
* @return 返回结果
*/
@NotNull
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
// 检查请求是否是对/oauth/token的请求
if ("/oauth/token".equals(exchange.getRequest().getPath().value())) {
log.info("登录认证过滤器拦截成功...");
// 在这里可以添加自定义逻辑例如验证或处理token请求参数
// 如果请求需要被拦截并返回错误可以这样做
// return exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED).setComplete();
// 如果请求是合法的则放行请求
return chain.filter(exchange);
}
// 如果不是/oauth/token请求则直接放行
return chain.filter(exchange);
}
}

View File

@ -0,0 +1,89 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.mapper;
import com.xiaomayi.auth.entity.Oauth2AuthorizationConsent;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能 Mapper 接口
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Mapper
public interface Oauth2AuthorizationConsentMapper extends BaseMapper<Oauth2AuthorizationConsent> {
}

View File

@ -0,0 +1,89 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.mapper;
import com.xiaomayi.auth.entity.Oauth2Authorization;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程客户端凭证流程密码流程设备流程等多种授权方式 Mapper 接口
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Mapper
public interface Oauth2AuthorizationMapper extends BaseMapper<Oauth2Authorization> {
}

View File

@ -0,0 +1,89 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.mapper;
import com.xiaomayi.auth.entity.Oauth2RegisteredClient;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息 Mapper 接口
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Mapper
public interface Oauth2RegisteredClientMapper extends BaseMapper<Oauth2RegisteredClient> {
}

View File

@ -0,0 +1,161 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xiaomayi.core.utils.R;
import com.xiaomayi.auth.dto.oauth2authorizationconsent.Oauth2AuthorizationConsentAddDTO;
import com.xiaomayi.auth.dto.oauth2authorizationconsent.Oauth2AuthorizationConsentListDTO;
import com.xiaomayi.auth.dto.oauth2authorizationconsent.Oauth2AuthorizationConsentPageDTO;
import com.xiaomayi.auth.dto.oauth2authorizationconsent.Oauth2AuthorizationConsentUpdateDTO;
import com.xiaomayi.auth.entity.Oauth2AuthorizationConsent;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaomayi.auth.vo.oauth2authorizationconsent.Oauth2AuthorizationConsentInfoVO;
import com.xiaomayi.auth.vo.oauth2authorizationconsent.Oauth2AuthorizationConsentListVO;
import java.util.List;
/**
* <p>
* OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能 服务类
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
public interface Oauth2AuthorizationConsentService extends IService<Oauth2AuthorizationConsent> {
/**
* 查询分页列表
*
* @param oauth2AuthorizationConsentPageDTO 查询条件
* @return 返回结果
*/
Page<Oauth2AuthorizationConsent> page(Oauth2AuthorizationConsentPageDTO oauth2AuthorizationConsentPageDTO);
/**
* 查询数据列表
*
* @param oauth2AuthorizationConsentListDTO 查询条件
* @return 返回结果
*/
List<Oauth2AuthorizationConsentListVO> getList(Oauth2AuthorizationConsentListDTO oauth2AuthorizationConsentListDTO);
/**
* 根据ID查询信息
*
* @param id OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能ID
* @return 返回结果
*/
Oauth2AuthorizationConsent getInfo(String id);
/**
* 根据ID查询详情
*
* @param id OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能ID
* @return 返回结果
*/
Oauth2AuthorizationConsentInfoVO getDetail(String id);
/**
* 添加OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能
*
* @param oauth2AuthorizationConsentAddDTO 参数
* @return 返回结果
*/
R add(Oauth2AuthorizationConsentAddDTO oauth2AuthorizationConsentAddDTO);
/**
* 更新OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能
*
* @param oauth2AuthorizationConsentUpdateDTO 参数
* @return 返回结果
*/
R update(Oauth2AuthorizationConsentUpdateDTO oauth2AuthorizationConsentUpdateDTO);
/**
* 删除OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能
*
* @param id OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能ID
* @return 返回结果
*/
R delete(String id);
/**
* 批量删除OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能
*
* @param idList OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能ID
* @return 返回结果
*/
R batchDelete(List<String> idList);
}

View File

@ -0,0 +1,133 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xiaomayi.core.utils.R;
import com.xiaomayi.auth.dto.oauth2authorization.Oauth2AuthorizationPageDTO;
import com.xiaomayi.auth.entity.Oauth2Authorization;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaomayi.auth.vo.oauth2authorization.Oauth2AuthorizationInfoVO;
import java.util.List;
/**
* <p>
* OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程客户端凭证流程密码流程设备流程等多种授权方式 服务类
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
public interface Oauth2AuthorizationService extends IService<Oauth2Authorization> {
/**
* 查询分页列表
*
* @param oauth2AuthorizationPageDTO 查询条件
* @return 返回结果
*/
Page<Oauth2Authorization> page(Oauth2AuthorizationPageDTO oauth2AuthorizationPageDTO);
/**
* 根据ID查询信息
*
* @param id OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程客户端凭证流程密码流程设备流程等多种授权方式ID
* @return 返回结果
*/
Oauth2Authorization getInfo(String id);
/**
* 根据ID查询详情
*
* @param id OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程客户端凭证流程密码流程设备流程等多种授权方式ID
* @return 返回结果
*/
Oauth2AuthorizationInfoVO getDetail(String id);
/**
* 撤销OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程客户端凭证流程密码流程设备流程等多种授权方式
*
* @param id OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程客户端凭证流程密码流程设备流程等多种授权方式ID
* @return 返回结果
*/
R revoke(String id);
/**
* 批量撤销OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程客户端凭证流程密码流程设备流程等多种授权方式
*
* @param idList OAuth2 授权记录存储授权流程中的各种令牌和状态信息支持授权码流程客户端凭证流程密码流程设备流程等多种授权方式ID
* @return 返回结果
*/
R batchRevoke(List<String> idList);
}

View File

@ -0,0 +1,176 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xiaomayi.core.utils.R;
import com.xiaomayi.auth.dto.oauth2registeredclient.Oauth2RegisteredClientAddDTO;
import com.xiaomayi.auth.dto.oauth2registeredclient.Oauth2RegisteredClientListDTO;
import com.xiaomayi.auth.dto.oauth2registeredclient.Oauth2RegisteredClientPageDTO;
import com.xiaomayi.auth.dto.oauth2registeredclient.Oauth2RegisteredClientUpdateDTO;
import com.xiaomayi.auth.entity.Oauth2RegisteredClient;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaomayi.auth.vo.oauth2registeredclient.Oauth2RegisteredClientInfoVO;
import com.xiaomayi.auth.vo.oauth2registeredclient.Oauth2RegisteredClientListVO;
import com.xiaomayi.oauth.vo.RegisteredClientVO;
import java.util.List;
/**
* <p>
* OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息 服务类
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
public interface Oauth2RegisteredClientService extends IService<Oauth2RegisteredClient> {
/**
* 查询分页列表
*
* @param oauth2RegisteredClientPageDTO 查询条件
* @return 返回结果
*/
Page<Oauth2RegisteredClient> page(Oauth2RegisteredClientPageDTO oauth2RegisteredClientPageDTO);
/**
* 查询数据列表
*
* @param oauth2RegisteredClientListDTO 查询条件
* @return 返回结果
*/
List<Oauth2RegisteredClientListVO> getList(Oauth2RegisteredClientListDTO oauth2RegisteredClientListDTO);
/**
* 根据ID查询信息
*
* @param id OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息ID
* @return 返回结果
*/
Oauth2RegisteredClient getInfo(String id);
/**
* 根据ID查询详情
*
* @param id OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息ID
* @return 返回结果
*/
Oauth2RegisteredClientInfoVO getDetail(String id);
/**
* 添加OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息
*
* @param oauth2RegisteredClientAddDTO 参数
* @return 返回结果
*/
R add(Oauth2RegisteredClientAddDTO oauth2RegisteredClientAddDTO);
/**
* 更新OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息
*
* @param oauth2RegisteredClientUpdateDTO 参数
* @return 返回结果
*/
R update(Oauth2RegisteredClientUpdateDTO oauth2RegisteredClientUpdateDTO);
/**
* 删除OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息
*
* @param id OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息ID
* @return 返回结果
*/
R delete(String id);
/**
* 批量删除OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息
*
* @param idList OAuth2 已注册客户端存储OAuth2和OpenID Connect的客户端配置信息ID
* @return 返回结果
*/
R batchDelete(List<String> idList);
/**
* 刷新客户端缓存
*
* @return 返回结果
*/
R refreshCache();
/**
* 获取客户端列表
*
* @return 返回结果
*/
List<RegisteredClientVO> getRegisteredClientList();
}

View File

@ -0,0 +1,281 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 知识产权声明
// | 1. 权属声明本软件是受中华人民共和国著作权法
// | 保护的专有财产完整版权归小蚂蚁云团队所有
// | 2. 权利范围所有知识产权商标专利著作权
// | 商业秘密等均归小蚂蚁云团队所有受法律保护
// | 3. 授权性质用户仅可获得有限的非独占的使用许可
// | 4. 禁止行为未经书面授权禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 授权状态说明
// | 1. 未授权状态用户未购买有效的商业许可证
// | 2. 商业授权已购买正式商业许可证的用户
// +======================================================================
// | 绝对禁止条款
// | 无论授权状态如何任何用户均严格禁止以下行为
// | 1. 逆向工程对软件进行反编译反汇编技术破解或任何形式的逆向分析
// | 2. 版权破坏移除修改遮挡软件中的版权标识许可控制或技术保护措施
// | 3. 非法传播复制分发出租出借转售再许可本软件或其许可权利
// | 4. 竞争性使用利用本软件的代码架构设计开发直接竞争的产品或服务
// | 5. 侵权使用将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 商业授权许可范围
// | 购买有效商业许可证的用户在遵守上述禁止条款的前提下获得
// | 1. 使用权利在许可证约定的项目数量开发者数量范围内使用本软件
// | 2. 技术支持商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新在许可证有效期内获取软件更新安全补丁和功能增强
// | 4. 商业部署将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 许可证获取
// | 1. 获取途径仅通过小蚂蚁云官方渠道购买官网授权代理商购买记录凭证
// | 2. 转让限制许可证与购买主体绑定未经书面同意不得转让
// | 3. 终止情形许可证到期违反协议破产清算等情况下自动终止
// +======================================================================
// | 合法使用要求
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 免责声明
// | 因使用本框架导致的以下情况我们概不负责
// | 1. 项目研发中的意外疏忽违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接间接附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 协议重要提示
// | 1. 本声明是小蚂蚁云最终用户许可协议的摘要版本
// | 2. 下载安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本继续使用视为接受修改
// +======================================================================
// | 侵权举报与合规
// | 1. 知识产权侵权举报请联系官方客服
// | 2. 许可证合规咨询xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.auth.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xiaomayi.core.utils.R;
import com.xiaomayi.core.utils.StringUtils;
import com.xiaomayi.auth.dto.oauth2authorizationconsent.Oauth2AuthorizationConsentAddDTO;
import com.xiaomayi.auth.dto.oauth2authorizationconsent.Oauth2AuthorizationConsentListDTO;
import com.xiaomayi.auth.dto.oauth2authorizationconsent.Oauth2AuthorizationConsentPageDTO;
import com.xiaomayi.auth.dto.oauth2authorizationconsent.Oauth2AuthorizationConsentUpdateDTO;
import com.xiaomayi.auth.entity.Oauth2AuthorizationConsent;
import com.xiaomayi.auth.mapper.Oauth2AuthorizationConsentMapper;
import com.xiaomayi.auth.service.Oauth2AuthorizationConsentService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaomayi.auth.vo.oauth2authorizationconsent.Oauth2AuthorizationConsentInfoVO;
import com.xiaomayi.auth.vo.oauth2authorizationconsent.Oauth2AuthorizationConsentListVO;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能 服务实现类
* </p>
*
* @author 小蚂蚁云团队
* @since 2025-10-30
*/
@Service
public class Oauth2AuthorizationConsentServiceImpl extends ServiceImpl<Oauth2AuthorizationConsentMapper, Oauth2AuthorizationConsent> implements Oauth2AuthorizationConsentService {
/**
* 查询分页列表
*
* @param oauth2AuthorizationConsentPageDTO 查询条件
* @return 返回结果
*/
@Override
public Page<Oauth2AuthorizationConsent> page(Oauth2AuthorizationConsentPageDTO oauth2AuthorizationConsentPageDTO) {
// 分页设置
Page<Oauth2AuthorizationConsent> page = new Page<>(oauth2AuthorizationConsentPageDTO.getPageNo(), oauth2AuthorizationConsentPageDTO.getPageSize());
// 查询条件
LambdaQueryWrapper<Oauth2AuthorizationConsent> wrapper = new LambdaQueryWrapper<Oauth2AuthorizationConsent>()
// 主体名称
.like(StringUtils.isNotEmpty(oauth2AuthorizationConsentPageDTO.getPrincipalName()), Oauth2AuthorizationConsent::getPrincipalName, oauth2AuthorizationConsentPageDTO.getPrincipalName())
.eq(Oauth2AuthorizationConsent::getDelFlag, 0)
.orderByDesc(Oauth2AuthorizationConsent::getCreateTime);
// 查询分页数据
Page<Oauth2AuthorizationConsent> pageData = page(page, wrapper);
pageData.convert(item -> {
// 实例化VO对象
Oauth2AuthorizationConsentListVO oauth2AuthorizationConsentListVO = new Oauth2AuthorizationConsentListVO();
BeanUtils.copyProperties(item, oauth2AuthorizationConsentListVO);
return oauth2AuthorizationConsentListVO;
});
// 返回结果
return pageData;
}
/**
* 查询数据列表
*
* @param oauth2AuthorizationConsentListDTO 查询条件
* @return 返回结果
*/
@Override
public List<Oauth2AuthorizationConsentListVO> getList(Oauth2AuthorizationConsentListDTO oauth2AuthorizationConsentListDTO) {
// 查询数据源
List<Oauth2AuthorizationConsent> oauth2AuthorizationConsentList = list(new LambdaQueryWrapper<Oauth2AuthorizationConsent>()
// 主体名称
.like(StringUtils.isNotEmpty(oauth2AuthorizationConsentListDTO.getPrincipalName()), Oauth2AuthorizationConsent::getPrincipalName, oauth2AuthorizationConsentListDTO.getPrincipalName())
.eq(Oauth2AuthorizationConsent::getDelFlag, 0)
.orderByDesc(Oauth2AuthorizationConsent::getCreateTime));
// 实例化VO列表
List<Oauth2AuthorizationConsentListVO> oauth2AuthorizationConsentListVOList = new ArrayList<>();
if (StringUtils.isNotEmpty(oauth2AuthorizationConsentList)) {
// 遍历数据源
for (Oauth2AuthorizationConsent oauth2AuthorizationConsent : oauth2AuthorizationConsentList) {
// 实例化VO对象
Oauth2AuthorizationConsentListVO oauth2AuthorizationConsentListVO = new Oauth2AuthorizationConsentListVO();
BeanUtils.copyProperties(oauth2AuthorizationConsent, oauth2AuthorizationConsentListVO);
oauth2AuthorizationConsentListVOList.add(oauth2AuthorizationConsentListVO);
}
}
return oauth2AuthorizationConsentListVOList;
}
/**
* 根据ID查询信息
*
* @param id OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能ID
* @return 返回结果
*/
@Override
public Oauth2AuthorizationConsent getInfo(String id) {
Oauth2AuthorizationConsent oauth2AuthorizationConsent = getById(id);
if (StringUtils.isNull(oauth2AuthorizationConsent) || !oauth2AuthorizationConsent.getDelFlag().equals(0)) {
return null;
}
return oauth2AuthorizationConsent;
}
/**
* 根据ID查询详情
*
* @param id OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能ID
* @return 返回结果
*/
@Override
public Oauth2AuthorizationConsentInfoVO getDetail(String id) {
Oauth2AuthorizationConsent oauth2AuthorizationConsent = getInfo(id);
if (StringUtils.isNull(oauth2AuthorizationConsent)) {
return null;
}
// 实例化VO
Oauth2AuthorizationConsentInfoVO oauth2AuthorizationConsentInfoVO = new Oauth2AuthorizationConsentInfoVO();
BeanUtils.copyProperties(oauth2AuthorizationConsent, oauth2AuthorizationConsentInfoVO);
return oauth2AuthorizationConsentInfoVO;
}
/**
* 添加OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能
*
* @param oauth2AuthorizationConsentAddDTO 参数
* @return 返回结果
*/
@Override
public R add(Oauth2AuthorizationConsentAddDTO oauth2AuthorizationConsentAddDTO) {
// 实例化对象
Oauth2AuthorizationConsent oauth2AuthorizationConsent = new Oauth2AuthorizationConsent();
// 属性拷贝
BeanUtils.copyProperties(oauth2AuthorizationConsentAddDTO, oauth2AuthorizationConsent);
boolean result = save(oauth2AuthorizationConsent);
if (!result) {
return R.failed();
}
return R.ok();
}
/**
* 更新OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能
*
* @param oauth2AuthorizationConsentUpdateDTO 参数
* @return 返回结果
*/
@Override
public R update(Oauth2AuthorizationConsentUpdateDTO oauth2AuthorizationConsentUpdateDTO) {
// 根据ID查询信息
Oauth2AuthorizationConsent oauth2AuthorizationConsent = getInfo(oauth2AuthorizationConsentUpdateDTO.getRegisteredClientId());
if (StringUtils.isNull(oauth2AuthorizationConsent)) {
return R.failed("记录不存在");
}
// 属性拷贝
BeanUtils.copyProperties(oauth2AuthorizationConsentUpdateDTO, oauth2AuthorizationConsent);
boolean result = updateById(oauth2AuthorizationConsent);
if (!result) {
return R.failed();
}
return R.ok();
}
/**
* 删除OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能
*
* @param id OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能ID
* @return 返回结果
*/
@Override
public R delete(String id) {
// 根据ID查询信息
Oauth2AuthorizationConsent oauth2AuthorizationConsent = getInfo(id);
if (StringUtils.isNull(oauth2AuthorizationConsent)) {
return R.failed("记录不存在");
}
// 删除
boolean result = removeById(id);
if (!result) {
return R.failed();
}
// 返回结果
return R.ok();
}
/**
* 批量删除OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能
*
* @param idList OAuth2 授权同意记录存储用户对客户端的长期授权同意信息用于实现 记住同意 功能ID
* @return 返回结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public R batchDelete(List<String> idList) {
// 删除ID判空
if (StringUtils.isEmpty(idList)) {
return R.failed("删除记录ID不存在");
}
// 批量删除
boolean result = removeBatchByIds(idList);
if (!result) {
return R.failed();
}
return R.ok();
}
}

Some files were not shown because too many files have changed in this diff Show More