java - 如何验证 AWS SNS 使用 Spring Cloud SNS 发送的消息
问题描述
我们正在尝试接收来自 AWS SNS 服务的通知,我们决定使用 Spring Cloud SNS 库来处理来自 AWS SNS 的请求。 这是 Spring Cloud SNS 库的示例。
一切正常,但我们不知道如何或在哪里验证亚马逊 AWS 文档所说的消息。这里有一个示例,但是使用 Spring Cloud SNS 添加此验证是我们迷路的地方。
例如,我想在消息到达方法之前添加此验证代码:confirmUnsubscribeMessage、receiveNotification 和 confirmSubscriptionMessage。
private static boolean isMessageSignatureValid(Message msg) {
try {
URL url = new URL(msg.getSigningCertURL());
InputStream inStream = url.openStream();
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream);
inStream.close();
Signature sig = Signature.getInstance("SHA1withRSA");
sig.initVerify(cert.getPublicKey());
sig.update(getMessageBytesToSign(msg));
return sig.verify(Base64.decodeBase64(msg.getSignature()));
}
catch (Exception e) {
throw new SecurityException("Verify method failed.", e);
}
}
提前致谢。
解决方案
推荐阅读
- c# - API 调用 - 保护不记名令牌和 API 密钥
- node.js - 使用 docker compose 时无法执行 postgres 迁移
- scala - 使用 spark 在 Delta 表中进行棘手的 upsert
- c++ - 使用 VSCode 而不是 Visual Studio 调试 C++ DLL
- c# - Directory.GetFiles 在 xamarin android 上返回 null
- reactjs - NextJS SyntaxError:意外的令牌“导出”
- javascript - 一种形式 两个上传字段 nodejs express-fileupload
- kubernetes - Kubernetes - 保存 pod 的执行日志
- highcharts - 如何通过遍历来增加 Highcharts 高级可访问图表中的最小点值和系列颜色
- sql - 如何使用 HQL 获取商品的总天数设置为给定价格