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 его не найдет.