WWSAPI-эквивалент C#/.NET <serviceCertificate> в App.config

Мы создаем клиент C++/WWSAPI для подключения к стороннему серверу C#/.NET. У нас есть пример клиента C#/.NET, который работает с сервером. Это есть в его App.config (client.exe.config):

<behaviors>
  <endpointBehaviors>
    <behavior name="TheirBehavior">
      <clientCredentials>
        <serviceCertificate>
          <defaultCertificate findValue="crypt.theirdomain.com" storeLocation="LocalMachine" storeName="Root" x509FindType="FindBySubjectName"/>
        </serviceCertificate>
      </clientCredentials>
    </behavior>
  </endpointBehaviors>
</behaviors>
<client>
  <endpoint address="https://zzz.theirdomain.com/TheirService.svc"
    binding="customBinding" bindingConfiguration="TheirServiceBinding" behaviorConfiguration="TheirBehavior"
    contract="ProdWS.ITheirService" name="TheirServiceBinding">
    <identity>
      <dns value="crypt.theirdomain.com"/>
    </identity>
  </endpoint>
</client>

У нас также есть сертификат, который мы загружаем должным образом (в противном случае мы получаем There was an error when trying to find certificate '...'; Cannot find object or property. до звонка.)

Как мы можем включить это в WWSAPI? Есть ли ссылка, которая будет отображать сопоставления между всеми параметрами конфигурации.net и соответствующей конфигурацией WWSAPI?

Следующая конфигурация (устанавливается в WS_SECURITY_BINDING) дает Invalid certificate credential specification in security binding.:

WS_SSL_TRANSPORT_SECURITY_BINDING sslBind{};
sslBind.binding.bindingType = WS_SSL_TRANSPORT_SECURITY_BINDING_TYPE;
sslBind.localCertCredential = &certCred.credential;

Это на правильном пути?

1 ответ

Решение

Мы отказались от этого подхода. Но чтобы продвинуться дальше, мы начали использовать бесплатную версию Visual Studio 2015 и портировали наш код и библиотеки в MSVC.

Чтобы заставить его работать, мы создали проект C# .dll и добавили их файлы.wsdl/.xsd в качестве "Справочника по службам", а затем добавили этот проект в качестве Справочника к нашему C++. Это чревато трудностями, включая необходимость взломать.NET v4.5 в.vcxproj вручную, а также необходимость включить /clr и сделать из-за этого загадочный патч для библиотеки. Но получил это работает.

Заявление нашего поставщика о "совместимости" было глупым. Только C#, Visual Studio 2015, точно так же, как они используют, затем соедините это с вашим собственным.

Кроме того, файл Library.dll.config необходимо переименовать в Executable.exe.config исполняемого файла, иначе.NET его не найдет.

Другие вопросы по тегам