消息通知服务 SMN
消息通知服务 SMN
- 最新动态
- 功能总览
- 产品介绍
- 快速入门
- 用户指南
- API参考
- SDK参考
- 场景代码示例
-
常见问题
- 消息通知服务有哪些优势?
- 消息通知服务支持的传输协议有哪些?
- 消息通知服务的使用如何收费和计费?
- 消息通知服务的主题名称有何格式要求?
- 每个用户可以创建多少个主题?
- 每个主题最多支持多少个订阅者?
- 可以向主题发布多少条消息?
- 每个用户可以创建多少个消息模板?
- 以短信方式接收消息的限制是什么?
- 单个主题是否支持通过多种传输协议进行订阅?
- 主题创建者是否可以控制所创建的主题中允许的传输协议?
- 订阅终端地址可以修改吗?
- 是否可删除已发布的消息?
- 是否会保证将消息传送到订阅的终端节点?
- 每条消息会让订阅者收到多少次?
- 向主题推送消息后,订阅者为什么没有收到消息?
- 为什么用户接收到的邮件中图片无法显示?
- 使用消息通知服务发送短信的号码或显示名可以保持一致吗?
- 如何获取用户的账号ID?
- 钉钉机器人、钉钉企业内部机器人、飞书机器人、企业微信机器人如何获取订阅终端?
- 视频帮助
- 文档下载
- 通用参考
本文导读
链接复制成功!
校验消息签名
操作场景
为了确保安全,提供订阅确认、取消订阅和消息的签名认证,在消息的接收方需要对SMN发送的消息进行校验,消息类型包括订阅确认消息、通知消息和取消订阅通知消息。使用SMN消息中的信息,您可以通过签名串验证消息的合法性。
操作步骤
验证SMN发送的HTTP(S)请求的流程如下:
- SMN将根据您终端节点接收的HTTP消息,使用其中关键的键-值信息进行签名验证,具体的验证签名键信息请参考特定消息类型的签名键值信息。
- 通过HTTP消息中的signing_cert_url获取证书内容的地址,通过该地址获取证书内容,并且生成X509证书。
说明:
下载证书的链接始终是HTTPS请求,需要验证下载链接服务器的证书的真伪。
- 从X509证书中提取公钥,用于验证收到消息的可靠性和完整性。
- 确定消息类型。消息类型为键type对应的值,不同的消息类型对应不同的签名证书验证方式。
- 创建签名字符串。将消息中的键值对取出来,使其键值按字典序排序。每一个键占一行,每一个值占一行,键所对应的值在该键所占行的下一行。
特定消息类型的签名键值信息
- 消息通知
- 消息通知必须包括以下键,如果subject为空,则不参与签名:
message message_id subject timestamp topic_urn type
- 一个消息通知使用的签名键值信息示例如下:
message My test message message_id 88c726942175432bac921eafd0036163 subject demo timestamp 2016-08-15T07:29:16Z topic_urn urn:smn:regionId:74dc9e44d0cc4573adfce91cdfdd3ba9:xxxx type Notification
说明:
每一个键占一行,每一个值占一行,键所对应的值在该键所占行的下一行。
- 消息通知必须包括以下键,如果subject为空,则不参与签名:
- 订阅确认和取消订阅
- 订阅确认和取消订阅的消息中必须包含以下键:
message message_id subscribe_url timestamp topic_urn type
- 一个订阅确认的消息简单示例如下所示:
message You are invited to subscribe to topic: urn:smn:regionId:d91989905b8449b896f3a4f0ad57222d:demo. To confirm this subscription, please visit the following SubscribeURL in this message. message_id def5c309cbff44d5a870787ed937edf8 subscribe_url https://ip地址/smn/subscription/confirm?region_id&token&topic_urn:demo timestamp 2016-08-15T07:29:16Z topic_urn urn:smn:regionId:d91989905b8449b896f3a4f0ad57222d:demo type SubscriptionConfirmation
说明:
每一个键占一行,每一个值占一行,键所对应的值在该键所占行的下一行。
- 订阅确认和取消订阅的消息中必须包含以下键:
父主题: HTTP(S)终端节点使用样例