For the complete documentation index, see llms.txt. This page is also available as Markdown.

安全与验证

Headers 说明

在调用 API 时,需要在请求头中包含以下参数:

Header
描述

X-Partner-Id

该 ID 是提供给合作伙伴在注册此服务时的“用户名”,Partner ID 通常存储为参考,不需要额外加密。

X-Api-Key

这是为每个合作伙伴用于授权实施请求而生成的安全密钥。

Authorization

每个请求生成的 JWT Token,用于安全验证请求的合法性。格式示例:Bearer {{jwt}}

使用 "Bearer" 类型是 JWT 在 Authorization 头部的标准做法,可帮助区分身份验证使Token类型。

Content-Type(仅适用于 POST 请求)

该值为 application/json

构建 JWT Token

var header = {
	'typ': 'JWT',
	'alg': 'HS256'
};

var currentTimestamp = Math.floor(Date.now() / 1000)

var data = {
	'partner_id': pm.environment.get('partner.id'),
	'iat': currentTimestamp
}


function base64url(source) {
    // Encode in classical base64
    encodedSource = CryptoJS.enc.Base64.stringify(source)
    
    // Remove padding equal characters
    encodedSource = encodedSource.replace(/=+$/, '')
    
    // Replace characters according to base64url specifications
    encodedSource = encodedSource.replace(/\+/g, '-')
    encodedSource = encodedSource.replace(/\//g, '_')
    
    return encodedSource
}

// encode header
var stringifiedHeader = CryptoJS.enc.Utf8.parse(JSON.stringify(header))
var encodedHeader = base64url(stringifiedHeader)

// encode data
var stringifiedData = CryptoJS.enc.Utf8.parse(JSON.stringify(data))
var encodedData = base64url(stringifiedData)

// build token
var token = `${encodedHeader}.${encodedData}`

// sign token
var signature = CryptoJS.HmacSHA256(token, jwtSecret)
signature = base64url(signature)
var signedToken = `${token}.${signature}`
  • Header 对象包含两个属性:

    • typ,值为 'JWT'(表示它是一个 JWT)。

    • alg,值为 'HS256'(表示使用 HMAC SHA-256 算法进行签名)。

  • 然后将 Header 转换为 JSON 字符串

  • 生成的 JSON 字符串采用 UTF-8 编码

  • UTF-8 编码后的 Header 再经过 Base64 URL 编码,生成 JWT Toke的第一部分。

Payload(载荷)

  • 数据对象包含两个属性:

    • partner_id(合作伙伴 ID)。

    • 当前时间戳(自 Unix 纪元以来的秒数,使用 Math.floor(Date.now() / 1000) 获取)。

  • 数据对象转换为 JSON 字符串

  • 生成的 JSON 字符串采用 UTF-8 编码

  • UTF-8 编码后的数据(Payload)再经过 Base64 URL 编码,生成 JWT Token的第二部分。

生成 Token

Token 由 编码后的 Header编码后的 Payload 通过 .(点号) 连接而成。

签署 Token

  • Token 作为 消息输入,与 密钥(jwtSecret) 一起传递给 HMAC SHA-256 算法

  • HMAC SHA-256 算法 生成该 Token 的 签名

  • 签名为二进制数据

  • 二进制签名 经过 Base64 URL 编码,生成 JWT Token 的第三部分

构造最终 JWT

  • 最终的 JWT 通过 原始 Token(Header + Payload).(点号分隔符)编码后的签名 进行拼接。

生成的 JWT 变量 是一个紧凑的 JWT Token,可用于 安全数据交换和身份验证签名 确保Token的 完整性和真实性,接收方可以使用 jwtSecret 进行验证,以确保其内容在传输过程中 未被篡改

最后更新于

这有帮助吗?