首页 > 解决方案 > 如何验证 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);
    }
}

提前致谢。

标签: javaamazon-web-servicesspring-bootspring-cloudspring-cloud-aws

解决方案


推荐阅读