У меня есть веб-сервис SVC на основе SOAP, который вызывает сторонний сервис SOAP. Этот сторонний сервис мыла требует заголовка мыла, который должен включать двоичный токен безопасности и другие вещи безопасности. Я достиг этого, создав расширение мыла и зарегистрировав его в web.config, например
<webServices>
<soapExtensionTypes>
<add type="NAMESPACE.SecureMessageSoapExtension, ASSEMBLY" priority="1" group="High" />
</soapExtensionTypes>
</webServices>
Мой сервис (который на самом деле вызывает стороннюю организацию) также должен принимать мыльный заголовок и всю безопасность от своего клиента.
Я создал клиента и внедрил там такое же расширение мыла. Я вижу, что исходящее сообщение от клиента имеет мыльный заголовок и все необходимые элементы безопасности, такие как токен безопасности, ключи шифрования, канонизация и т. Д.
Теперь проблема в том, что я не могу получить, как проверить запрос на моей стороне обслуживания, потому что вышеупомянутый класс расширения мыла не работает (ProcessMessage не получает удар) в случае входящего запроса на мою службу.
Мой сервис находится в .NET. Это сервис SVC на основе SOAP.
Ниже заголовок мыла, который я получаю от клиента. Мне нужно сначала проверить двоичный токен безопасности (по сравнению с тем, который есть в моей базе данных), а затем дайджест сообщения
<soap:Header>
<wsse:Security mustUnderstand="1">
<wsse:BinarySecurityToken wsu:Id="X509-c8ea63fd-906f-42a2-88e7-095077351376" ValueType="http://www.SOMETHING.com#CustomToken" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">ACHWZlOWSVdW8pi9NZFBoCdfhuxkEhCg7V7BuAx5O_64kUwmqXJ8mcSDJiVroGmf-pm1teKhRYIaNnIfZzk58tWM0mzHhcT8PEeuSP676hW7FjVHrcBybxfhQpFwOHonSNSMYhbq7kEzliXBt9m86EKcyOSY3HT5yPxOH-jMf6kRDQqXsHUQEVcbwP8AFsKtV-sDNdg3LBPkAcHB3irqPvl2sw7R8hicsZXM4sOwE7E</wsse:BinarySecurityToken>
<Signature Id="SIG-7726920b-33e6-4bc8-bc1a-cebf6d3760dd" xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<InclusiveNamespaces PrefixList="soap" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" />
</CanonicalizationMethod>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
<Reference URI="#id-9df3dad9-08cb-4771-aad6-536e8d547a8d">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
<DigestValue>SWTDSonxPz1RDpQ9pd0pOffR/paQDIDRV3CaoND0ZO4=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>JPZrvt8wfDbKQhPSVsxPzxHGjM/a7vpD+sySxW/egK0BHLvxKmDm2zMztE/okInL1DfA0jSjqou5qsXPJek0W5TglzUqN4Kgmgt6Zmg/C78jMvOb5BUmGkm26Af2dfZ7g/kAJ3sRaGXTPEAuliH0KDoA2SvXWm0YghmPE0Tf3Mh3DBszFCwhHUtr8QbBHCu7Jjr46PiqD72wMBAvIS1tgbJgeb2U87Y/UpDxe7xIEjQt09N/w0RsAVaOKERxPvqUIBeIGz0G6CvXBgbgRgTMEdgGXGWDMohsD09ydMiWq9lAludJy8ru3lLP1aF+CPGHFCT7qgU4pqKn6TxrnGjCUQ==</SignatureValue>
<KeyInfo Id="KI-c055e297-0d9c-4104-a56b-caa2a918967c">
<wsse:SecurityTokenReference wsu:Id="STR-a8321c11-302f-4447-b9d5-554ea954546d">
<wsse:Reference URI="#X509-c8ea63fd-906f-42a2-88e7-095077351376" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" />
</wsse:SecurityTokenReference>
</KeyInfo>
</Signature>
</wsse:Security>
Любая помощь высоко ценится.
Есть ли способ получить доступ к входящему сообщению запроса даже до того, как оно попадет в веб-метод.