3.9 KiB
3.9 KiB
Fengling.Console 运管中心规划
项目概述
项目名称: Fengling.Console
中文名称: 风铃运管中心
定位: 统一运维管理平台
架构整合
1. 后端整合
- 原项目:
src/YarpGateway/(YARP Gateway) - 整合到:
src/Fengling.Console/(新建) - 新增功能: OAuth Client管理
2. 前端整合
- 原项目:
src/YarpGateway.Admin/(Vue 3 + Vite) - 整合到:
src/Fengling.Console.Web/(新建) - 功能扩展:
- 网关路由管理
- 租户管理
- OAuth Client管理
- 用户管理(通过AuthService API)
功能模块
模块1: 网关管理
- 租户列表
- 租户路由配置
- 集群实例管理
- 全局路由配置
- 负载均衡策略
模块2: OAuth Client管理
- Client ID/Secret管理
- 重定向URI配置
- 授权类型配置
- Scope配置
- Client状态管理
模块3: 用户管理
- 用户列表
- 用户角色分配
- 租户分配
- 用户状态管理
认证集成
Fengling.Console作为OAuth Client
需要在AuthService初始化时注册:
// Client配置
ClientId: "fengling-console"
ClientSecret: "console-secret-xxx"
RedirectUris: ["http://console.fengling.local/auth/callback"]
PostLogoutRedirectUris: ["http://console.fengling.local/"]
Scopes: ["api", "offline_access"]
GrantTypes: ["authorization_code", "refresh_token"]
目录结构
src/
├── Fengling.AuthService/ # 认证服务(已完成部分)
├── Fengling.Console/ # 运管中心后端(新建)
│ ├── Controllers/
│ │ ├── Gateway/ # 网关管理
│ │ ├── OAuth/ # OAuth Client管理
│ │ └── Users/ # 用户管理代理
│ ├── Services/
│ └── Data/
├── Fengling.Console.Web/ # 运管中心前端(新建)
│ ├── src/
│ │ ├── views/
│ │ │ ├── gateway/ # 网关管理
│ │ │ ├── oauth/ # OAuth管理
│ │ │ └── users/ # 用户管理
│ │ └── components/
│ └── YarpGateway.Admin/ # 原有代码迁移
└── YarpGateway/ # 网关服务(保留)
技术栈
后端 (Fengling.Console)
- .NET 10.0
- ASP.NET Core Web API
- EF Core 10.0
- PostgreSQL
- OpenTelemetry
前端 (Fengling.Console.Web)
- Vue 3 + TypeScript
- Vite
- Element Plus
- Pinia
- Vue Router
实施计划
Phase 1: 认证服务扩展
- Task 5-9: 完成AuthService基础功能
- Task 10: 添加OAuth Client模型和管理
- Task 11: 预注册Fengling.Console作为Client
Phase 2: 运管中心后端
- Task 12: 创建Fengling.Console项目
- Task 13: 迁移网关管理功能
- Task 14: 添加OAuth Client管理API
- Task 15: 添加用户管理代理API
Phase 3: 运管中心前端
- Task 16: 创建Fengling.Console.Web项目
- Task 17: 迁移YarpGateway.Admin代码
- Task 18: 添加OAuth管理界面
- Task 19: 集成OAuth认证登录
依赖关系
Fengling.Console.Web
↓ (OAuth 2.0)
Fengling.Console
↓ (数据库)
PostgreSQL
↓ (路由配置)
YarpGateway
数据库设计
OAuth Applications表
CREATE TABLE oauth_applications (
id BIGSERIAL PRIMARY KEY,
client_id VARCHAR(100) UNIQUE NOT NULL,
client_secret VARCHAR(200),
display_name VARCHAR(100),
redirect_uris TEXT[],
post_logout_redirect_uris TEXT[],
scopes TEXT[],
grant_types TEXT[],
client_type VARCHAR(20),
consent_type VARCHAR(20),
status VARCHAR(20),
created_at TIMESTAMP DEFAULT NOW()
);
注意事项
- 向后兼容: YarpGateway继续独立运行
- 渐进式迁移: 先完成Console后端,再迁移前端
- 统一认证: 所有管理界面通过AuthService OAuth登录
- 权限控制: Console内部API也需要认证