所有API接口,都需要带上请求头用于鉴权
请求头:
Authorization: Bearer {JWT}
JWT 的 Header 与 Payload 的结构如下,其中 exp(过期时间)为当前时间加上 600 秒,jti(唯一随机 ID)用于防重放:
// JWT Header
{
”typ”: ”JWT”,
”alg”: ”<算法>”
}
// JWT Payload
{
”sub”: ”<分销账户code>”,
”aud”: ”<接口地址>”,
”iat”: <签发时间戳>,
”exp”: <过期时间戳>,
”jti”: ”<唯一随机,用于防重放ID>”
}
其中,分销账户code可以在典枢平台开通分销账户后查看,接口地址是完整的相对路径地址,如:/agent/prepaidOrder/create。
分别对 Header 和 Payload 做 Base64Url 编码,使用“私钥”对编码后的字符串进行签名:
𝑆𝑖𝑔𝑛𝑎𝑡𝑢𝑟𝑒 = 𝑆𝑖𝑔𝑛((𝐵𝑎𝑠𝑒64𝑈𝑟𝑙(𝐻𝑒𝑎𝑑𝑒𝑟) + "." + 𝐵𝑎𝑠𝑒64𝑈𝑟𝑙(𝑃𝑎𝑦𝑙𝑜𝑎𝑑)), 私钥)
其中,私钥是分销账户在典枢平台已添加的密钥。
将 Header、Payload 和 Signature 拼接为完整 JWT:
𝐽𝑊𝑇 = 𝐵𝑎𝑠𝑒64𝑈𝑟𝑙(𝐻𝑒𝑎𝑑𝑒𝑟) + "." + 𝐵𝑎𝑠𝑒64𝑈𝑟𝑙(𝑃𝑎𝑦𝑙𝑜𝑎𝑑) + "." + 𝑆𝑖𝑔𝑛𝑎𝑡𝑢𝑟𝑒