关于接口调用凭证

为了保障平台和用户的数据安全,大部分服务端API都需要使用接口凭证进行调用,以便平台识别调用者身份信息。
由于各种接口都有其适用的不同业务场景,对调用者的身份有不同的要求,因此平台设定了应用维度和用户维度两种不同的鉴权方式,开发者需要根据接口鉴权要求提前获取相应的调用凭证。

支持的凭证类型:

  • 应用签名:开发者以应用身份调用接口,平台识别应用身份,判断应用是否具有对当前接口的调用权限。目前主要支持该方式
    • 调用形式:请参考本页面的“应用签名”
  • 用户凭证(user_token):开发者以已登录用户身份调用接口,平台识别用户身份,判断用户是否具有对当前接口的调用权限
    • 调用形式:api_url?user_token=USER_TOKEN

应用签名

  • 签名算法
    • 使用HMAC-SHA256,安全性相对MD5更高
  • 需要签名字段(除key外,都放到header)
    • Gy-H-Api-Appid:应用id,由开放平台分配给应用的唯一ID
    • Gy-H-Api-Timestamp:时间戳,单位s; 填写当前时间戳,误差5秒之内
    • Gy-H-Api-Nonce-Str:随机值,可以是数字和字母的组合;长度32位
    • key: 应用密钥,由开放平台分配;仅用于签名内容拼接,不能放到请求中
  • 签名结果字段(放到header)
    • Gy-H-Api-Sign:使用应用的密钥,通过HMAC-SHA256算法签名后,得出的结果
  • 签名生成规则:将签名之外的字段用字典序排序,然后使用appid分配的对应秘钥,计算出签名。
    • (1). 将参数的 key,value 进行排序 (注意排除Gy-H-Api-Sign)
    • (2). 拼接成 key1=value1&key2=value2.... &的模式
    • (3). 拼接秘钥 key1=value1&key2=value2.... &key=秘钥
    • (4). 将上述字符串使用HMAC-SHA256签名后转为大写
  • 签名示例代码

示例:

#1.对参数按照key=value的格式,并按照参数名ASCII字典序排序生成字符串:
Gy-H-Api-Appid=gy_12345&Gy-H-Api-Nonce-Str=abc123456&Gy-H-Api-Timestamp=1650966683

#2.连接密钥key:
Gy-H-Api-Appid=gy_12345&Gy-H-Api-Nonce-Str=abc123456&Gy-H-Api-Timestamp=1650966683&key=secret123456

#3.使用HMAC-SHA256签名算法生成sign并转成大写:
sign=FD4FA5DF12F81BA099506005E6E9E3B1EB74DE66D9B834F444F3A1151DD34BEF

#4.最终的提交的header参数为:(注意`这里不能提交key`)
Gy-H-Api-Appid:gy_12345
Gy-H-Api-Nonce-Str:abc123456
Gy-H-Api-Timestamp:1650966683
Gy-H-Api-Sign:FD4FA5DF12F81BA099506005E6E9E3B1EB74DE66D9B834F444F3A1151DD34BEF

如何携带用户相关信息:

  • 携带方式:包头中
  • 可携带字段
    • Gy-H-App-User-Id: 用户在应用侧的唯一Id
      • 如应用是以微信小程序,则这里可以填写微信分配给应用的用户openId
    • Gy-H-App-User-Type: 用户类型,用于区分后续流程,可选
      • qq:表示该账号为QQ体系账号
      • wechat:表示该账号为微信体系分配的openId账号
      • wecom:表示该账号为企业微信账户体系分配的账号
© 1998 - 2022 Tencent Inc. all right reserved,powered by tencent.更新时间: 2025-03-06 17:00:45

results matching ""

    No results matching ""

    results matching ""

      No results matching ""