soap签名_签名SOAP消息–生成封装的XML签名

soap签名

数字签名是使数字内容可信的一种广泛使用的机制。 通过为某些内容生成数字签名,我们可以让另一方能够验证该内容。 通过此验证,它可以保证在我们签名后不会更改。 通过这个示例,我将分享如何为SOAP信封生成签名。 但是,这当然也适用于任何其他内容签名。

在这里,我将签名

  • SOAP信封本身
  • 一个附件
  • 将签名放在SOAP标头中

通过将签名放置在也由签名签名的SOAP标头中,这成为封装签名的演示。

信封签名

我正在使用Apache Santuario库进行签名。 以下是我使用的代码段。 我已经在此处共享了完整的示例以供下载 。

public static void main(String unused[]) throws Exception {String keystoreType = "JKS";String keystoreFile = "src/main/resources/PushpalankaKeystore.jks";String keystorePass = "pushpalanka";String privateKeyAlias = "pushpalanka";String privateKeyPass = "pushpalanka";String certificateAlias = "pushpalanka";File signatureFile = new File("src/main/resources/signature.xml");Element element = null;String BaseURI = signatureFile.toURI().toURL().toString();//SOAP envelope to be signedFile attachmentFile = new File("src/main/resources/sample.xml");//get the private key used to sign, from the keystoreKeyStore ks = KeyStore.getInstance(keystoreType);FileInputStream fis = new FileInputStream(keystoreFile);ks.load(fis, keystorePass.toCharArray());PrivateKey privateKey =(PrivateKey) ks.getKey(privateKeyAlias, privateKeyPass.toCharArray());//create basic structure of signaturejavax.xml.parsers.DocumentBuilderFactory dbf =javax.xml.parsers.DocumentBuilderFactory.newInstance();dbf.setNamespaceAware(true);DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();Document doc = dBuilder.parse(attachmentFile);XMLSignature sig =new XMLSignature(doc, BaseURI, XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1);//optional, but betterelement = doc.getDocumentElement();element.normalize();element.getElementsByTagName("soap:Header").item(0).appendChild(sig.getElement());{Transforms transforms = new Transforms(doc);transforms.addTransform(Transforms.TRANSFORM_C14N_OMIT_COMMENTS);//Sign the content of SOAP Envelopesig.addDocument("", transforms, Constants.ALGO_ID_DIGEST_SHA1);//Adding the attachment to be signedsig.addDocument("../resources/attachment.xml", transforms, Constants.ALGO_ID_DIGEST_SHA1);}//Signing procedure{X509Certificate cert =(X509Certificate) ks.getCertificate(certificateAlias);sig.addKeyInfo(cert);sig.addKeyInfo(cert.getPublicKey());sig.sign(privateKey);}//write signature to fileFileOutputStream f = new FileOutputStream(signatureFile);XMLUtils.outputDOMc14nWithComments(doc, f);f.close();}

首先,它读取将用于签名的私钥。 要为您自己创建密钥对, 这篇文章会有所帮助。 然后,它创建了签名,并添加了SOAP消息和附件作为要签名的文档。 最后,它执行签名并将签名的文档写入文件。

签名的SOAP消息如下所示。

<soap:Envelope xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:pj="http://www.pjxml.org/namespaces/messageHeader"xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"><soap:Header><pj:MessageHeader pj:version="1.0" soap:mustUnderstand="1"><pj:From><pj:PartyId pj:type="ABCDE">FUN</pj:PartyId></pj:From><pj:To><pj:PartyId pj:type="ABCDE">PARTY</pj:PartyId></pj:To><pj:CPAId>uri:www.pjxml.org/socialService/Ping</pj:CPAId><pj:ConversationId>FUN PARTY FUN 59c64t0087fg3kfs000003n9</pj:ConversationId><pj:Service>uri:www.pjxml.org/socialService/</pj:Service><pj:Action>Ping</pj:Action><pj:MessageData><pj:MessageId>FUN 59c64t0087fg3kfs000003n9</pj:MessageId><pj:Timestamp>2013-10-22T17:12:20</pj:Timestamp></pj:MessageData></pj:MessageHeader><pj:Via pj:id="59c64t0087fg3ki6000003na" pj:syncReply="False" pj:version="1.0"soap:actor="http://schemas.xmlsoap.org/soap/actor/next" soap:mustUnderstand="1"><pj:Service>uri:www.pjxml.org/socialService/</pj:Service><pj:Action>Ping</pj:Action></pj:Via><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:SignedInfo><ds:CanonicalizationMethodAlgorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod><ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod><ds:Reference URI=""><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod><ds:DigestValue>9RXY9kp/Klx36gd4BULvST4qffI=</ds:DigestValue></ds:Reference><ds:Reference URI="../resources/attachment.xml"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod><ds:DigestValue>3JcccO8+0bCUUR3EJxGJKJ+Wrbc=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>d0hBQLIvZ4fwUZlrsDLDZojvwK2DVaznrvSoA/JTjnS7XZ5oMplN9  THX4xzZap3+WhXwI2xMr3GKO................x7u+PQz1UepcbKY3BsO8jB3dxWN6r+F4qTyWa+xwOFxqLj546WX35f8zT4GLdiJI5oiYeo1YPLFFqTrwg==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>                MIIDjTCCAnWgAwIBAgIEeotzFjANBgkqhkiG9w0BAQsFADB3MQswCQYDVQQGEwJMSzEQMA4GA1UE...............qXfD/eY+XeIDyMQocRqTpcJIm8OneZ8vbMNQrxsRInxq+DsG+C92b</ds:X509Certificate></ds:X509Data><ds:KeyValue><ds:RSAKeyValue><ds:Modulus>k5y0amGgOQ2O/St0Kc2/xye80tX2fDEKs2YOlM/zCknL8VgK0CbAKVAwvJoycQL9mGRkPDmbitHe............StGofmsoKURzo8hofYEn41rGsq5wCuqJhhHYGDrPpFcuJiuI3SeXgcMtBnMwsIaKv2uHaPRbNX31WEuabuv6Q==</ds:Modulus><ds:Exponent>AQAB</ds:Exponent></ds:RSAKeyValue></ds:KeyValue></ds:KeyInfo></ds:Signature></soap:Header><soap:Body><pr:GetPriceResponse xmlns:pr="http://www.pushpalankajaya.com/prices"><pr:Price>1.90</pr:Price></pr:GetPriceResponse></soap:Body>
</soap:Envelope>

在下一篇文章中,让我们看看如何验证此签名,以便我们可以保证签名的文档不会更改。

干杯!

参考: Pushpalanka博客博客上的SOAP消息签名–由我们的JCG合作伙伴 Pushpalanka 生成的封装XML签名 。

翻译自: https://www.javacodegeeks.com/2014/03/signing-soap-messages-generation-of-enveloped-xml-signatures.html

soap签名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/342419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SAEJ1939无线通信数传协议的CAN(控制器局域网络)总线批量数据传输

CAN总线 CAN&#xff08;控制器局域网络&#xff09;总线&#xff0c;以其高实时性、高可靠性、功能完善、高性价比、开发周期短、等诸多优点&#xff0c;被大量应用于车辆通信及控制&#xff0c;几乎所有汽车生产商及其供应商都选则CAN总线做为通信介质。 SAEJ1939协议 SAE…

工业以太网交换机品牌排行榜,国产工业交换机哪个品牌好?

国内工业以太网交换机都有哪些品牌&#xff1f;近年来&#xff0c;国产的工业交换机品牌非常的多&#xff0c;在很多领域被广泛应用&#xff0c;比如说&#xff1a;智能交通&#xff0c;轨道交通&#xff0c;电力&#xff0c;矿山等多个领域&#xff0c;现在随着国内交换机研发…

【物联网天线选择攻略】2.4GHz 频段增益天线模块设备选择

天线模块设备(antenna)是一种能量变换器&#xff0c;它把传输线上传播的导行波&#xff0c;变换成在无界媒介中传播的电磁波&#xff0c;或者进行相反的变换。对于设计一个应用于射频系统中的小功率、短距离的2.4GHz无线收发设备&#xff0c;天线的设计和选择是其中的重要部分&…

POE供电交换机应用方案及功能特性介绍

PoE供电交换机是指能够通过网线为远端受电终端提供网络供电的交换机&#xff0c;包含网络交换机和PoE供电两个功能&#xff0c;是PoE供电系统中比较常见的供电设备。那么&#xff0c;POE供电交换机应用方案及功能特性有哪些呢&#xff1f;接下来我们就一起来看看吧&#xff01;…

Selenium WebDriver的TestNG注释完整指南

TestNG是CdricBeust创建的测试框架 &#xff0c;有助于满足我们的许多测试需求。 它被广泛用于硒中。 想知道NG代表什么&#xff1f; 好吧&#xff0c;它指的是“下一代” 。 TestNG与Junit相似&#xff0c;但在控制程序的执行流程方面更强大。 作为框架的本质&#xff0c;我们…

NB-IoT无线通信模块与Lora无线通信协议技术分析与前景展望

物联网的快速发展对无线通信技术提出了更高的要求&#xff0c;专为低带宽、低功耗、远距离、大量连接的物联网应用而设计的LPWAN(low-power Wide-Area Network&#xff0c;低功耗广域网)也快速兴起。物联网应用需要考虑许多因素&#xff0c;例如节点成本&#xff0c;网络成本&a…

[渝粤教育] 南昌大学 高等数学(二) 参考 资料

教育 -高等数学&#xff08;二&#xff09;-章节资料考试资料-南昌大学【】 &#xff08;测验&#xff09;微分方程的基本概念&#xff1b;可分离变量的微分方程&#xff1b;齐次方程&#xff1b;一阶线性微分方程 1、【单选题】 A、 B、 C、 D、 参考资料【 】 2、【单选题】1…

飞畅科技-PoE交换机的常见问题解答

PoE供电技术的发展势头越来越好&#xff0c;凭借其简化的用电设备的安装、部署、节能和安全性等优势&#xff0c;PoE的应用也越来越广&#xff0c;很多朋友或许对poe交换机不是很了解&#xff0c;今天就由飞畅科技的小编来为大家详细介绍一下PoE交换机的常见问题&#xff0c;感…

E104-BT01超低功耗蓝牙模块BLE4.0协议的片载系统解决方案

1、E104-BT01简介 E104-BT01 是亿佰特设计生产的一款小体积的蓝牙模块&#xff0c;贴片型&#xff08;引脚间距 1.27mm&#xff09;&#xff0c;自带高性能 PCB 板载天线。支持 BluetoothV4.0 标准&#xff0c;简单配置后可与符合BLE4.0协议的主机建立蓝牙连接&#xff0c;实现…

阻碍NB-IoT技术在智能水表发展的4个原因分析

与以往的机械水表不同&#xff0c;根据设备所搭载的模块&#xff0c;智能水表分为IC卡智能表、光电直读智能表以及无线远传智能表。随着物联网技术和工业的发展&#xff0c;无线远程传输智能水表开始被水务公司广泛使用。 以往的机械水表、指针式表盘、复杂的读取值在复杂的设置…

POE供电交换机技术分析及工作过程详解

PoE供电是指在以太网中透过双绞线来将电力传输到设备的技术&#xff0c;它无需改动现有的以太网布线基础架构&#xff0c;在为一些基于IP的终端传输数据信号的同时&#xff0c;还能为此类设备提供直流供电。透过这项技术&#xff0c;可以供电给网路电话、无线、网路摄影机、集线…

LoRa和NB-IoT会长期共存吗?

物联网有很多无线通信技术&#xff0c;主要是Zigbee&#xff0c;WiFi&#xff0c;蓝牙和Z-wave等短距离通信技术&#xff0c;另一种是LPWAN。LPWAN的两种类型之一在未授权的频谱上工作。另一种是2G/3G/4G蜂窝通信技术&#xff0c;该技术在获得行政许可的频谱下工作&#xff0c;…

PoE供电交换机的五大优势详解

众所周知&#xff0c;电气设备只有通电后才能工作&#xff0c;而一些基于IP网络的各种设备也同样需要供电才能使用&#xff0c;比如说路由器、摄像头等&#xff0c;当然啦&#xff0c;自从有了PoE供电技术后&#xff0c;IP网络设备就又多了一种供电方式。POE在为一些基于IP的终…

Java是发展的垫脚石。 学习吧!

Java是世界上最常用的编程语言之一 。 尽管也有许多其他的编程语言&#xff0c;但是没有什么能比Java强。 Java是用于开发移动应用程序&#xff0c;游戏&#xff0c;Web应用程序&#xff0c;桌面应用程序和许多其他令人兴奋的事物的出色语言之一。 而且&#xff0c;事实证明&a…

蓝牙、WiFi、ZigBee三大无线通信技术协议模块哪一个是最好的?

曾经&#xff0c;在2015年极客公园创新大会上&#xff0c;小米首次在非官方平台发布了新款产品小米智能家庭套装。自此&#xff0c;Zigbee便常出现在大众视野中。 如今&#xff0c;小米在IoT物联网应用开发者平台上明确说明&#xff0c;不再推广Zigbee的接入方案。 有人猜测&…

[渝粤教育] 山东大学 大学物理 参考 资料

教育 -大学物理-电磁学和光学-章节资料考试资料-山东大学【】 1.1 电荷和库仑定律 随堂测试 1、【多选题】下面的说法正确的是&#xff08; &#xff09; A、电荷是相对论不变量 B、电荷是量子化的 C、库仑力满足线性叠加原理&#xff0c;第三者的存在会改变两者之间的相互作用…

大功率超远距离lora无线数传电台,多级中继功能

一、在无线通信领域&#xff0c;LoRa是目前市场最被看好的技术之一。随着新一代LoRa调制技术的升级&#xff0c;市场对LoRa技术的认知、认可逐步提高&#xff0c;基于LoRa调制技术开发的产品得到更广泛的应用。受益于其超低的接收灵敏度和独特的调制方式&#xff0c;带来了超远…

POE交换机和普通交换机的区别介绍

POE交换机与普通交换机区别的话&#xff0c;POE交换机就是除了能提供普通交换机所具有的传输功能&#xff0c;还能给网线的另一端设备提供供电功能。普通的交换机主要是交换数据的功能&#xff0c;并没有具备供电的功能。接下来我们就一起来详细看看POE交换机和普通交换机的区别…

Lora无线传输技术与Lorawan无线模块的区别

有不少人分不清LoRaWAN无线模块与LoRa网关无线传输技术到底有什么区别&#xff0c;他们在物联网领域的应用到底是什么样的。 LoRaWAN指的是MAC层的组网协议&#xff0c;而LoRa是一个物理层的协议。虽然现有的LoRaWAN组网基本上都使用LoRa作为物理层&#xff0c;但是LoRaWAN的协…

飞畅科技 POE供电交换机常见问题详解

POE交换机通过网线供电的方式为标准的POE终端设备供电&#xff0c;可以免去额外的电源布线&#xff0c;在为一些基于IP的终端&#xff08;如IP电话机、无线局域网接入点AP、网络摄像机等&#xff09;传输数据信号的同时&#xff0c;还能为此类设备提供直流供电的技术。POE技术能…