¿WCF Support SNI (indicación del nombre del servidor)
-
13-12-2019 - |
Pregunta
Me gustaría consumir un servicio WCF de terceros utilizando la autenticación básica, pero también necesito usar SNI.He pirateado el siguiente ejemplo (Minus Minus ToinPoint Stuff) para mostrar lo que he configurado y el error que recibo.
Cualquier ayuda apreciada mucho como sé poco sobre WCF y nada sobre SNI.
config
<endpoint
address="https://their.server.com/theirservice.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_ISyncFramework2"
contract="ISyncFramework" name="BasicHttpBinding_ISyncFramework2">
</endpoint>
<basicHttpBinding>
<binding name="BasicHttpBinding_ISyncFramework2" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="Transport">
<transport clientCredentialType="Basic" proxyCredentialType="None"
realm="" />
</security>
</binding>
</basicHttpBinding>
Código:
var service = new SyncFrameworkClient();
service.ClientCredentials.UserName.UserName = "username";
service.ClientCredentials.UserName.Password = "thepassword";
service.method() // fails!
La llamada a Método falla con:
El servicio solicitado, 'https://their.server.com/theirservice.svc' no se pudo activar.Consulte los registros de seguimiento de diagnóstico del servidor para obtener más información.
La traza del servidor
Server stack trace:
at System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory factory, WebException responseException, ChannelBinding channelBinding)
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Solución
Ese error suele ser un problema del lado de servicio, no un problema del lado del cliente.SNI es una tecnología de servidor para mejorar la exportación SSL y en la pila de Microsoft es solo admitido en la versión IIS 8 inédita.A menos que el tercero enrollado su propia pila SNI / SSL, parece poco probable que su servicio WCF lo requiera.
En la excepción real que está recibiendo, parece que algo en la línea de este post de blog podría ser la causa del problema.Sus fragmentos de configuración y código se ven a la derecha para basichttpbinding utilizando la autenticación HTTP SSL y básica.