带加密/签名Usernametoken的SoapUI ws-security
我正在尝试测试一个使用ws-security进行身份验证和消息加密的SOAP Web服务 现在SoapUI似乎确实提供了这方面的功能,但我正在努力使用经过身份验证的加密执行简单的用户名令牌身份验证 到目前为止,我可以通过在传出的WS-Security配置中添加带加密/签名Usernametoken的SoapUI ws-security,soap,soapui,ws-security,Soap,Soapui,Ws Security,我正在尝试测试一个使用ws-security进行身份验证和消息加密的SOAP Web服务 现在SoapUI似乎确实提供了这方面的功能,但我正在努力使用经过身份验证的加密执行简单的用户名令牌身份验证 到目前为止,我可以通过在传出的WS-Security配置中添加UsernameWSS条目来生成Usertoken。 我还能够用一个额外的加密WSS条目对主体进行加密 但是UsernameToken仍然是明文(需要加密) 签名生成应使用hmac和用于加密的对称密钥完成,但尽管可以选择算法,但创建失败,原
Username
WSS条目来生成Usertoken。
我还能够用一个额外的加密WSS条目对主体进行加密
但是UsernameToken仍然是明文(需要加密)
签名生成应使用hmac和用于加密的对称密钥完成,但尽管可以选择算法,但创建失败,原因如下:
Mon Aug 08 17:00:36 CEST 2016:ERROR:org.apache.ws.security.WSSecurityException: Signature creation failed
org.apache.ws.security.WSSecurityException: Signature creation failed
at org.apache.ws.security.message.WSSecSignature.computeSignature(WSSecSignature.java:561)
at org.apache.ws.security.message.WSSecSignature.computeSignature(WSSecSignature.java:481)
at org.apache.ws.security.message.WSSecSignature.build(WSSecSignature.java:386)
at com.eviware.soapui.impl.wsdl.support.wss.entries.SignatureEntry.process(SignatureEntry.java:238)
at com.eviware.soapui.impl.wsdl.support.wss.OutgoingWss.processOutgoing(OutgoingWss.java:175)
at com.eviware.soapui.impl.wsdl.actions.request.ApplyOutgoingWSSToRequestAction.actionPerformed(ApplyOutgoingWSSToRequestAction.java:55)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: javax.xml.crypto.dsig.XMLSignatureException: java.security.InvalidKeyException: key must be SecretKey
at org.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(Unknown Source)
at org.apache.ws.security.message.WSSecSignature.computeSignature(WSSecSignature.java:556)
... 43 more
Caused by: java.security.InvalidKeyException: key must be SecretKey
at org.jcp.xml.dsig.internal.dom.DOMHMACSignatureMethod.sign(Unknown Source)
... 45 more
我的WS-Security策略:
<wsp:Policy xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" wsu:Id="UT_policy">
<wsp:ExactlyOne>
<wsp:All>
<wsam:Addressing wsp:Optional="false">
<wsp:Policy>
<wsam:AnonymousResponses/>
</wsp:Policy>
</wsam:Addressing>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never">
<wsp:Policy>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:ProtectionToken>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256Rsa15/>
</wsp:Policy>
</sp:AlgorithmSuite>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
</wsp:Policy>
</sp:Wss11>
<sp:SignedEncryptedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken10/>
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedEncryptedSupportingTokens>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
SoapUI生成的请求:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<xenc:EncryptedKey Id="EK-9AA143BE89F4DC04011470669480690103" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"/>
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<wsse:SecurityTokenReference>
<ds:X509Data>
<ds:X509IssuerSerial>
<ds:X509IssuerName>CN=Docker Test Root</ds:X509IssuerName>
<ds:X509SerialNumber>5</ds:X509SerialNumber>
</ds:X509IssuerSerial>
</ds:X509Data>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
<xenc:CipherData>
<xenc:CipherValue>PBgpK0et06jC3MnZAM+GPqQfBRUCVN0khR3uvyCou7thbmMl9xEPT/hhMttuyn80srkHKVAHRxPtsi7qJnLjKIHCmeCr5bWZJy7jUj8OfdoCPhgfDU8M0T7F0z8DQYgIsSweQk1SgXwY4FzoGX7gOvQZQ6NRiDMb0GFMk2jFzL3wUT2Vw9JMglOQX4cWDzhX3Frf+YBCPe415d4UzXgdA79VR4STUKCLhK29rDTCeMZYFl+Iq87sYrdChHVMhDUfx/mZF/9XCrrOzB/rAWoVo/nuZQ5c0FLvsbGL/F1hIdBPHaBbZ4TyDeYK48b3FYbuKRchVGLHGkbp9C0UON1sQQ==</xenc:CipherValue>
</xenc:CipherData>
<xenc:ReferenceList>
<xenc:DataReference URI="#ED-9AA143BE89F4DC04011470669480690104"/>
</xenc:ReferenceList>
</xenc:EncryptedKey>
<wsse:UsernameToken wsu:Id="UsernameToken-9AA143BE89F4DC04011470669480684102">
<wsse:Username>sts-testuser</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">secret</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">k2BiRYIVNdfi9JPsD2xw/g==</wsse:Nonce>
<wsu:Created>2016-08-08T15:18:00.684Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<xenc:EncryptedData Id="ED-9AA143BE89F4DC04011470669480690104" Type="http://www.w3.org/2001/04/xmlenc#Content" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<wsse:SecurityTokenReference wsse11:TokenType="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsse11="http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd">
<wsse:Reference URI="#EK-9AA143BE89F4DC04011470669480690103"/>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
<xenc:CipherData>
<xenc:CipherValue>zDgBaeKsy95JK22DtUhFa+1ggZ6fSaknmEois0wxNkmVb+f3bbkgInZ28WEV5EeDyTvv0olW4WO9GMnnCetjsSvK8GBaRar7IRPH01dPriowF1fm3huIck1tcNRF1oUZvqX9PHi7Bry7MJjBvvNULYHuo8aQyWudJi7nMVJHLOxcj1u67K9IXwxeBrMf/EE2quAf12bKNuQQhhPMQyzMGmWZ649i7Q6KGvZuUKD+osTB2vCD4ZVpblWOvKs3rtDg1hdERTEqWWYwLyUgeNbw52DxfUWCEGid4ojSmzvv1I0ZK/xZHEuuo73j3+db0nRIWv4HOMc+X1uwUB547pVN27ztmrtcrYrq/ckl7T5L4ukEOndgiTLZs5zqEp15aHBFWvz5WTvMAqTvDjfddsaYnOadMVOjsvZxNkhdzkQ/AMFbQchfPshioYQrnScO9DsqtRv5vbJyODpdhVYmqE08FgEggnsqiVvL644XYSW1NA0Ag/8yEQfIDmW9X2I0AY8DeIiu03qYuJci0NH7g4YE/w==</xenc:CipherValue>
</xenc:CipherData>
</xenc:EncryptedData>
</soapenv:Body>
</soapenv:Envelope>
CN=Docker测试根
5.
2.这是一个关于某一方面的研究,一个关于某一方面的研究,一个关于某一方面的研究,一个关于某一方面的研究,一个关于某一方面的研究,一个关于某一方面的研究,一个关于某一方面的研究,一个关于某一方面的研究,一个关于某一方面的研究,一个关于某一方面的研究,一个关于某一方面的研究,该领域的研究是一个关于某一方面的研究,一个关于一方面的研究,一个关于一个关于某一方面的研究,一个关于一方面的一个关于一个关于某一方面的研究的研究的研究,该领域的研究,一个关于一个关于某一方面的研究的研究的研究,一个关于某一个关于某一个关于某一方面的研究的研究的研究的关于某一个关于某一个关于某一方面的关于某一方面的研究的研究的关于某一个关于某一方面的关于某一方面的研究的研究的HGKBP9C0UON1SQQ==
sts测试用户
秘密
K2BIRYIVNDF9JPSD2xW/g==
2016-08-08T15:18:00.684Z
2.目前,中国政府已经发布了一份2月2月2日的数据。2月2日的数据,2月2日的数据,2月2日的数据,2月2日的数据,2月2日的数据,2月2日的数据,2月2日的数据,2月2日的数据,2月2日的数据,2月2日的数据,2月2日的数据,2月2日的数据,2月1日的数据,2月1日的数据,1日的数据,2月1日的数据,2月1日的数据,2月1日的数据,一份数据,一份数据,一份数据,一份数据,一份数据,一份数据,一份数据,一份数据,一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份关于一份7PVN27ZTMRTCRYrq/CKL7T5L4UKEONDGITLZS5ZQEP15AHBFWVZ5WTVMAQTVDJFDDSAYNOADMVOJSVZNKHDZKQ/AMFBQCHFPSHIOYQRNSCO9DSQTRv5VBJYODHDHYMQE08FGEGGNSSQIVL644xYSW1NA0AG/8YEQFIDMW9X2I0AYU03QYUJCI0NH7G4YE/w==
您找到答案了吗?没有,抱歉-我最终没有使用SoapUI进行测试:/SoapUI 5.5仍然存在问题-在我的案例中,我选择hmac-sha1作为签名算法-签名过程将失败,并显示大致相同的消息。rsa-sha1可以正常工作。我试图使用自定义键值,但显然这完全是另一回事。