Skip to content

huangkai12358/service-governance-backend

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

159 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

服务治理后端

服务治理管理平台后端工程。当前采用 Maven 多模块结构,已落地 auth-service,提供后台管理接口、服务间授权校验接口、SmartDoc 导入、授权配置、日志查询和看板数据能力。

技术栈

  • JDK 21
  • Spring Boot 4.0.2
  • Spring Cloud 2025.1.1
  • MyBatis 4.0.0
  • Oracle 10g 兼容脚本,JDBC 驱动使用 ojdbc11
  • Knife4j / OpenAPI 注解
  • JUnit 5、Mockito、MockMvc、JaCoCo

目录结构

service-governance-backend/
├── pom.xml                         # 父工程
└── auth-service/
    ├── pom.xml
    └── src/
        ├── main/java/com/servicegovernance/auth
        │   ├── controller          # 接口层
        │   ├── service             # 业务接口
        │   ├── service/impl        # 业务实现
        │   ├── mapper              # MyBatis Mapper
        │   ├── dto / query / vo    # 请求、查询、响应对象
        │   ├── entity              # 数据库结果映射对象
        │   └── common              # 拦截器、异常、工具、配置
        └── main/resources
            ├── application.yml
            ├── mapper              # MyBatis XML
            └── db/oracle           # Oracle 建表、迁移、初始化、测试数据脚本

数据库

数据库连接配置在 auth-service/src/main/resources/application.yml,提交文档中只保留占位示例,真实地址和账号密码请使用本地配置或环境变量管理:

spring:
  datasource:
    driver-class-name: oracle.jdbc.OracleDriver
    url: jdbc:oracle:thin:@<host>:<port>:<sid>
    username: <db-username>
    password: <db-password>

主要脚本:

文件 用途
service-governance-schema.sql 初始化建表脚本,包含主键、联合主键、索引、序列和触发器
service-governance-migration.sql 已有库结构迁移脚本,尽量避免重复创建对象
service-governance-test-data.sql 演示和压测用业务数据
auth-user-init.sql 初始化后台登录用户
service-governance-createindex.sql 索引和历史补充脚本
service-governance-alter.sql 历史字段补充脚本

核心表包括:

  • APP_INFO:服务应用
  • API_INFO:API 资产
  • APP_API_AUTH:调用方应用和被调用 API 的授权关系,联合主键为 CALLER_APP_ID + API_ID
  • API_VERSION:SmartDoc 导入版本
  • API_LOG:API 导入/变更记录
  • AUTH_LOG:授权配置历史
  • CALL_DECISION_LOG:运行时调用校验历史
  • USER_INFO:后台用户
  • SYS_SETTING:系统设置

启动

在后端根目录执行:

cd service-governance-backend
mvn -pl auth-service spring-boot:run

默认端口:8081

健康检查:

curl http://localhost:8081/api/health
curl http://localhost:8081/actuator/health

/api/health/actuator/health 都不需要 sessionToken,可用于本地启动和部署健康检查。

运行测试:

mvn -pl auth-service test

认证方式

后台管理接口统一使用 sessionToken 请求头。

  1. 登录:
curl -sS -H "Content-Type: application/json" \
  -d '{"username":"<username>","password":"<password>"}' \
  http://localhost:8081/api/auth/login
  1. 后续后台接口携带:
sessionToken: 登录接口返回的 sessionToken

运行时服务接口不依赖后台登录态:

  • POST /api/authorization/check:服务调用前校验调用方和被调用方身份及授权关系,会写入 CALL_DECISION_LOG
  • POST /api/authorization/resource/list:接收方服务通过 Authorization: Basic xxxxxx 拉取调用方可访问的 urlList

/api/authorization/resource/list 返回:

{
  "urlList": ["/api/example/path"]
}

主要接口模块

模块 路径前缀 说明
认证管理 /api/auth 登录、退出、会话校验
首页看板 /api/dashboard 总览、授权设置、授权拓扑图
APP 管理 /api/app APP 列表、详情、新增、更新、删除、选项
API 管理 /api/apis API 列表、详情、新增、更新、删除、导出、搜索选项
SmartDoc 导入 /api/smartdoc SmartDoc 分析和确认导入
单应用授权 /api/authorization/single-app 从调用方/被调用方维度维护授权
API 反向授权 /api/authorization/reverse 从 API 维度维护授权应用
运行时授权访问 /api/authorization/check/api/authorization/resource/list 服务间调用校验和资源列表
权限配置历史 /api/logs/auth-config 授权变更日志
SmartDoc 导入历史 /api/logs/smartdoc-import 文档导入日志
远程调用历史 /api/logs/remote-call 运行时授权判定日志

远程调用模拟

校验成功示例:

curl -sS -H "Content-Type: application/json" \
  -d '{
    "callerAppCode": "<caller-app-code>",
    "callerPwd": "<caller-app-password>",
    "calleeAppCode": "<callee-app-code>",
    "calleePwd": "<callee-app-password>"
  }' \
  http://localhost:8081/api/authorization/check

校验失败示例:

curl -sS -H "Content-Type: application/json" \
  -d '{
    "callerAppCode": "<caller-app-code>",
    "callerPwd": "<wrong-password>",
    "calleeAppCode": "<callee-app-code>",
    "calleePwd": "<callee-app-password>"
  }' \
  http://localhost:8081/api/authorization/check

拉取授权 URL 列表示例:

curl -sS -H "Content-Type: application/json" \
  -H "Authorization: Basic <base64-callee-password>" \
  -d '{
    "callerAppCode": "<caller-app-code>",
    "calleeAppCode": "<callee-app-code>"
  }' \
  http://localhost:8081/api/authorization/resource/list

其中 <base64-callee-password> 是被调用方应用密码的 Base64 编码值。

接口文档

项目已引入 Knife4j OpenAPI 依赖和 Swagger 注解。后端启动后可尝试访问:

http://localhost:8081/doc.html
http://localhost:8081/v3/api-docs

常见问题

  • 前端提示未登录:确认请求头是否携带 sessionToken,以及后端是否能连接数据库校验会话。
  • 登录后刷新页面未登录:确认 /api/auth/session/check 可访问,且 USER_INFO.SESSION_TOKEN 未被清空。
  • /api/authorization/check 返回 FAIL:检查 APP_INFO 中调用方和被调用方是否存在、密码是否正确。
  • /api/authorization/resource/list 返回空数组:检查调用方和被调用方之间是否存在有效授权。
  • IDEA 控制台看不到 SQL:确认 mybatis.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl

About

服务治理后端

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 95.1%
  • PLSQL 4.9%