企业认证(Enterprise Auth)
Enterprise Auth 提供 LDAP、SAML 2.0、OAuth 2.0/OIDC 和 TOTP MFA 企业级认证集成。
1. 启用
[proxy]
addons = ["enterprise-auth"]
数据库要求:自动创建 enterprise_auth_settings 表。支持 SQLite / MySQL / PostgreSQL。
2. LDAP 认证
2.1 配置
config/enterprise_auth.toml:
[ldap]
enabled = true
url = "ldap://ad.example.com:389"
bind_dn = "CN=svcrustpbx,OU=ServiceAccounts,DC=example,DC=com"
bind_password = "ldap-password"
base_dn = "OU=Users,DC=example,DC=com"
user_filter = "(sAMAccountName={username})"
use_tls = true
2.2 认证流程
用户登录
│
▼
LDAP Bind (使用 bind_dn/password)
│
▼
Search (base_dn + user_filter)
│
├── 找到用户 → Bind 验证密码
│ ├── 成功 → 登录 OK
│ └── 失败 → 密码错误
└── 未找到 → 用户不存在
2.3 测试连接
POST /api/enterprise-auth/ldap/test
验证 LDAP 连接和认证是否正常。
3. SAML 2.0 SSO
3.1 配置
控制台 → Enterprise Auth → SAML:
| 字段 | 说明 | 示例 |
|---|---|---|
| IdP Metadata URL | IdP 元数据 URL | https://idp.example.com/metadata |
| Entity ID | SP 实体 ID | https://rustpbx.example.com |
| ACS URL | 断言消费服务 URL | https://rustpbx.example.com/api/enterprise-auth/saml/callback |
3.2 SP Metadata
系统自动生成 SP Metadata XML:
GET /api/enterprise-auth/saml/metadata
将此 URL 提供给 IdP 管理员注册。
3.3 JIT 用户创建
SAML 登录时自动创建本地用户账户(JIT Provisioning)。
4. OAuth 2.0 / OIDC
4.1 支持的 Provider
| Provider | 说明 |
|---|---|
| Google Workspace | Google OAuth |
| Microsoft 365 / Azure AD | Microsoft OAuth |
| Okta | Okta OIDC |
| 自定义 OIDC | 任意 OIDC 兼容 Provider |
4.2 配置
控制台 → Enterprise Auth → OAuth:
| 字段 | 说明 |
|---|---|
| Provider | 选择 Provider 类型 |
| Client ID | OAuth Client ID |
| Client Secret | OAuth Client Secret |
| Authorization URL | 授权端点 |
| Token URL | Token 端点 |
| Userinfo URL | 用户信息端点 |
| Scopes | OAuth Scopes |
4.3 OAuth 流程
用户点击 "使用 Google 登录"
│
▼
GET /api/enterprise-auth/oauth/login
│
▼
重定向到 Google 授权页面
│
▼
用户授权后回调
GET /api/enterprise-auth/oauth/callback?code=xxx
│
▼
交换 Token → 获取用户信息 → JIT 创建/登录
5. TOTP MFA
5.1 启用 MFA
控制台 → Enterprise Auth → MFA 设置:
- 生成 TOTP Secret
- 显示 QR Code(扫描到 Google Authenticator / Microsoft Authenticator)
- 输入验证码确认绑定
5.2 MFA 流程
用户登录(密码验证通过)
│
▼
检查是否绑定 MFA
│
├── 已绑定 → 要求输入 TOTP 验证码
│ ├── 正确 → 登录成功
│ └── 错误 → 拒绝
└── 未绑定 → 直接登录成功
5.3 管理
- 启用/禁用 MFA:
POST /api/enterprise-auth/mfa/enable//disable - 重置 MFA:管理员可重置用户的 MFA 绑定
6. CSRF 保护
OAuth 和 SAML 流程使用服务端 CSRF Token 存储防止跨站请求伪造。
7. API
| 操作 | 端点 |
|---|---|
| 设置页面 | GET /console/enterprise-auth/settings |
| LDAP 测试 | POST /api/enterprise-auth/ldap/test |
| SAML Metadata | GET /api/enterprise-auth/saml/metadata |
| SAML 回调 | POST /api/enterprise-auth/saml/callback |
| OAuth 登录 | GET /api/enterprise-auth/oauth/login |
| OAuth 回调 | GET /api/enterprise-auth/oauth/callback |
| MFA 设置 | GET /console/enterprise-auth/mfa/setup |
| MFA 禁用 | POST /api/enterprise-auth/mfa/disable |