HiranthaW97/CloudShield-Social-Media-Manager
GitHub: HiranthaW97/CloudShield-Social-Media-Manager
一款基于 .NET 10 和 Blazor 构建的社交媒体管理 SaaS,将跨平台发帖排期与企业级安全机制(加密令牌存储、MFA、事件响应)整合在统一仪表板中。
Stars: 0 | Forks: 0
# 🛡️ CloudShield
**统一你的社交媒体。保护你所统一的。**
CloudShield 是一款**内置安全机制的社交媒体管理 SaaS** —— 通过一个仪表板即可起草、安排和发布跨 Facebook、Instagram、LinkedIn 和 TikTok 的帖子,并包裹在安全层中(加密的 OAuth token 金库、强制 MFA、新设备检测以及一键事件响应“紧急按钮”)。
作为大学电子商务课程作业,使用 **.NET 10** 和 **Blazor** 构建。它默认**100% 离线运行**(所有外部平台均为模拟),并可通过 Meta Graph API 选择性地发布到**真实的 Facebook 和 Instagram**。
## ✨ 功能
**公共电子商务网站**
- 落地页、定价(5 个订阅层级)、关于我们和联系方式(包含 ABN、地图、社交链接)。
- 作业要求元素:ABN 展示、联系页面、免责声明以及模拟支付流程。
**经过身份验证的 SaaS 应用**
- **仪表板** — 分析摘要(粉丝数、触达率、互动率)+ 安全警报。
- **撰写** — 一次编写,附加图片(文件上传*或*公开 URL),发布至多个平台;支持草稿的发布/删除。
- **排期** — 将帖子排入队列以便后续发布 + 发布活动日志。
- **分析** — 触达/互动图表。
- **账户** — 连接/断开社交账户(token 加密存储)。
- **安全** — 审计追踪、新设备/异常位置检测以及**紧急按钮**(撤销会话 → 清除 token → 锁定账户)。
- **账单** — 包含逼真卡片结账流程的订阅计划(服务端 Luhn/过期日期/CVV 验证)和模拟支付网关。
**安全 (ASP.NET Core Identity)**
- 多因素认证(带 QR 设置的 TOTP 身份验证器应用)和**通行密钥 (WebAuthn/FIDO2)**。
- 恢复代码、密码更改/重置、电子邮件验证。
- 登录时捕获真实的设备/IP,并提供不受信任设备的警报。
- 通过 **Data Protection API** 对静态 OAuth token 进行加密。
- 多租户隔离(通过 EF 每个租户的全局查询过滤器)。
**可选的真实集成**
- 通过 Meta Graph API 将真实帖子发布到 **Facebook Page** 和关联的 **Instagram Business 账户**(参见[文档](#-documentation))。
## 🏗️ 架构
一个简单的 **4 项目分层架构**,具有单向(向下)依赖关系:
```
CloudShield.Web Blazor Web App (UI) + ASP.NET Core Identity — startup project
└── CloudShield.Business Services, DTOs, external clients (Fake + Meta)
└── CloudShield.DataAccess EF Core DbContext, Identity, seeding, migrations
└── CloudShield.Entities Plain POCO entities + enums
```
- **Entities** — 无框架 POCO(`Tenant`、`SocialAccount`、`OAuthToken`、`Post`、`PostTarget`、`AnalyticsSnapshot`、`SecurityEvent`、`Subscription`、`Notification`、`PublishLog`)。
- **DataAccess** — `AppDbContext : IdentityDbContext`、`DbSeeder`、migrations 以及 DI 注册。
- **Business** — 服务接口 + 实现(token 金库、帖子、分析、安全、订阅、通知)以及**可替换的外部客户端**:`FakeSocialPlatformClient`(离线)/ `MetaGraphClient`(真实)、`FakePaymentService`。
- **Web** — Blazor 组件(公共 + 应用页面)、Identity 账户页面、`Program.cs` 配置。
*不使用仓储模式 —— 按照设计,服务直接使用 `AppDbContext`(保持简单)。*
## 🧰 技术栈
| | |
|---|---|
| 运行时 | **.NET 10** |
| UI | **Blazor Web App** (Interactive Server 渲染模式) |
| 认证 | **ASP.NET Core Identity** (MFA/TOTP、通行密钥、角色) |
| 数据 | 基于 **SQL Server LocalDB** 的 **EF Core (Code First)** |
| 安全 | Data Protection API (token 加密)、QRCoder (2FA QR) |
| 外部(可选) | Meta Graph API (Facebook Pages + Instagram Graph) |
## 🚀 快速开始
### 前置条件
- [.NET 10 SDK](https://dotnet.microsoft.com/download)
- SQL Server **LocalDB**(随 Visual Studio 提供,或使用 SQL Server Express LocalDB 安装程序)
- Visual Studio 2022/2026 或 .NET CLI
### 运行
```
# 从 repository root
dotnet run --project CloudShield.Web
```
首次运行时,数据库会自动创建并填充数据(EF migrations + `DbSeeder`)。
然后打开 **https://localhost:7117**。
### 初始管理员登录
```
Email: admin@cloudshield.local
Password: Passw0rd!
```
(演示租户预装了 Facebook + Instagram 账户、分析数据以及免费订阅。)
### 连接字符串
`CloudShield.Web/appsettings.json`:
```
"ConnectionStrings": {
"Default": "Server=(localdb)\\MSSQLLocalDB;Database=CloudShield;Trusted_Connection=True;MultipleActiveResultSets=true"
}
```
## ⚙️ 配置
### 社交平台模式
默认情况下,应用在 **`Fake`** 模式下运行 —— 完全离线,无外部账户。要发布到真实的 Facebook/Instagram,请将 `SocialPlatform:Mode` 设置为 `Meta` 并提供 Meta 凭据。
开发环境中从 **user-secrets** 读取机密(切勿提交它们):
```
dotnet user-secrets set "SocialPlatform:Mode" "Meta" --project CloudShield.Web
dotnet user-secrets set "Meta:AppSecret" "" --project CloudShield.Web
dotnet user-secrets set "Meta:PageAccessToken" "" --project CloudShield.Web
dotnet user-secrets set "Meta:InstagramUserId" "" --project CloudShield.Web
```
`Meta:AppId`、`Meta:PageId` 和 `Meta:GraphVersion` 位于 `appsettings.json` 中(非机密信息)。
### 测试支付卡
账单结账仅为演示 —— 不会产生真实扣费。任何符合 Luhn 算法有效的卡均可通过,例如 `4242 4242 4242 4242`,过期日期 `12/34`,CVV `123`。
## 📚 文档
更深入的说明位于 [`/docs`](docs) 中:
- **[社交媒体集成可行性](docs/social-media-integration-feasibility.md)** — 图片上传、Facebook/Instagram/TikTok 发布、多租户 OAuth、权限、工作量与风险。
- **[演示准备与 Token 生命周期](docs/demo-readiness-and-token-lifecycle.md)** — Meta access-token 过期、适用于生产环境的 token 处理方法、演示准备以及 **Local IIS 部署检查清单**。
## 🌳 部署到 Local IIS(摘要)
CloudShield 是一个 Blazor **Server** 应用,因此 IIS 需要 ASP.NET Core Module + WebSockets:
1. 启用 **IIS** + **WebSocket Protocol**;安装 **.NET 10 Hosting Bundle**。
2. `dotnet publish CloudShield.Web -c Release -o C:\inetpub\CloudShield`。
3. 将连接字符串指向真实的 **SQL Server** 实例(LocalDB 在 IIS 下无法工作)。
4. 应用程序池 → **无托管代码**;将 `Meta:*` 放入 `appsettings.Production.json` / 环境变量中;修改后回收应用程序池。
完整检查清单请参见[演示准备文档](docs/demo-readiness-and-token-lifecycle.md)。
## 🔐 关于演示捷径的说明
为了确保项目能在本地运行且无需外部服务,部分流程进行了特意简化(在真实基础设施中会进行生产化处理):
- **无 SMTP** → 电子邮件验证/密码重置链接会直接在屏幕上显示/记录在日志中,而不是通过邮件发送。
- **支付** 为模拟(无真实网关)。
- **密码重置** 会针对数据库验证电子邮件(真实部署会通过邮件发送一次性链接)。
- 除非启用 `Meta` 模式,否则社交平台均为 **模拟**。
## 📄 许可证
仅限教育/学术用途。这是一个大学课程作业项目,**不**用于商业用途。
标签:Blazor, .NET 10, OAuth集成, SaaS, 后端开发, 数据加密, 社交媒体管理, 身份认证与访问控制