用途:为桌面应用(Electron、Tauri)、CLI 工具、TV/IoT 等无法可靠打开浏览器完成 OAuth 重定向的应用,基于 RFC 8628 设备授权流程,通过 Sigma Identity 完成用户认证。
主要能力:应用先请求设备码,向用户展示 user_code 与验证链接;用户在浏览器中访问 https://auth.sigmaidentity.com/device 并批准;应用按 interval 轮询令牌接口,获得 access_token 后可用 Bearer 令牌获取用户信息(含 sub、name、email、picture,以及 Sigma 专有的 bap_id、pubkey、bap)。涉及的三个端点均位于 https://auth.sigmaidentity.com:/api/auth/device/code(POST,获取 device_code 与 user_code)、/api/auth/device/token(POST,轮询 access_token)、/api/auth/oauth2/userinfo(GET,Bearer 令牌获取用户信息)。这三个端点对 localhost 和桌面应用的跨域请求允许任意来源,安全性由访问令牌而非来源校验保证。
使用方式:第一步以 client_id 和 scope(如 openid profile)请求设备码,返回 device_code、user_code、verification_uri、verification_uri_complete、expires_in、interval。第二步向用户展示 user_code,并可打开 verification_uri_complete 预填代码。第三步按 interval 轮询令牌,请求体需包含 grant_type: urn:ietf:params:oauth:grant-type:device_code、device_code、client_id。第四步用 access_token 请求 userinfo。轮询需处理错误:authorization_pending 继续轮询,slow_down 将间隔增加 5 秒,expired_token 表示码过期需重新开始,access_denied 表示用户拒绝。Tauri 应用可用 shell 插件打开验证 URL,例如 app.shell().open(verification_url, None) 或 @tauri-apps/plugin-shell 的 open。
适用场景:桌面应用跨域认证、CLI 无法打开浏览器、输入能力受限的 TV/IoT 设备,以及 AI 智能体认证——智能体以程序方式请求设备码,由人类所有者批准,令牌携带 BAP 声明(bap_id、pubkey),智能体使用派生的成员密钥而非主密钥。ClawNet 可根据 BAP 身份、证明历史、技能签名、交叉证明和版本连续性计算 0-100 信任分,信任分越高可拥有更大自主权。
限制:设备码默认 15 分钟过期,轮询默认间隔 5 秒且受速率限制,访问令牌默认 1 小时,无需 client_secret,但用户必须在 auth.sigmaidentity.com 明确批准。具体配置选项与部署细节资料未提供。