authentication - 如何使用 C# 对 AWS SNS 消息进行身份验证?
问题描述
我正在向 HTTP 端点发送 SNS 消息。我可以从 JSON 数据中获取消息信息,但如何验证消息并验证消息签名?
这是其中一条消息:
{
"Type": "Notification",
"MessageId": "a1825ceb-aa86-531a-9712-09b49bb60b32",
"TopicArn": "arn:aws:sns:us-west-2:xxxx:Test_Topic",
"Message": "This is the message body",
"Timestamp": "2019-05-22T11:13:52.513Z",
"SignatureVersion": "1",
"Signature": "abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc",
"SigningCertURL": "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-abcabcabc.pem",
"UnsubscribeURL": "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:yyy",
"MessageAttributes": {
"String2": {
"Type": "String",
"Value": "This is the second string"
},
"String1": {
"Type": "String",
"Value": "This is the first string"
}
}
}
如何检查消息签名是否有效?
解决方案
我正在使用 AWSSDK Utils 中的 Message 类,这是代码。
var msg = await ReadBody();
var message = Message.ParseMessage(msg);
if (!message.IsMessageSignatureValid())
这是包 Amazon.SimpleNotificationService.Util.Message。
希望这可以帮助。
推荐阅读
- python - 如何在基于 gpgme 的 Python 脚本中防止密码缓存?
- android - ViewModel 似乎无法观察 MutableLiveData
- c++ - Qt C++ macOS 问题。我正在使用函数 .find("a word") 在多集中搜索单词,它适用于 windows 但不适用于 mac
- javascript - .d.ts 文件中的意外标识符
- javascript - 为什么在使用“mammoth”转换简单的 .docx 文件时没有出现此类文件错误?
- python - 如何删除一些复选框并使用单个按钮创建另一个复选框?
- visual-c++ - 我可以使用两个以上的 istream 重载运算符吗?
- r - 如何标准化 R 中的一列数据并获取贝尔曲线直方图以找出一个范围内的百分比?
- autohotkey - 发送后自动热键箭头键卡住/阻塞到无穷大
- c++ - 我应该如何替换矢量
::const_iterator 在 API 中?