Files
kami_backend/.qoder/repowiki/zh/content/业务逻辑层架构/系统认证逻辑/用户认证管理/双因素认证.md
danial 96ed936079 docs(api): 添加详细Apple卡密管理API文档
- 新增API端点参考文档,涵盖权限、卡密、订单、商户、监控、限制等模块
- 详细说明Apple卡密充值处理流程,包括提交、查询、回调和轮询接口
- 描述充值订单状态机及生命周期,支持超时重试和状态迁移
- 介绍签名验证、幂等控制及重复卡密防刷单策略
- 增加商户配置管理、历史记录查询和错误处理机制说明
- 提供API使用示例代码及客户端实现指导
- 删除过时的.drone.yml.bak文件,清理无用配置
- 添加.dockerignore忽略指定目录和文件
2025-10-08 20:13:40 +08:00

7.6 KiB
Raw Blame History

双因素认证

**本文档中引用的文件** - [mfa.go](file://utility/mfa/mfa.go) - [sysUser_v1_totp_set.go](file://internal/controller/sysUser/sysUser_v1_totp_set.go) - [sysUser_v1_totp_image_get.go](file://internal/controller/sysUser/sysUser_v1_totp_image_get.go) - [sysUser_v1_totp_status_get.go](file://internal/controller/sysUser/sysUser_v1_totp_status_get.go) - [sysUser_v1_totp_reset.go](file://internal/controller/sysUser/sysUser_v1_totp_reset.go) - [totp.go](file://api/sysUser/v1/totp.go) - [sys_user.go](file://internal/service/sys_user.go)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构概述
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论

简介

本文档全面描述了kami_backend系统中基于时间的一次性密码TOTP双因素认证的实现机制。文档涵盖TOTP密钥生成、二维码展示、验证码验证流程以及用户启用和禁用双因素认证的接口实现与安全考虑。同时解释了MFA工具类的功能和集成方式包括TOTP验证过程中的时间同步和容错处理并提供双因素认证的安全最佳实践和用户操作指南。

项目结构

kami_backend的双因素认证功能主要分布在api/sysUser/v1internal/controller/sysUserutility/mfa目录中。api目录定义了TOTP相关的API接口internal/controller/sysUser实现了控制器逻辑,而utility/mfa提供了核心的MFA工具函数。

graph TB
subgraph "API层"
A[totp.go]
end
subgraph "控制器层"
B[sysUser_v1_totp_set.go]
C[sysUser_v1_totp_image_get.go]
D[sysUser_v1_totp_status_get.go]
E[sysUser_v1_totp_reset.go]
end
subgraph "服务层"
F[sys_user.go]
end
subgraph "工具层"
G[mfa.go]
end
A --> B
A --> C
A --> D
A --> E
B --> F
C --> F
D --> F
E --> F
B --> G
C --> G
D --> G
E --> G
F --> G

Diagram sources

Section sources

核心组件

双因素认证的核心组件包括MFA工具类、TOTP状态获取、TOTP设置、TOTP二维码获取和TOTP重置功能。这些组件协同工作实现了完整的双因素认证流程。

Section sources

架构概述

双因素认证的架构分为四层API层、控制器层、服务层和工具层。API层定义了TOTP相关的接口控制器层处理业务逻辑服务层提供用户数据操作工具层实现TOTP的核心算法。

graph TD
A[API层] --> B[控制器层]
B --> C[服务层]
C --> D[工具层]
A --> |HTTP请求| B
B --> |调用| C
C --> |调用| D
D --> |返回| C
C --> |返回| B
B --> |响应| A

Diagram sources

详细组件分析

MFA工具类分析

MFA工具类提供了TOTP密钥生成、二维码生成和验证码验证的核心功能。

classDiagram
class Otp {
+string Secret
+string QrImage
+string Key
}
class mfa {
+GetOtp(userId, username, key, secret) Otp
+ValidCode(code, secret) bool
}
mfa --> Otp : "返回"

Diagram sources

Section sources

TOTP设置流程分析

用户设置TOTP的流程包括验证密码和验证码然后保存TOTP密钥。

sequenceDiagram
participant Client as "客户端"
participant Controller as "TotpSet控制器"
participant Service as "SysUserService"
participant MFA as "MFA工具"
Client->>Controller : POST /user/totp/set
Controller->>Service : LoginOnlyLogin()
Service-->>Controller : 用户信息
Controller->>MFA : ValidCode(code, otpSecret)
MFA-->>Controller : 验证结果
alt 验证失败
Controller-->>Client : 验证码错误
else 验证成功
Controller->>Service : SetTotp()
Service-->>Controller : 成功
Controller-->>Client : 成功响应
end

Diagram sources

Section sources

TOTP状态获取分析

获取TOTP状态的流程根据用户是否已启用TOTP返回不同信息。

flowchart TD
Start([开始]) --> Auth["验证登录状态"]
Auth --> Check["检查OtpSecret是否为空"]
Check --> |为空| Generate["生成新OTP"]
Generate --> Return["返回二维码和密钥"]
Check --> |不为空| ReturnStatus["返回已启用状态"]
Return --> End([结束])
ReturnStatus --> End

Diagram sources

Section sources

依赖分析

双因素认证功能依赖于多个组件和外部库。

graph TD
A[mfa.go] --> B[gotp]
A --> C[qrcode]
A --> D[grand]
B --> E[TOTP算法]
C --> F[二维码生成]
D --> G[随机字符串生成]
G1[sysUser控制器] --> A
G2[sys_user服务] --> A

Diagram sources

Section sources

性能考虑

双因素认证的性能主要受二维码生成和TOTP验证算法的影响。系统使用了高效的第三方库来处理这些计算密集型任务确保了良好的响应性能。

故障排除指南

常见问题

  1. 二维码无法扫描检查生成的base64编码是否正确确保数据URI格式正确。
  2. 验证码验证失败确认客户端和服务器时间同步检查TOTP时间窗口设置。
  3. 密钥生成失败确保gotp库正确导入并可用。

Section sources

结论

kami_backend的双因素认证系统通过分层架构实现了安全可靠的TOTP认证机制。系统提供了完整的启用、验证和重置功能结合了高效的第三方库来处理核心算法确保了良好的安全性和性能表现。建议定期审查和更新MFA实现以应对不断变化的安全威胁。