认证
Gateway 支持多种认证(Authentication)方式来保护访问安全。所有客户端必须在建立连接时完成身份验证。
认证方式
Token 认证
推荐的认证方式。通过环境变量 OPENCLAW_GATEWAY_TOKEN 设置 Token。
bash
# 设置 Gateway Token
export OPENCLAW_GATEWAY_TOKEN="your-secret-token-here"
# 启动 Gateway
openclaw gateway安全建议
Token 应至少 32 个字符,包含字母、数字和特殊字符。避免在命令行历史中暴露 Token。
密码认证
适用于交互式场景,支持密码(Password)认证:
bash
# 设置密码
openclaw config set gateway.password "your-password"密码 vs Token
密码认证便于人工操作,但 Token 认证更适合程序化集成。生产环境建议使用 Token 认证。
连接认证协议
首帧 connect 协议
客户端建立 WebSocket 连接后,必须在第一帧发送 connect 消息完成认证:
json
{
"type": "connect",
"token": "your-gateway-token",
"clientId": "device-unique-id",
"clientName": "My Laptop",
"version": "1.0"
}hello-ok 响应
认证成功后,Gateway 返回 hello-ok:
json
{
"type": "hello-ok",
"sessionId": "sess_abc123",
"gatewayVersion": "0.5.0",
"capabilities": ["streaming", "tools", "multi-model"]
}认证失败
认证失败时,Gateway 返回 unauthorized 并关闭连接:
json
{
"type": "unauthorized",
"reason": "invalid_token",
"message": "The provided token is invalid or expired."
}安全机制
连续认证失败会触发速率限制(Rate Limiting)。默认 5 次失败后锁定 IP 60 秒。
设备配对
设备配对(Device Pairing)允许新设备安全地接入 Gateway。
配对流程
text
1. 新设备发送配对请求
Client ──▶ Gateway: { "type": "pair-request", "deviceName": "iPhone" }
2. Gateway 生成配对码并通知已授权设备
Gateway ──▶ Authorized Device: "新设备 iPhone 请求配对,配对码: 847291"
3. 用户在已授权设备上确认
Authorized Device ──▶ Gateway: { "type": "pair-approve", "code": "847291" }
4. Gateway 向新设备颁发 Token
Gateway ──▶ Client: { "type": "pair-ok", "token": "device-token-xxx" }CLI 配对命令
bash
# 发起配对(在新设备上)
openclaw pair
# 查看待配对请求(在已授权设备上)
openclaw pair list
# 批准配对
openclaw pair approve <device-id>
# 拒绝配对
openclaw pair reject <device-id>多设备管理
管理已授权设备:
bash
# 列出所有已授权设备
openclaw devices list输出示例:
text
ID Name Last Seen Status
dev_001 MacBook Pro 2 minutes ago online
dev_002 iPhone 15 1 hour ago offline
dev_003 Linux Server 5 minutes ago onlinebash
# 撤销设备授权
openclaw devices revoke <device-id>
# 撤销所有设备(除当前设备外)
openclaw devices revoke-all撤销即时生效
撤销设备授权后,该设备的所有活跃连接将立即断开。
认证配置
在配置文件中调整认证行为:
json5
{
"gateway": {
"auth": {
"method": "token", // "token" | "password" | "both"
"rateLimitAttempts": 5, // 最大失败尝试次数
"rateLimitWindow": 60, // 锁定时间(秒)
"sessionTimeout": 86400 // 会话超时(秒)
}
}
}安全最佳实践
- 使用强 Token — 至少 32 字符,随机生成
- 定期轮换 — 建议每 90 天更换 Token
- 最小权限 — 每台设备使用独立 Token
- 监控访问 — 定期审查已授权设备列表
- 启用 HTTPS — 远程访问时务必启用 TLS 加密
