- 描述整体基于ASP.NET Core的分层架构与领域驱动设计 - 详细说明表现层、视图模型层、配置层和基础设施层职责 - 介绍用户认证、OAuth2授权码与令牌颁发的数据流过程 - 抽象说明用户与租户、声明和授权实体设计 - 说明应用启动入口和关键HTTP端点 - 列出错误处理策略和跨领域关注点(日志、追踪、安全) docs(concerns): 新增代码库问题与关注点分析文档 - 汇总并详述安全漏洞如配置文件泄露、Cookie策略不当 - 记录技术债务包括缺乏单元测试、依赖注入不统一等 - 罗列性能问题和具体代码缺陷 - 给出优先级明确的修复建议和改进措施 - 涵盖架构设计问题和依赖兼容性风险 - 说明测试覆盖缺口及高风险未测试区域 docs(conventions): 新增编码约定与规范文档 - 明确文件、类、方法、变量等命名规则 - 规范代码风格包括命名空间、主构造函数使用 - 制定日志记录、审计日志和依赖注入的标准 - 规定控制器路由、异步模式和错误处理方式 - 说明DTO命名及特性使用规范 - 描述配置管理、注释规范及常用代码注释样例 docs(integrations): 添加外部系统集成文档 - 介绍数据库连接和PostgreSQL客户端库版本 - 描述身份认证与授权服务及默认用户信息 - 说明可观测性方案及OpenTelemetry组件 - 涵盖容器化部署相关Docker与Kubernetes配置 - 说明CI/CD流水线触发条件与构建流程 - 列出环境变量需求和主要API端点 - 强调生产环境密钥管理与安全存储机制
3.4 KiB
3.4 KiB
外部集成
分析日期: 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
- Issuer(签发者):
- 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
- 阶段:
- 构建(Build)
- Docker 镜像构建与推送
- 部署至 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