1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//! 多因素认证 (MFA) 模块
//!
//! 提供多种多因素认证方式的实现。
//!
//! ## 支持的认证方式
//!
//! - **TOTP**: 基于时间的一次性密码 (Google Authenticator 兼容)
//! - **HOTP**: 基于计数器的一次性密码
//! - **恢复码**: 备用恢复码生成与验证
//!
//! ## Features
//!
//! - `mfa` - 启用 TOTP/HOTP 支持(默认启用)
//!
//! ## TOTP 示例
//!
//! use authrs::mfa::totp::{TotpManager, TotpConfig};
//!
//! // 创建 TOTP 管理器
//! let config = TotpConfig::default();
//! let manager = TotpManager::new(config);
//!
//! // 为用户生成密钥
//! let secret = manager.generate_secret().unwrap();
//!
//! // 生成当前 TOTP 码
//! let code = manager.generate_code(&secret).unwrap();
//! println!("当前验证码: {}", code);
//!
//! // 验证用户输入的码
//! let is_valid = manager.verify(&secret, &code).unwrap();
//! assert!(is_valid);
//! ```
//!
//! ## 恢复码示例
//!
//! use authrs::mfa::recovery::{RecoveryCodeManager, RecoveryConfig};
//!
//! // 生成恢复码
//! let config = RecoveryConfig::default();
//! let manager = RecoveryCodeManager::new(config);
//!
//! // 生成一组恢复码
//! let codes = manager.generate().unwrap();
//!
//! // 验证恢复码(使用其中一个明文码)
//! let result = manager.verify(&codes.plain_codes[0], &codes.hashed_codes).unwrap();
//! assert!(result.is_some());
//! ```
pub use ;
pub use ;
pub use ;