认证流程¶
FadianRoam 使用 802.1X 企业级 Wi-Fi 认证与联邦 RADIUS 代理。
协议栈¶
┌─────────────────────────────────┐
│ Wi-Fi Supplicant │ User device (laptop, phone)
├─────────────────────────────────┤
│ EAP-TTLS / PAP │ Outer: TLS tunnel; Inner: plaintext password
├─────────────────────────────────┤
│ RADIUS (UDP 1812) │ Authentication protocol
├─────────────────────────────────┤
│ Identity Provider │ Credential validation
└─────────────────────────────────┘
认证步骤¶
本地用户(同一站点)¶
用户在其归属站点连接:
sequenceDiagram
participant D as Device
participant AP as Wi-Fi AP
participant R as RADIUS Server
participant IDP as Identity Provider
D->>AP: 802.1X EAP-Start
AP->>R: Access-Request (user@realm.a)
R->>R: Realm matches local → strip realm
R->>IDP: Validate credentials
IDP-->>R: Success or Failure
R-->>AP: Access-Accept / Access-Reject
AP-->>D: Wi-Fi connected / denied
- 设备发起 802.1X 认证
- AP 将 EAP 转发至本地 RADIUS 服务器
- RADIUS 识别
@realm.a为本地域 - RADIUS 去除域后缀,将凭证发送至 Identity Provider
- IDP 验证并返回结果
- RADIUS 发送 Access-Accept 或 Access-Reject
漫游用户(不同站点)¶
来自站点 B 的用户在站点 A 连接:
sequenceDiagram
participant D as Device
participant AP as Site A AP
participant RA as Site A RADIUS
participant RELAY as Federation Relay
participant RB as Site B RADIUS
participant IDB as Site B IDP
D->>AP: 802.1X EAP-Start
AP->>RA: Access-Request (user@realm.b)
RA->>RA: Realm not local → proxy
RA->>RELAY: Proxy via MGMT VPN
RELAY->>RELAY: Lookup realm.b → Site B
RELAY->>RB: Forward via MGMT VPN
RB->>IDB: Validate credentials
IDB-->>RB: Success
RB-->>RELAY: Access-Accept
RELAY-->>RA: Access-Accept
RA-->>AP: Access-Accept
AP-->>D: Wi-Fi connected
- 设备在站点 A 发起 802.1X 认证
- 站点 A 的 RADIUS 发现
@realm.b不是本地域 - 站点 A 的 RADIUS 通过 MGMT VPN 将请求代理至 Federation Relay
- Relay 在其域表中查找
realm.b并转发至站点 B 的 RADIUS - 站点 B 的 RADIUS 对其自有 IDP 进行验证
- 结果沿原路返回
EAP 配置¶
支持的方法¶
| 方法 | 支持状态 | 说明 |
|---|---|---|
| EAP-TTLS/PAP | 必需 | 主要方法,IDP 集成最简单 |
| PEAP/MSCHAPv2 | 可选 | 需要 IDP 中存储密码哈希 |
| EAP-TLS | 可选 | 基于证书,无需密码 |
为什么选择 EAP-TTLS/PAP?¶
EAP-TTLS 在设备和 RADIUS 服务器之间建立 TLS 隧道。在此隧道内,凭证以明文(PAP)方式发送。这是安全的,因为:
- 外层 TLS 隧道加密了所有无线传输内容
- RADIUS 服务器解密后通过本地连接转发至 IDP
- IDP 收到标准的凭证验证请求
- 无密码哈希方案兼容性问题
TLS 证书¶
每个成员的 RADIUS 服务器需要为 EAP 外层隧道提供有效的 TLS 证书:
- 必须由公共受信任 CA 签发
- 自签名证书会导致大多数设备连接失败
- 证书 CN/SAN 应匹配成员的 RADIUS 域名
- 强烈建议启用自动续期
IDP 集成¶
凭证验证¶
RADIUS 服务器必须能够根据成员的 Identity Provider 验证用户凭证。具体的集成方式(ROPC、LDAP、REST API、本地数据库等)由各成员自行决定。
关键要求是:
- RADIUS 接收用户名和密码(来自内层 EAP 隧道)
- RADIUS 查询 IDP 以验证这些凭证
- IDP 返回成功或失败
- RADIUS 相应发送 Access-Accept 或 Access-Reject
身份隔离¶
每个成员为其漫游用户运营独立的身份系统:
- 成员之间不同步用户
- 每个成员控制自己的用户生命周期(注册、暂停、删除)
用户注册¶
每个 FadianRoam 站点(分支)独立管理其域的用户注册。
注册策略¶
每个站点自行决定注册策略:
| 策略 | 描述 |
|---|---|
| 开放 | 任何人都可以在该站点注册账户 |
| 邀请制 | 注册需要站点运营者的邀请 |
| 封闭 | 不开放公共注册;账户仅由管理员创建 |
联邦不强制统一策略——各站点可自由选择适合其使用场景的方式。
用户身份¶
- 用户在特定站点注册,获得该站点域下的凭证
- 身份格式:
username@site-realm(例如edward.sun@roam.yunzheng.space) - 用户凭证可通过漫游在全球任意 FadianRoam AP 使用
- 归属站点负责认证其自有用户,无论用户在哪里连接
漫游权限¶
在任意 FadianRoam 站点注册的用户均可在其他站点的 AP 上连接。归属站点对其用户的行为和流量承担责任。
域命名¶
每个成员在联邦中注册唯一的域标识符:
- 格式:
roam.example.net或member-name.fadianroam.net - 必须是有效的 DNS 风格标识符
- 在联邦配置仓库中注册
- 用于 RADIUS 域路由(例如
user@roam.example.net)
域唯一性
域名在联邦内必须全局唯一。Federation Relay 使用域名将认证请求路由至正确的成员。