Java 如何在spring aws云SNS http端点中验证SNS消息的真实性
我正在使用Spring编写一个SNS http端点。我在中看不到有关验证消息签名的任何内容。我该怎么做 这是一个非常古老的问题,但可能有人对此有疑问 方法很简单。您需要从SignatureUrl创建InputStream,并基于此InputStream生成证书Java 如何在spring aws云SNS http端点中验证SNS消息的真实性,java,spring,spring-cloud,Java,Spring,Spring Cloud,我正在使用Spring编写一个SNS http端点。我在中看不到有关验证消息签名的任何内容。我该怎么做 这是一个非常古老的问题,但可能有人对此有疑问 方法很简单。您需要从SignatureUrl创建InputStream,并基于此InputStream生成证书 InputStream inStream = url.openStream(); CertificateFactory cf = CertificateFactory.getInstance("X.509"); X509Certifica
InputStream inStream = url.openStream();
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) cf.generateCertificate(inStream);
inStream.close();
接下来,您需要使用签名。获取SHA1 WithRSA实例,从您生成的证书中获取公钥,并使用消息中的数据更新签名
Signature sig = Signature.getInstance("SHA1withRSA");
sig.initVerify(cert.getPublicKey());
sig.update(getMessageBytesToSign(msg));
return sig.verify(Base64.decodeBase64(msg.getSignature()));
您可以在上找到完整的示例
当您创建此方法时,只需将其用作从SNS接收消息的服务的静态UTIL,例如
VerifySNS.isMessageSignatureValid(msg);
msg属性是SNSTopic消息