logo
0
0
WeChat Login

OAuth Device Flow 接口示例

基于 OAuth 2.0 Device Authorization Grant (RFC 8628) 协议的 Express + TypeScript 实现示例,对应 docs/protocol.md 协议规范。

⚠️ 本示例使用内存存储,仅供开发测试参考,不可直接用于生产环境

快速启动

npm install npm run dev

接口一览

接口方法说明
/auth/device/codePOST申请设备授权码
/auth/device/verifyPOST用户确认授权
/auth/tokenPOST轮询获取凭证
/cli-authGET浏览器授权页面
/debug/devicesGET查看当前设备码状态(调试用)

完整测试流程

1. 申请设备码

curl -s -X POST http://localhost:3000/auth/device/code \ -H "Content-Type: application/json" \ -d '{"client_id": "cloudbase-cli"}' | jq

记下返回的 user_codedevice_code

2. 用户确认授权

方式 A:打开浏览器访问 http://localhost:3000/cli-auth,输入 user_code

方式 B:通过 curl 模拟

curl -s -X POST http://localhost:3000/auth/device/verify \ -H "Content-Type: application/json" \ -d '{"user_code": "XXXX-XXXX"}' | jq

3. 轮询获取凭证

curl -s -X POST http://localhost:3000/auth/token \ -H "Content-Type: application/json" \ -d '{ "grant_type": "urn:ietf:params:oauth:grant-type:device_code", "device_code": "<your-device-code>", "client_id": "cloudbase-cli", "device_info": { "os": "darwin", "mac": "AA:BB:CC:DD:EE:FF", "hash": "abc123" } }' | jq
  • 用户未授权时返回 HTTP 400 + authorization_pending
  • 用户已授权后返回 HTTP 200 + 凭证信息

About

企业自建设备码授权服务Demo

Language
TypeScript73.8%
HTML26.2%