Мы должны использовать веб-службу Java, которая требует шифрования сообщения с помощью служебного ключа, подписи с помощью ключа клиента и добавления ключа клиента в качестве двоичного токена в запросе. Ответ зашифрован с помощью клиентского открытого ключа c и добавлено подтверждение подписи.
Я могу создать клиент wcf с пользовательской привязкой, который использует AsymmetricSecurityBindingElement, и успешно отправить запрос. I сервер отвечает 200. Однако я получаю исключение проверки безопасности со стороны клиента.
Когда я устанавливаю версию безопасности сообщения WSSecurity11WS и RequireSignatureConfirmation = true, я получаю ошибку "The элемент заголовка безопасности 'SignatureConfirmation с идентификатором' S C -ddb13d7b-461f-403 c -b995-ba84db7fca41 'должен быть подписан. ”
Когда я устанавливаю безопасность сообщения версия для WSSecurity11WS и RequireSignitureConfirmation = false, я получаю «Подтверждение подписи в заголовке безопасности не ожидается».
- Когда я устанавливаю версию безопасности сообщения на WSSecurity10WS, которая не поддерживает подтверждение подписи, клиент не может выполнить прочитайте узел подписи. (Проверка безопасности сообщения не удалась. ---> Система. Xml .XmlException: Невозможно прочитать токен из 'SignatureConfirmation')
Ниже приведен фрагмент кода I Я использую и фрагмент заголовка запроса и ответа
Мои вопросы
- Есть ли способ удалить подтверждение подписи и затем использовать
с RequireSignatureConfirmation = false? Я размышлял
Clientmessageinspector, но проверка может произойти до того, как я
перехватит. - Существует ли механизм для указания шифрования и подписи только для запроса и ожидания «шифрования» только для ответа? Похоже, именно это делает служба java, если я правильно понимаю.
var initiator = new X509SecurityTokenParameters(X509KeyIdentifierClauseType.IssuerSerial, SecurityTokenInclusionMode.Never);
initiator.RequireDerivedKeys = false;
var recipient = new X509SecurityTokenParameters(X509KeyIdentifierClauseType.IssuerSerial, SecurityTokenInclusionMode.AlwaysToRecipient);
recipient.RequireDerivedKeys = false;
var sec = new AsymmetricSecurityBindingElement(initiator, recipient)
{
MessageSecurityVersion = MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10,
IncludeTimestamp = false,
AllowSerializedSigningTokenOnReply = true,
MessageProtectionOrder = System.ServiceModel.Security.MessageProtectionOrder.EncryptBeforeSign,
EnableUnsecuredResponse = true,
DefaultAlgorithmSuite = SecurityAlgorithmSuite.Basic128,
RequireSignatureConfirmation = true,
SecurityHeaderLayout = SecurityHeaderLayout.Lax
};
CustomBinding customBinding = new CustomBinding();
customBinding.Elements.Add(sec);
customBinding.Elements.Add(new TextMessageEncodingBindingElement(MessageVersion.Soap11, Encoding.UTF8));
customBinding.Elements.Add(new HttpsTransportBindingElement());
var client= new FFROperationsClient(customBinding,
new EndpointAddress(
new Uri("myJavawebservice.com/webservice"),
new DnsEndpointIdentity("dns entry name")));
client.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode =
System.ServiceModel.Security.X509CertificateValidationMode.PeerOrChainTrust;
client.ClientCredentials.ServiceCertificate.DefaultCertificate = serviceCertificate;
Запрос
<s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<ActivityId CorrelationId="a119881d-9deb-4347-aea4-bce1efa91e45"
xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">00000000-0000-0000-0000-000000000000
</ActivityId>
<o:Security s:mustUnderstand="1"
xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<o:BinarySecurityToken u:Id="uuid-f4534c8f-3265-4b73-ae37-0847137b4721-1" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3">MIIEVzCCAr+gAwIBAgIELLUTUTANBgkqhkiG9w0BAQsFADBcMQswCQYDVQQGEwJVUzELMAkGA1UECBMCTUQxETAPBgNVBAcTCEJldGhlc2RhMQwwCgYDVQQKEwNISFMxDDAKBgNVBAsTA1BTQzERMA8GA1UEAxMIRmFpIENoYW4wHhcNMTkwNjEzMTYzNzEyWhcNMjAwNjEyMTYzNzEyWjBcMQswCQYDVQQGEwJVUzELMAkGA1UECBMCTUQxETAPBgNVBAcTCEJldGhlc2RhMQwwCgYDVQQKEwNISFMxDDAKBgNVBAsTA1BTQzERMA8GA1UEAxMIRmFpIENoYW4wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDXXA+mer4t4465464565456456456456zJl/kNcmjSOkdSdJ38oXbScRdDcCIiX3Hh7Ute3pTaFRjusIeyMVYIeNPKPLkZU7HWzLF44E5omAZ6dYw2rb3CTVfcUZdabrgQBpxDIkY3EX0EIk++h0NawilH1JJms9h/jf37Vftb7SwJq9GpJLG1i6cv4EPJtm2uGmEBa95gAqDNOvOSVF2c9fIrAjxMqkgzoJ0vDxYsaeLGb+VTUQX7wb96q/d87GWeRVPes2jiBTRH13WAcfX4b/7toDm7LpbQabHE29Zovy6p4S9C68mH3V1c6Ozs+dYU+SdOS1gohKNf1NLBCr+mGG7RJ9/lBlrv10W53hXLKtazfpuiKVbvsfNIUyC7vtbQcjLxd3O6Gclkxdy7OKAPK0nEG1nLAfZk6G5sKSl3EbNocxYxvvPsxkB0PllfRo+JbfU2pA/tiphkKtkaF5oUmLgph3ujBYr8FOB7S5vVwIUtJi1h0AmLOLMxhuTvjfwyCGwyIfKLl0xKHeK/My6VdiX2Pfdec=</o:BinarySecurityToken>
<e:EncryptedKey Id="_0"
xmlns:e="http://www.w3.org/2001/04/xmlenc#">
<e:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"
xmlns="http://www.w3.org/2000/09/xmldsig#"/>
</e:EncryptionMethod>
<KeyInfo
xmlns="http://www.w3.org/2000/09/xmldsig#">
<o:SecurityTokenReference>
<o:Reference URI="#uuid-f4534c8f-3265-4b73-ae37-0847137b4721-1"/>
</o:SecurityTokenReference>
</KeyInfo>
<e:CipherData>
<e:CipherValue>R8SxG3EDDGVQs5qANORghwIk9ZmTy13URqXJYCsdfsdfsdfsdfsdfULVyZis68hjTNOIS6XJcYxMwfLVyDAUaN+oMDwuOwZJr93xMqurhJ4BNwXlHLI2Foi8VH/ZW7EnwbOJfRBXG7Vf5QyTqqlFTiVZQbYRLeHTSZIkwZTGI+1PhwQA1m4bOEsOKx+ibKXabI+2xaQSfDwxzu5SgD8lqZ9mrkyQr4rIzcH+y3EX0n9/mVaf9pUmojhnHi04R/EVew5IaVhwNO7fa/YTohMtsZoJe/8WFLYuYtL6Qmm/YOogd+AsqrSsyqCq2yCQoxo80vMca0deHQWCsA1wG8oQxv+kiZgQj9dZ2AY0rlVyk62vfXaL3P7CxmRH0rUrFOUI6hCz1lqvOBCv/KGgs7UwSbNud2trtjRsYJwpM34Z02WYLGYlcRQ1cA8/PzvzhbAdRm3QShrgzsws1Q8Rw/UwoY0kKVCeY3P3j+g5Jel9Dgrc3VZq4lXe1SIijLCPnDSQrNCx6</e:CipherValue>
</e:CipherData>
</e:EncryptedKey>
<Signature
xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#_2">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>9JvsHOvvM3EETI0xqXKxQDZyOf0=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>nULRhs4VS8AMN3wS8oxpZi06BLdqAJSAQmCunymVGcXSA52dc8/8CzvqaQeMxwImA5skrq6SoS621dz1VYeu4oHdxVP34kjoYLNSNDzOGZ+PWiU5WArC/AtghBY7slwcSIn6EWTFbvsPTJ2G6SwGiiRlXaJb8FOVDiyErlhiAwF4/HWB+2LbVhFllLfwkWbH+ltB/zUOz+SmkbP/ek0Rkdmdqw1+la7aVghbVC38DFaavkuAe1s+tDGndwRjbyWDhiEdRKFHgIjPMQS43zE2DqImPzuV5RscYzWgTalWqifsI12elCHRnmDLlWFY9HROeKSmLLDt77poqsie2xVQP4xwyQzJzVAbBYWem7Y3OI3dH6eXYUnHKq/IztA4gMcAkxBx0qG2Z7jf3XvAzOV78pD5tg+Q58JWZw9KDV7Dt7a4EPIJ5Qrrkc5bfKWhNUdyzsD0jV73KKjf3u8ZQ5OI0grodsRpaO9GVRR08zKGps6CnUgoyBAwc7pVVADxjOAr</SignatureValue>
<KeyInfo>
<o:SecurityTokenReference>
<X509Data>
<X509IssuerSerial>
<X509IssuerName>My issuer name</X509IssuerName>
<X509SerialNumber>830561273</X509SerialNumber>
</X509IssuerSerial>
</X509Data>
</o:SecurityTokenReference>
</KeyInfo>
</Signature>
<e:ReferenceList
xmlns:e="http://www.w3.org/2001/04/xmlenc#">
<e:DataReference URI="#_1"/>
</e:ReferenceList>
</o:Security>
</s:Header>
<s:Body u:Id="_2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<e:EncryptedData Id="_1" Type="http://www.w3.org/2001/04/xmlenc#Content"
xmlns:e="http://www.w3.org/2001/04/xmlenc#">
<e:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"></e:EncryptionMethod>
<KeyInfo
xmlns="http://www.w3.org/2000/09/xmldsig#">
<o:SecurityTokenReference
xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<o:Reference URI="#_0"></o:Reference>
</o:SecurityTokenReference>
</KeyInfo>
<e:CipherData>
<e:CipherValue>SnfWRtawG15bdeDwNLokCCVloeZIhP8kQGsfffffslafdg/K1yq+bdGr8YYl8BPfbRaaWxfRx8qNz6hTL8JJk6pUdsI6wJRsOFcIRMJQN2BM/RGIOr5Q+v9HPzMCP9n7s6vz49qvCOuGf9JCro/SxJgwGQ22LcYNPOoFk4afQiHjfRNaodMQBpGiGtox+zYkD80b8yg1HreYB0G4H8dYes34veeNMVY6aaL6fqRzpW66w3pfzErOSxvZyrqU7vHcVyuiMVoA9GJo/qcpUlRW/M5l/TRgLoF8oWuxTjM551i5oMDsuPHd5ufskqgzD5gyBuQslJIyCXoSMKu4442sOy9Ie8NrDTPYq8CW6Obt5ljae11zeLRxADfDbcXGlOHGgRQiaLz/70ykp2FypwAi8Yjn1KjRD/p7mqs/NL+ePpQHvBhsR8p46zF3LRrDGgoGTL4XWICdtETdm87/tuUWLHNbap9Nli7qZeNUrVmShz+h7PLlI0WKM5gLGn6hGAVRXuBN/vYTqDHz/O+qYDja3BlE4L728Sao1wkhUdDqqcLgKQ1TCUGLKUdklTEhFbm7pJdEspdcL1oUbHq+jA==</e:CipherValue>
</e:CipherData>
</e:EncryptedData>
</s:Body>
</s:Envelope>
Ответ
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV: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" SOAP-ENV:mustUnderstand="1">
<xenc:EncryptedKey
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="EK-209832b7-1159-4cd6-9f3a-3a49bfb3a3c5">
<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>myservice certificate issuer name</ds:X509IssuerName>
<ds:X509SerialNumber>7305613443</ds:X509SerialNumber>
</ds:X509IssuerSerial>
</ds:X509Data>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
<xenc:CipherData>
<xenc:CipherValue>K0ZXdE0gbu6uufYDklDXEaeGkdPuhJwBp7hem9tELVKnaPyKTwBwV+8rcHab7BvcJ0bM+n/O3kWR
u+w6BmAl2CTIh5KR5myt1LbkpQ6Ep3Ne/jWjQl4vxzehyzPoPB/G/MP/crsilvKl+lS16s3ZQpia
IPH3fxvUWVKjFy3mNI1b/iuJTZls4vPVBmQs7ji9q14TnNf9NyMWqaz//oUMJjAWzrAxIZ16UQcn
lxgrQ3g/TZefHLpVhTAE9ZEQbKvgLTzaRLeXRk/HJ2anX3454545vi9W7XM8QEhKhA2i2eEYGhWI6w
wlQe4/y07vRTHDClrOvezoVsFZAJ+VbI+cpqUHOgenq+he5q64J29LiKSa4MzUoj9Ty1txPfAjKb
dQuSfXNmfTjTtsLQqbxMvofJTPUzb5fT0ImxPm+Dg/DI/xzuG70o3yu01yKZv9kDvLC6JXcYPkhm
s94PmRpwbzGmbyC21f6yAALO7qb/9+WZvZZQcpGgjUZ5K5kXeUYE1U6Y</xenc:CipherValue>
</xenc:CipherData>
<xenc:ReferenceList>
<xenc:DataReference URI="#ED-7f0a44e1-603e-4b6c-8752-c8c442ce5325"/>
</xenc:ReferenceList>
</xenc:EncryptedKey>
<wsse11:SignatureConfirmation
xmlns:wsse11="http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd" Value="nULRhs4VS8AMN3xxxwS8oxpZxxxxi06BLdqAJSAQmCunymVGcXSA52dc8/8CzvqaQeMxwImA5skrq6SoS62 1dz1VYeu4oHdxVP34kjoYLNSNDzOGZ+PWiU5WArC/AtghBY7slwcSIn6EWTFbvsPTJ2G6SwGiiRl XaJb8FOVDiyErlhiAwF4/HWB+2LbVhFllLfwkWbH+ltB/zUOz+SmkbP/ek0Rkdmdqw1+la7aVghb VC38DFaavkuAe1s+tDGndwRjbyWDhiEdRKFHgIjPMQS43zE2DqImPzuV5RscYzWgTalWqifsI12e lCHRnmDLlWFY9HROeKSmLLDt77poqsie2xVQP4xwyQzJzVAbBYWem7Y3OI3dH6eXYUnHKq/IztA4 gMcAkxBx0qG2Z7jf3XvAzOV78pD5tg+Q58JWZw9KDV7Dt7a4EPIJ5Qrrkc5bfKWhNUdyzsD0jV73 KKjf3u8ZQ5OI0grodsRpaO9GVRR08zKGps6CnUgoyBAwc7pVVADxjOAr" wsu:Id="SC-b876a9c6-454b-438e-a9fe-a71aae84441f"/>
</wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<xenc:EncryptedData
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="ED-7f0a44e1-603e-4b6c-8752-c8c442ce5325" Type="http://www.w3.org/2001/04/xmlenc#Content">
<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
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" wsse11:TokenType="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey">
<wsse:Reference URI="#EK-209832b7-1159-4cd6-9f3a-3a49bfb3a3c5"/>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
<xenc:CipherData>
<xenc:CipherValue>uwj6njA3leUlX+GHY+zj93DrEhZPguNuhyXZ7Xi+gLHxFqUDy31RlDvaR/50M+Q+A6C03yhJSfKD
mR0ocRpHFdPrtDW4kKHokas//Dd9h3gEJr48yq6POL6VS9rsdfsdf/9DHl/l7VI21cYTHecYT6NCg9i/q0
tW9F3X/HdO2zo01re94LCm3Ba1/uIJg6FC3qdWMvPcf9bQ56DjwOknLHgMS0IFVzKykpSUqQ33ZG
KkWUfJpYPiwS8UfNjpwZ3enjL+wo6NbngHM8dFS8z8by7EAYThbZ27J/NlgwdgIRZWEqJGo=</xenc:CipherValue>
</xenc:CipherData>
</xenc:EncryptedData>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>