WCF通过HTTPS绑定消息级别的安全性

时间:2014-05-14 16:14:29

标签: .net wcf wcf-binding wcf-security

我有一个基于HTTP的WCF服务,具有以下绑定:

<basicHttpBinding>
    <binding name="RegistreReferenciaBinding">
        <security mode="Message">
            <message clientCredentialType="Certificate" />
        </security>
    </binding>
</basicHttpBinding>

第三方服务正在连接此服务,现在该第三方需要HTTPS连接。

问题是我需要在消息级别维护安全性,以便与第三方服务兼容。

要恢复这种情况,我需要做的是将服务配置为HTTPS兼容,没有客户端证书,同时保持消息级别的安全性。

使用相同配置但通过HTTPS使用此服务所需的配置是什么?

更新

我尝试使用以下配置:

<basicHttpBinding>
    <binding name="RegistreReferenciaBinding">
        <security mode="Transport" />
    </binding>
</basicHttpBinding>

但是使用此配置,第三方服务无法连接,因为消息级别没有安全性。

根据我在Wireshark捕获的消息中查看的内容,第三方服务正在使用SOAP 1

此配置的错误消息是:

<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode>s:MustUnderstand</faultcode>
<faultstring xml:lang="es-ES">El destinatario de este mensaje no entendió el encabezado 'Security' del espacio de nombres 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd', por lo que el mensaje no se procesó. Este error suele indicar que el remitente del mensaje habilitó un protocolo de comunicación que el destinatario no puede procesar. Asegúrese de que la configuración del enlace del cliente es coherente con el enlace del servicio. </faultstring>
</s:Fault>
</s:Body>
</s:Envelope>

更新2

我也试过以下配置:

<basicHttpBinding>
    <binding name="RegistreReferenciaBinding">
        <security mode="TransportWithMessageCredentials">
            <message clientCredentialType="Certificate" />
        </security>
    </binding>
</basicHttpBinding>

又失败了。

0 个答案:

没有答案