Вызов Java WS из .NET - способ Java использует Apache Rampart, эквивалент .NET - PullRequest
3 голосов
/ 15 декабря 2010

Поставщик, с которым мы интегрируемся, предоставляет некоторые функции веб-сервисов ... Они разработали его на Java, а также дали нам пример клиентского проекта (на Java), который показывает потребление этих веб-сервисов.На самом деле мы хотим реализовать потребление / интерфейс веб-сервисов с .NET, но мы не можем понять, как должна работать защита.

В их примере с Java-клиентом они, похоже, используютчто называется "Apache Rampart".У них есть код, который выглядит следующим образом:

public static void initSecurityPolicy(ServiceClient client) throws Exception 
{
    Options options = client.getOptions();
    options.setProperty(RampartMessageData.KEY_RAMPART_POLICY, 
        loadPolicy("policy.xml"));

    options.setUserName(USERID);
    options.setPassword(PASSWD);
    options.setTimeOutInMilliSeconds(READTIMEOUT);
    client.engageModule("rampart"); 
}

Может ли кто-нибудь помочь мне в том, что я должен искать в мире .NET, чтобы сделать эквивалент этого?В настоящее время в моем .NET-проекте ... я могу нормально использовать их WSDL, и он прекрасно генерирует прокси-объекты, но если я пытаюсь запустить / вызвать любую функцию, это говорит мне об отсутствии заголовка SOAP, и я считаю, что этосвязанные с.

Они также предоставляют мне файл policy.xml.Я начинающий программист .NET и обычно полагаюсь на прокси-серверы, которые генерирует VStudio для обработки любого связанного с WS программирования, поэтому я не уверен, что делать с этим файлом policy.xml, равно как и то, что они делаютв приведенном выше коде в мире .NET.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2017

Вам нужно установить мыльный заголовок ... примерно так:

<soap:Header>
   <wsse:Security soap:mustUnderstand="1" 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">
      <wsse:UsernameToken wsu:Id="UsernameToken-E2E367EC446B10BDA2150463848593046">
         <wsse:Username>User</wsse:Username>
         <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">Pass</wsse:Password>
         <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">/rHCse9+oW6b71t1+J3GPA==</wsse:Nonce>
         <wsu:Created>2017-09-05T09:08:05.930Z</wsu:Created>
      </wsse:UsernameToken>
   </wsse:Security>
</soap:Header>

Для этого вам нужно найти, как установить UsernameToken в .NET для добавления учетных данных безопасности в SOAPсообщение

0 голосов
/ 15 декабря 2010

Если вы действительно застряли, вы можете использовать IKVM для взаимодействия с их Java-кодом.В основном это JVM, размещенная в .NET.

...