- 描述整体基于ASP.NET Core的分层架构与领域驱动设计 - 详细说明表现层、视图模型层、配置层和基础设施层职责 - 介绍用户认证、OAuth2授权码与令牌颁发的数据流过程 - 抽象说明用户与租户、声明和授权实体设计 - 说明应用启动入口和关键HTTP端点 - 列出错误处理策略和跨领域关注点(日志、追踪、安全) docs(concerns): 新增代码库问题与关注点分析文档 - 汇总并详述安全漏洞如配置文件泄露、Cookie策略不当 - 记录技术债务包括缺乏单元测试、依赖注入不统一等 - 罗列性能问题和具体代码缺陷 - 给出优先级明确的修复建议和改进措施 - 涵盖架构设计问题和依赖兼容性风险 - 说明测试覆盖缺口及高风险未测试区域 docs(conventions): 新增编码约定与规范文档 - 明确文件、类、方法、变量等命名规则 - 规范代码风格包括命名空间、主构造函数使用 - 制定日志记录、审计日志和依赖注入的标准 - 规定控制器路由、异步模式和错误处理方式 - 说明DTO命名及特性使用规范 - 描述配置管理、注释规范及常用代码注释样例 docs(integrations): 添加外部系统集成文档 - 介绍数据库连接和PostgreSQL客户端库版本 - 描述身份认证与授权服务及默认用户信息 - 说明可观测性方案及OpenTelemetry组件 - 涵盖容器化部署相关Docker与Kubernetes配置 - 说明CI/CD流水线触发条件与构建流程 - 列出环境变量需求和主要API端点 - 强调生产环境密钥管理与安全存储机制
116 lines
3.4 KiB
Markdown
116 lines
3.4 KiB
Markdown
# 外部集成
|
||
|
||
**分析日期:** 2026-02-28
|
||
|
||
## 数据库
|
||
|
||
**PostgreSQL:**
|
||
- **类型:** 关系型数据库
|
||
- **连接信息:**
|
||
- 主机:81.68.223.70
|
||
- 端口:15432
|
||
- 数据库:fengling_auth
|
||
- 用户名:movingsam
|
||
- **客户端库:** Npgsql.EntityFrameworkCore.PostgreSQL 10.0.3
|
||
- **连接字符串来源:** `appsettings.json` 或环境变量 `ConnectionStrings__DefaultConnection`
|
||
- **健康检查:** 通过 AspNetCore.HealthChecks.Npgsql 集成
|
||
|
||
## 身份认证与授权
|
||
|
||
**OpenIddict(OAuth2/OIDC):**
|
||
- 实现标准的 OAuth2 授权服务器功能
|
||
- 支持的授权类型:password(密码模式)
|
||
- JWT Token 发行
|
||
- 令牌配置:
|
||
- Issuer(签发者):`http://localhost:5132`(开发环境)
|
||
- Audience(受众):`fengling-api`
|
||
- JWT Secret(开发环境):`FenglingAuthSecretKey2024!ChangeThisInProduction!`
|
||
|
||
**默认用户:**
|
||
- **管理员:** 用户名 `admin`,密码 `Admin@123`,角色 `Admin`
|
||
- **测试用户:** 用户名 `testuser`,密码 `Test@123`,角色 `User`
|
||
|
||
## 可观测性
|
||
|
||
**OpenTelemetry(OTLP 导出):**
|
||
- 导出协议:OpenTelemetry Protocol (OTLP)
|
||
- 导出目标:未在配置中明确指定(需配置 OTLP 端点)
|
||
- Instrumentation:
|
||
- ASP.NET Core 请求追踪
|
||
- HTTP 客户端追踪
|
||
- OpenIddict 服务器追踪
|
||
|
||
## 容器与部署
|
||
|
||
**Docker:**
|
||
- 镜像仓库:`gitea.shtao1.cn`(Gitea 私有仓库)
|
||
- 镜像名称:`fengling/fengling-auth-service:latest`
|
||
- Dockerfile:多阶段构建(build + publish)
|
||
|
||
**Kubernetes:**
|
||
- 命名空间:`fengling`
|
||
- 副本数:2
|
||
- 服务端口:80
|
||
- 资源配置:
|
||
- 请求:CPU 100m,内存 256Mi
|
||
- 限制:CPU 500m,内存 512Mi
|
||
- 健康检查:
|
||
- 就绪探针:/health,初始延迟 10 秒,周期 10 秒
|
||
- 存活探针:/health,初始延迟 30 秒,周期 30 秒
|
||
|
||
## CI/CD
|
||
|
||
**Gitea Actions:**
|
||
- 触发条件:
|
||
- 推送至 main 或 master 分支
|
||
- 合并至 main 或 master 分支的 Pull Request
|
||
- .NET 版本:10.0
|
||
- 阶段:
|
||
1. 构建(Build)
|
||
2. Docker 镜像构建与推送
|
||
3. 部署至 Kubernetes
|
||
|
||
**NuGet 源:**
|
||
- 私有源:`https://gitea.shtao1.cn/api/packages/fengling/nuget/index.json`
|
||
- 公共源:`https://api.nuget.org/v3/index.json`
|
||
- 认证方式:用户名 + 访问令牌
|
||
|
||
## 环境变量
|
||
|
||
**必需的环境变量:**
|
||
- `ConnectionStrings__DefaultConnection` - 数据库连接字符串(从 Kubernetes Secret 注入)
|
||
- `OpenIddict__Issuer` - Token 签发者 URL(生产环境:`https://auth.fengling.local`)
|
||
- `OpenIddict__Audience` - Token 受众
|
||
- `ASPNETCORE_ENVIRONMENT` - 运行环境(如 Production)
|
||
- `ASPNETCORE_URLS` - 监听 URL(默认:`http://+:80`)
|
||
|
||
**可选变量:**
|
||
- `Testing` - 是否为测试模式(启用/禁用 Swagger)
|
||
|
||
## API 端点
|
||
|
||
**主要端点:**
|
||
- `/connect/token` - 获取 OAuth2 令牌(密码模式)
|
||
- `/health` - 健康检查端点
|
||
- `/swagger/v1/swagger.json` - OpenAPI 文档
|
||
|
||
**管理端点(需认证):**
|
||
- `/api/users` - 用户管理
|
||
- `/api/roles` - 角色管理
|
||
- `/api/tenants` - 租户管理
|
||
- `/api/oauth/clients` - OAuth 客户端管理
|
||
- `/api/audit/logs` - 审计日志
|
||
- `/api/access/logs` - 访问日志
|
||
|
||
## 密钥管理
|
||
|
||
**生产环境密钥存储:**
|
||
- Kubernetes Secret:`fengling-auth-secrets`
|
||
- 存储内容:
|
||
- `connection-string` - 数据库连接字符串
|
||
- 镜像拉取凭据:Kubernetes ImagePullSecret
|
||
|
||
---
|
||
|
||
*外部集成审计:2026-02-28*
|