# 授权流程图

## 项目注册流程

```
1. 管理员在RMDC Portal创建项目
2. project-management生成:
   - project_id = namespace_<8位随机数>
   - tier_one_secret
   - tier_two_secret
   - time_offset_allowed
3. 返回项目配置文件给管理员
4. 管理员部署watchdog时使用配置文件(密钥不经公网)
```

## Watchdog注册流程

```
1. Watchdog连接MQTT Broker
2. 订阅: wdd/RDMC/command/down/<project_id>
3. 订阅: wdd/RDMC/message/down/<project_id>
4. 生成Tier-One TOTP验证码(8位,30分钟)
5. 发布注册Command到 wdd/RDMC/command/up
6. Exchange-Hub验证TOTP
7. 生成32位随机挑战码
8. 返回register_ack + 服务端TOTP
9. Watchdog验证服务端TOTP
10. 回复挑战码确认
11. 注册完成,状态变为Online
```

## 授权申请流程

```
1. Node上报主机信息 → Watchdog
2. Agent首次心跳 → Watchdog
3. Watchdog收集完成后生成授权文件:
   - EncryptedHostMap
   - TOTPCode(8位,30分钟)
   - EncryptedNamespace
4. 发布auth_request到MQTT
5. Center验证TOTP和主机信息
6. 返回授权码(加密)
7. Watchdog解密并持久化
```

## Agent心跳流程

```
首次连接:
1. Agent收集主机信息
2. 发送心跳(TOTPCode="")
3. Watchdog返回SecondTOTPSecret
4. Agent保存密钥

后续心跳:
1. Agent生成Tier-Two TOTP(6位,30秒)
2. 发送心跳
3. Watchdog验证TOTP
4. 检查主机授权状态
5. 返回{Authorized, ResponseTOTP}
6. Agent验证ResponseTOTP
7. 根据结果更新failCount
```

## 死手系统触发

```
failCount >= 12 时:
1. Agent发送SIGTERM信号
2. 业务进程优雅终止
```
