- 文档首页
智能体身份和权限管理平台
用户指南
身份管理
用户身份管理
OAuth 设备码流程
OAuth 设备码流程
本指南面向命令行工具、电视类应用、嵌入式设备,或其他不适合在本机输入密码的客户端。OAuth 设备码流程允许设备先申请一组短码,引导用户在另一台带浏览器的设备上完成登录和授权,然后设备端轮询 token endpoint,直到 identity 可以签发令牌。
- 已创建并启用 identity UserPool。
- 已为设备应用创建一个 native UserPool 客户端。
- 该 native 客户端已启用 DeviceFlowEnabled。当移动/原生应用客户端启用该能力后,支持的 grant posture 会变为 device_code 加 refresh_token。
- 客户端具备设备应用需要的 scopes,例如 openid、profile、email,以及可选的 offline_access。
- 如果希望验证页直接路由到指定身份提供方,可在集成支持时随设备验证请求携带 identity_provider hint。
读取 UserPool issuer 的 discovery document,并使用其中发布的端点值,不要手工假设路径。
重点关注 discovery 响应中的 device_authorization_endpoint、token_endpoint 和 issuer 信息。
设备通过 device authorization endpoint 发起流程,提交 native 客户端标识和所需 scopes。
成功响应通常包含以下值:
在设备上展示 user_code 和验证地址。如果响应中有 verification_uri_complete,建议以二维码或直接链接形式展示,减少用户手动输入短码的成本。
当用户打开验证页后,identity 会规范化短码、将其关联到授权请求,并把用户送入正常登录和授权确认路径。如果用户批准请求,identity 会为最初的 device code 完成设备授权状态。
设备使用 device code grant 轮询 token endpoint。请遵守设备授权响应中返回的 interval。
在用户尚未完成批准前,token endpoint 可能返回 pending 类响应。请按返回的轮询间隔继续请求,直到拿到令牌或遇到终态错误。
用户批准后,token endpoint 会返回该 native 客户端上下文下的标准令牌响应。
- 设备授权状态有效期较短。当前运行时使用五分钟设备授权有效期和五秒轮询间隔。
- 如果用户拒绝请求,设备端应停止轮询;如仍需登录,应重新开始流程。
- 如果短码过期,请申请新的 device code,不要继续重试旧代码。
- 轮询应保持克制。过于频繁的轮询可能导致限流,也会影响用户体验。
- 在设备屏幕上展示足够的应用和设备上下文,帮助用户识别自己正在批准什么。
- 在流程有效期内,将 device_code 视为敏感值处理。
- 如果设备应用请求离线访问,请安全存储 refresh token。
最近更新时间:2026.08.24 15:13:50