应用令牌用于向 Speedle Cloud ADS 认证应用,并且只能访问令牌所属的 service。令牌不代表最终用户身份,也不能用于管理 API 认证。令牌控制台随账号登录开放;带认证的 ADS 尚未提供时,签发令牌不会启用服务端授权调用。
签发令牌
账号已有 service 时,打开应用令牌,输入 1–128 个字符的令牌名称,然后选择 创建令牌。如果要求验证,请选择当前可用的已关联供应商。从供应商页面返回后,重新输入名称并再次选择 创建令牌;返回页面不会自动签发令牌。
控制台会发送以下会话请求:
POST /api/tokens
Origin: https://cloud.speedle.io
X-SC-CSRF: 1
Content-Type: application/json
{"name":"books-app"}示例使用生产环境 origin。客户端沿用原有的安全 cookie 处理方式携带会话,因此这段内容不是可单独执行的匿名请求。
创建令牌要求在最近 10 分钟内完成正常供应商认证,包括登录或重新认证。服务端会依据持久化的会话和服务端时钟判断。恰好 10 分钟仍有效;认证时间戳缺失、位于未来或已经过期时,返回 403 {"error":"reauth_required"}。普通操作不会刷新最近认证时间。
请求只接受 name。service ID、scope、过期时间和认证证明均不是客户端可提交的参数。
保护一次性秘密值
创建成功时返回 201,响应包含令牌元数据和仅返回一次的 token 字段,格式如下:
spdl_<canonical uppercase ULID id>_<43 base62 digits>上面只是格式说明,不是可用凭据。令牌前缀中的 ID 与返回的令牌 ID 相同。请立即将签发的值存入应用服务端的秘密存储。
不要把令牌嵌入前端代码或持久化到浏览器存储,也不要放入 URL、源代码、截图、issue、遥测或日志。正常管理客户端可以短暂持有并展示新签发值,供一次性披露和用户主动复制;不得自动复制、下载、存储或记录秘密值。
令牌列表只返回元数据,之后无法再次取回明文。v1 令牌没有内置过期时间。每个 service 最多同时保留两个有效令牌,已撤销的历史记录不占用这两个名额。
查看令牌元数据
GET /api/tokens 按 ID 降序返回有效及已撤销令牌的元数据分页。默认每页 25 条,limit 为 1–100。cursor 是不包含边界项的令牌 ID;跟随 nextCursor 直至 null。接口永不返回秘密值。
使用 刷新最新令牌 和 下一页 查看元数据。lastUsedAt 尽力更新且最多每小时更新一次,不能据此证明调用方已经停止使用某个令牌。
轮换和撤销令牌
带认证的 ADS 可用后,先通过正常的最近认证创建第二个令牌,更新所有应用和凭据引用,并确认新凭据能按预期策略工作,然后再停用旧凭据。
在 应用令牌 页面选择旧令牌的 撤销 入口,核对名称与 ID,再确认 撤销令牌。管理会话会发送:
DELETE /api/tokens/<old token id>
Origin: https://cloud.speedle.io
X-SC-CSRF: 1
Content-Type: application/json
{}首次撤销属于自己的有效令牌时,返回无正文的 204。未知、不属于自己或已经撤销的 ID 均返回 404。验证缓存的授权有效期有固定上限:从开始权威查询算起最长 60 秒,因此撤销不保证立即在所有位置生效。
如果两个有效名额都已占用,先清点并切换所有合法调用方,再停用凭据;不要仅为腾出名额而盲目撤销仍在生产使用的令牌。
如果创建或撤销响应丢失,先核对刷新后的元数据,再主动决定下一步操作。控制台不会自动重试修改请求;同名记录不能恢复或识别丢失的一次性秘密值。