当前位置:主页 > 查看内容

移动推送 TPNS 签名认证(推荐) - API 文档

发布时间:2021-10-20 00:00| 位朋友查看

简介:概述 本文主要为您介绍移动推送 TPNS 签名认证方法。 采用 HMAC-SHA256 算法,根据 SecretKey 生产签名信息。通过校验签名进行鉴权,安全性更好,推荐使用。 参数说明 参数 说明 AccessId 移动推送 TPNS 后台分配的应用 ID,请前往 【移动推送 TPNS 控制台】……

概述

本文主要为您介绍移动推送 TPNS 签名认证方法。

采用 HMAC-SHA256 算法,根据 SecretKey 生产签名信息。通过校验签名进行鉴权,安全性更好,推荐使用。

参数说明

参数 说明
AccessId 移动推送 TPNS 后台分配的应用 ID,请前往 【移动推送 TPNS 控制台】>【配置管理】>【基础配置】 获取
SecretKey 移动推送 TPNS 后台分配的 SecretKey,与 AccessId 对应,请前往 【移动推送 TPNS 控制台】>【配置管理】>【基础配置】 获取
Sign 接口签名方式
TimeStamp 请求时间戳

签名生成方式

  1. 通过请求时间戳 + AccessId + 请求 body 进行字符拼接,得到原始的待签名字符串:
    待签名字符串 = ${TimeStamp} + ${AccessId} + ${请求body}
  2. 通过 SecretKey 作为密钥,对原始待签名字符串进行签名,生成得到签名:
    Sign = Base64(HMAC_SHA256(待签名字符串, SecretKey))

HTTP 协议拼装方式

HTTP 协议 header 中 除了通用头部协议外,需要携带当前请求时间戳、 AccessId、 以及签名 Sign 信息,具体参数如下:

Header 中参数 Key 含义 是否必须
Sign 请求签名
AccessId 应用 ID
TimeStamp 请求时间戳

具体 HTTP 请求报文如下:

POST /v3/push/app HTTP/1.1
Host: api.tpns.tencent.com
Content-Type: application/json
AccessId: 1500001048
TimeStamp: 1565314789
Sign: Y2QyMDc3NDY4MmJmNzhiZmRiNDNlMTdkMWQ1ZDU2YjNlNWI3ODlhMTY3MGZjMTUyN2VmNTRjNjVkMmQ3Yjc2ZA==
{"audience_type": "account","platform": "android","message": {"title": "test title","content": "test content","android": { "action": {"action_type": 3,"intent": "xgscheme://com.xg.push/notify_detail?param1=xg"}}},"message_type": "notify","account_list": ["5822f0eee44c3625ef0000bb"] }

签名生成示例

  1. 生成待拼接签名字符串如下:
    待加密字符串=15653147891500001048{"audience_type": "account","platform": "android","message": {"title": "test title","content": "test content","android": { "action": {"action_type": 3,"intent": "xgscheme://com.xg.push/notify_detail?param1=xg"}}},"message_type": "notify","account_list": ["5822f0eee44c3625ef0000bb"] }
  2. 根据密钥通过 HMAC-SHA256 算法,生成十六进制 hash,其中示例对应 secretKey =1452fcebae9f3115ba794fb0fff2fd73
    hashcode= hmac-sha256(待签名字符串, secretKey)
    得到 hashcode="cd20774682bf78bfdb43e17d1d5d56b3e5b789a1670fc1527ef54c65d2d7b76d"
  3. 对 hashcode 进行 base64 编码,得到签名串如下:
    得到 Sign=Base64(hashcode)
    Sign="Y2QyMDc3NDY4MmJmNzhiZmRiNDNlMTdkMWQ1ZDU2YjNlNWI3ODlhMTY3MGZjMTUyN2VmNTRjNjVkMmQ3Yjc2ZA=="

各语言签名代码示例

  • Python2
  • Python3
  • Java
  • Golang
  • C#
  • PHP
#!/usr/bin/env python
import hmac
import base64
from hashlib import sha256

s = '15653147891500001048{"audience_type": "account","platform": "android","message": {"title": "test title","content": "test content","android": { "action": {"action_type": 3,"intent": "xgscheme://com.xg.push/notify_detail?param1=xg"}}},"message_type": "notify","account_list": ["5822f0eee44c3625ef0000bb"] }'
key = '1452fcebae9f3115ba794fb0fff2fd73'
hashcode = hmac.new(key, s, digestmod=sha256).hexdigest()
print base64.b64encode(hashcode)

本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐