2009-05-18 6 views
0

J'ai un problème pour passer à travers un proxy d'authentification en utilisant Authentification de base avec WSHttpBinding.Est-il possible de passer à travers un proxy d'authentification de base en utilisant WsHttpBinding?

Le code similaire pour BasicHttpBinding fonctionne. Je suppose que mon problème quelque chose à voir avec le fait que je ne peux pas régler le mode de sécurité du WSHttpBinding à TransportCredentialOnly ..

Je ne peux pas utiliser BasicHttpBinding à cause d'une dépendance à l'égard MMD.

 binding.ProxyAddress = new Uri("http://192.168.20.231:8080"); 
     binding.BypassProxyOnLocal = true; 
     binding.UseDefaultWebProxy = false; 

     WSHttpSecurity security = binding.Security; 

     //security.Mode = SecurityMode.TransportCredentialOnly; //This option only exist for BasichHttpBinding 
     security.Mode = SecurityMode.Transport; // Not sure what to set here 

     //security.Mode = SecurityMode.TransportWithMessageCredential; 
     security.Transport.ProxyCredentialType = HttpProxyCredentialType.Basic; 
     security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; 


     var client = new SyncWcfMTOMServiceClient(binding, new EndpointAddress("http://server/service.svc")); 

     client.ClientCredentials.UserName.UserName = "user"; 
     client.ClientCredentials.UserName.Password = "pass"; 
     bool running = client.IsServiceRunning(); 

Répondre

0

Après quelques recherches, j'ai trouvé une réponse à cette question. (Je ne suis pas entièrement satisfait de la solution et espère qu'il ya une autre façon de résoudre ce)

wsHttpBinding ne permet pas l'envoi d'un nom d'utilisateur et mot de passe en texte clair, pas même à un proxy d'authentification locale! basicHttpBinding

Après quelques tests, j'ai trouvé que je pouvais le faire fonctionner en installant un certificat de serveur sur le serveur d'hébergement (à ne pas confondre avec le serveur proxy).

En installant le certificat SSL sur le serveur, le code ci-dessus fonctionne sans modification. SSL sur le serveur crée un certain nombre de problèmes pour moi.

Toute autre solution pour ce problème?

0

ist tous une chose que je voudrais souligner ici Security.Mode = Le transport est utilisé dans le cas si votre service ciblé est hébergé sur https (ssl) qui n'est pas le cas avec votre URL spécifiée

security.Mode = SecurityMode.Transport; // Not sure what to set here 
+0

Il n'est pas hébergé sur https c'est un serveur proxy assez standard –

+0

yep! c'est ce que je vous dis ne pas utiliser security.Mode = Transport ... –

+0

@Usman. Qu'est-ce que je mets à? Le problème est qu'aucune des options de mode de sécurité ne fonctionne –

Questions connexes