签发访问令牌
POST
/v2/auth/token使用账号密码或客户端凭证换取 access_token 与 refresh_token。
这是唯一的免鉴权写接口。返回的 access_token 有效期 2 小时,refresh_token 有效期 30 天且一次性轮换:每次刷新都会签发新的 refresh_token,旧的在 5 秒宽限期后失效。
免鉴权 10 次 / 分钟 / IP api.demo.acme-cloud.dev
请求参数
共 1 项X-Device-Id 可选 请求头string
设备指纹,用于风控与登录态审计
请求体
application/jsongrant_type 必填 string · 默认 password
授权类型
可选值
passwordclient_credentialsrefresh_tokenusername 必填 string
登录账号(邮箱或手机号)
password 必填 string
账号密码,服务端使用 Argon2id 校验
scope 可选 string
申请权限范围,空格分隔;留空则取角色默认权限集
mfa_code 可选 string
已开启两步验证的账号必须携带 6 位动态码
响应
3 种状态200 OK —— 令牌签发成功
响应示例
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzdmM2EyMSJ9.demo",
"refresh_token": "rt_8c41d0ecb9a24f3d8a6b",
"token_type": "Bearer",
"expires_in": 7200,
"scope": "users:read instances:write"
}代码示例
cURL
curl -i -X POST 'https://api.demo.acme-cloud.dev/v2/auth/token' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'X-Device-Id: web-8f2c1a' \
-d '{
"grant_type": "password",
"username": "ada@acme.com",
"password": "••••••••",
"scope": "users:read instances:write"
}'注意事项
- 不要在浏览器前端硬编码账号密码,生产环境请使用
client_credentials或 PKCE 流程。 - 登录失败计数按
账号 + 客户端 IP双维度累计,5 次触发 15 分钟锁定。