Я разрабатываю веб-службу для WSDL, определенную извне. Доступ осуществляется с помощью HTTP/S (сертификаты сервера и клиента), и оба запроса и ответа подписаны с соответствующим сертификатом. Я импортировал WSDL в VS2010 с ссылкой на службу и добавил подпись в MessageContracts, настроил файл конфигурации для обеспечения безопасности и https и установил SSL на порт. Я близок к тому, чтобы заставить его работать, но мне нужно включить ручную адресацию, чтобы вставить элемент wsa:To
в ответ, но не могу понять, как это сделать. Любая помощь приветствуется.Ручная адресация с безопасным настраиваемым привязкой к службе WCF
Вот мой текущий раздел конфигурации:
<bindings>
<customBinding>
<binding name="AfleverServiceSoapBinding_V1_1">
<security defaultAlgorithmSuite="TripleDesRsa15"
authenticationMode="MutualCertificateDuplex"
requireDerivedKeys="false"
securityHeaderLayout="Lax"
includeTimestamp="true"
keyEntropyMode="CombinedEntropy"
messageProtectionOrder="EncryptBeforeSign"
messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10"
requireSignatureConfirmation="false"
allowSerializedSigningTokenOnReply="true"
enableUnsecuredResponse="False">
<localClientSettings cacheCookies="true"
detectReplays="true"
replayCacheSize="900000"
maxClockSkew="00:05:00"
maxCookieCachingTime="10:00:00"
replayWindow="00:05:00"
sessionKeyRenewalInterval="10:00:00"
sessionKeyRolloverInterval="00:05:00"
reconnectTransportOnFailure="true"
timestampValidityDuration="00:05:00"
cookieRenewalThresholdPercentage="60"/>
<localServiceSettings detectReplays="true"
issuedCookieLifetime="10:00:00"
maxStatefulNegotiations="128"
replayCacheSize="900000"
maxClockSkew="00:05:00"
negotiationTimeout="00:01:00"
replayWindow="00:05:00"
inactivityTimeout="00:02:00"
sessionKeyRenewalInterval="15:00:00"
sessionKeyRolloverInterval="00:05:00"
reconnectTransportOnFailure="true"
maxPendingSessions="128"
maxCachedCookies="1000"
timestampValidityDuration="00:05:00"/>
<secureConversationBootstrap/>
</security>
<mtomMessageEncoding maxReadPoolSize="64"
maxWritePoolSize="16"
messageVersion="Soap11WSAddressing10"
maxBufferSize="65536"
writeEncoding="utf-8">
<readerQuotas maxDepth="32"
maxStringContentLength="8192"
maxArrayLength="16384"
maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
</mtomMessageEncoding>
<httpsTransport manualAddressing="false"
maxBufferPoolSize="524288"
maxReceivedMessageSize="65536"
allowCookies="false"
authenticationScheme="Anonymous"
bypassProxyOnLocal="false"
decompressionEnabled="true"
hostNameComparisonMode="StrongWildcard"
keepAliveEnabled="true"
maxBufferSize="65536"
proxyAuthenticationScheme="Anonymous"
realm=""
transferMode="Buffered"
unsafeConnectionNtlmAuthentication="false"
useDefaultWebProxy="true"
requireClientCertificate="true" />
</binding>
</customBinding>
</bindings>
Большая часть этого была автоматически генерируется.
Я знаю, что мне нужно установить атрибут manualAddressing
на httpsTransport
на true, но затем я получаю исключение, потому что эта настройка находится в безопасности на уровне сообщений. Кто-нибудь знает, как переключиться на безопасность на транспортном уровне, оставив все остальное же? Так как это customBinding
, атрибут mode
на элементе security
недоступен.
thnx много, поход.
Кстати, я знаю, как установить в коде wsa:To
, но получить потерянное на ответ кодирования, если я не могу перейти к ручной адресации ..
Вы получили его? –