企业认证(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 URLIdP 元数据 URLhttps://idp.example.com/metadata
Entity IDSP 实体 IDhttps://rustpbx.example.com
ACS URL断言消费服务 URLhttps://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 WorkspaceGoogle OAuth
Microsoft 365 / Azure ADMicrosoft OAuth
OktaOkta OIDC
自定义 OIDC任意 OIDC 兼容 Provider

4.2 配置

控制台 → Enterprise Auth → OAuth:

字段说明
Provider选择 Provider 类型
Client IDOAuth Client ID
Client SecretOAuth Client Secret
Authorization URL授权端点
Token URLToken 端点
Userinfo URL用户信息端点
ScopesOAuth 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 设置:

  1. 生成 TOTP Secret
  2. 显示 QR Code(扫描到 Google Authenticator / Microsoft Authenticator)
  3. 输入验证码确认绑定

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 MetadataGET /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