none
Accéder à un web service externe via un serveur proxy RRS feed

  • Question

  • Bonjour,

    Dans mon application web, pour donner accès à mon service web externe (ajout d'une référence web),  je paramètre dynamiquement le passage au serveur proxy comme ceci :

    **************************************************************************************************

                Dim pr As System.Net.WebProxy = Nothing

                swUtil = New MonServiceWeb.MaLibrairie


            if _bproxy then           

                swUtil.PreAuthenticate = True
                Dim cache As System.Net.CredentialCache = New System.Net.CredentialCache()
               cache.Add(New Uri(swUtil.Url), _
                                   "Negotiate", _
                                    New System.Net.NetworkCredential(_username, _password, _domain))
               swUtil.Credentials = cache
               swUtil.ConnectionGroupName = username
                   
                       
                 pr = New System.Net.WebProxy(_proxyhost, CInt(_proxyport))
                 pr.Credentials = New System.Net.NetworkCredential(_username, _password, _domain)
                   
                If Not pr Is Nothing Then
                    swUtil.Proxy = pr
                End If

           end if

               Return swUtil.MaFonction()

    **************************************************************************************************

    Bref,  le problème est que l'url du serveur proxy (_proxyhost) n'est pas son http://son_adresse_ip mais l'url du répertoire du fichier de script de configuration automatique dont je ne connais pas le contenu (pas moyen d'avoir l'ip du serveur proxy non plus).

    Y a t-il un moyen de faire appel à mon service web en utilisant l'adresse url du script de configuration automatique ? Parce que là, le serveur web génère une erreur de reconnaissance du serveur proxy (normal, c'est pas son ip que je lui donne)

    Remarque :

    Sur des postes utilisateurs qui n'ont pas accès à Internet mais qui sont configurés avec ce script pour accéder à l'extérieur, quand je tape l'url complète de mon service web dans le navigateur, la fenêtre de demande d'authentification pour la connexion internet se lance. Mais en développement au sein de mon application quand j'utilise le service web sans passer par le proxy, il ne fait pas appel à la fenêtre d'authentification et du coup plante à la ligne "Return swUtil.MaFonction()" parce que l'application ne peut atteindre le service web.

    Merci de m'aider parce que là je sèche sur la technique.

    mercredi 22 septembre 2010 15:18

Toutes les réponses

  •  

    Bonjour,

     

    Si vous voulez vous connecter au proxy, vous devez forcement avoir l’IP. Peut-être une analyse du script de configuration vous donnera quelques informations utiles. Il n’y a aucune modalité de connaitre l’IP, même après avoir établi la connexion par le proxy ?

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    vendredi 24 septembre 2010 10:54
  • Disons que mon client est ultra stricte en terme de sécurité interne et refuse de communiquer les ips de leurs serveurs proxy. En clair, personne ne peut rentrer chez eux (à moins d'être un hacker averti !) et les postes clients n'ont accès à Internet que par le biais d'un compte proxy.

    Néanmoins, quelle serait la méthode de développement pour faire en sorte d'ouvrir leur boite d'authentification ? Est-ce qu'en utilisant l'objet HttpWebRequest par exemple, je pourrais faire en sorte que le proxy reçoive la requête http et renvoie au poste client la demande d'authentification ? ça les gênerait pas à priori de devoir saisir leur login et mot de passe Internet à chaque fois !!!

     

    Merci beaucoup

    vendredi 24 septembre 2010 12:58
  • Bonjour,

    prenez ce qui suis avec précaution car je n'ai pas d'expérience de votre cas précis, mais plusieurs fois lors de connexion vers des services web depuis une application .Net j'ai remarqué que l'appel au webservice utilisait "automatiquement" le proxy qui était définit au niveau de IE sur le serveur. En fait le paramétrage du proxy indiqué depuis IE s'appliquait à la connexion depuis l'application .Net

    Ainsi dans mon cas, si quelqu'un avait précisé un proxy dans IE au niveau du serveur, la connexion n'était plus possible car les webservices n'était pas accessible via le proxy.

    Ne serait il pas alors possible que si un script est précisé dans dans le paramétrage proxy d'IE, et que vous précisiez simplement des credential, la connexion puisse s'effectuer ?

    Cordialement

    vendredi 24 septembre 2010 14:23
    Modérateur
  • En effet, le paramètrage du proxy sous IE supplante tout paramétrage manuel des options Internet. C'est le paramétrage proxy qui décide en clair.

    Comme tu dis, je vais aussi tester ce code aussi bête que ça :

    **************************************************************************************************

    swUtil = New MonServiceWeb.MaLibrairie

    if  not _bproxy then swUtil.Credentials = New System.Net.NetworkCredential(_username, _password, _domain)

    Return swUtil.MaFonction()

    **************************************************************************************************

    Par contre, ma question précédente tient toujours ;)

    Je vous tiens au courant.

    Merci

     

    vendredi 24 septembre 2010 14:40
  • Votre utilisateur est sans doute déjà authentifier au sein de l'application. Dans un contexte d'authentification windows par exemple on accède simplement à l'identité de l'utilisateur via : HttpContext.Current.User.Identity

    Dans ce cas d'utilisation passer CredentialCache.DefaultCredentials devrait suffire à passer le contexte de sécurité en cours et donc pas besoin de fenêtre particulière pour saisir login/pwd

    Cordialement

    vendredi 24 septembre 2010 15:02
    Modérateur
  • Bonjour,

     

    Merci Nikho pour le suivi de ce thread et pour les informations.

    Pierrick35, avez-vous des nouvelles sur ce sujet ?

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    lundi 27 septembre 2010 09:52
  • Malheureusement, les modifs que j'ai fait ne fonctionnent pas. Le proxy réagit toujours en interdisant l'accès au service web.

    Que cela soit en passant par la configuration du serveur proxy ou par les credentials, la fenêtre de demande de login Internet (Windows Internet ça doit être la même j'imagine, ou est-ce que c'est une demande d'authentification du serveur proxy ?) n'apparait pas. Les utilisateurs ne sont pas authentifiés Windows au sein de l'application web. On entre dans l'appli par un login, mdp applicatif inscrit en base de données.

    Est-ce qu'il faut que je modifie ce paramètre du coup ? Et comment l'intégrer au sein de mon appli ?

    Merci

    jeudi 30 septembre 2010 07:27
  • Bonjour Pierrick35,

    Est-ce que vous avez résolu votre problème ?

    Merci d’avance de tenir la communauté informée sur la suite de vos démarches.

    Cordialement,
    aelassas.free.fr
    vendredi 28 octobre 2011 22:44
    Auteur de réponse