7
votes

Afficher la boîte de dialogue d'authentification proxy en C #

Pour accéder à Internet, je suis derrière un proxy nécessitant une authentification. Je sais que c'est assez simple de transmettre les informations d'identification du réseau à la proxy comme ceci: xxx

cela fonctionne!

J'ai également essayé d'utiliser < Code> CredentialCache.DefaultNetworkCredentials Mais cela ne fonctionne pas. Je veux éviter de stocker le nom d'utilisateur et le mot de passe n'importe où (code, base de données, fichier de configuration).

Je pensais que le moyen le plus simple serait d'utiliser la même boîte de dialogue affichée lorsque j'accomplirais Internet avec Internet Explorer. Quelqu'un sait-il comment élever cette boîte de dialogue?

http://services.arcgisonline.com/arcgisexplorer500/help /proxy_connect_to_on_browser_request.png

Modifier

L'objectif de cette tâche était de télécharger un fichier via FTP. Enfin, j'ai découvert qu'il n'était pas nécessaire de définir une proxy pour les demandes FTP car .NET Framework n'autorise pas l'opération FTP via des proxies HTTP. Mais vous devez définir la propriété proxy explicitement à NULLL. xxx

c'est ça!


2 commentaires

Je n'ai pas assez de connaissances sur le sujet pour répondre à votre question, créerait simplement un formulaire de connexion dans lequel vous devez entrer votre nom d'utilisateur et votre mot de passe avant de vous connecter.


Bonjour Nick, bien sûr, ce serait facile à faire, mais pour moi, il semble que cela semble réinventer la roue. Même dans le MSDN Cette boîte de dialogue est mentionnée.


3 Réponses :


0
votes

Peut-être que cela pourrait vous aider. Pas sûr que ce soit exactement ce que vous recherchez.

http: //sturla.simnet. est / POST / 2008/09/22 / Activer-proxy-in-IE.aspx


1 commentaires

Merci, mais ce n'est pas la chose que je cherche. Enfin j'ai trouvé quelque part ailleurs la boîte de dialogue que je souhaite afficher.



3
votes

Tout d'abord, id indiquez que ce n'est pas une boîte de dialogue IE. Il devrait s'agir d'une boîte de dialogue système de construction.
En outre, si vous l'invoquez, vous aurez toujours besoin d'accéder aux valeurs entrées et d'utiliser celles de votre code. Cette boîte de dialogue est juste une fenêtre d'entrée, elle ne donnera pas accès à votre application au proxy / Internet! Aussi toutes les manipulations d'erreur (mauvaises, informations d'identification, etc.) doivent être faites par vous-même.
Je pense que cela pourrait être plus facile, de vérifier si un proxy est requis (à l'aide du registre Windows, du WMI, etc.) et d'afficher un formulaire personnalisé où vous pouvez accéder facilement et réutiliser les valeurs.


1 commentaires

Je pensais qu'il serait plus facile de faire, comme appeler une méthode-cadre qui vérifie la connexion réseau elle-même et apparaît la boîte de dialogue elle-même. Après tout, vous avez totalement raison! Je l'ai fait moi-même et aussi loin que je peux voir chaque programme est livré avec sa propre boîte de dialogue d'authentification proxy (Firefox, Kaspersky, etc.)



5
votes

Dans l'article MSDN " authentification Manipulation", l'auteur écrit:

proxy d'authentification

Lorsqu'un client tente d'utiliser un proxy requiert une authentification, le proxy renvoie un message de code 407 d'état au client. Dans ce message, le proxy doit inclure un ou plusieurs têtes de réponse Proxy-Authenticate. Ces en-têtes sont les méthodes d'authentification disponibles auprès du proxy. WinINet choisit la première méthode qu'il reconnaît.

InternetErrorDlg peut être utilisé pour obtenir le nom d'utilisateur et des données de mot de passe de l'utilisateur , ou interface utilisateur personnalisée peut être conçu.

Après avoir cherché un peu plus longtemps, je trouve l'article Base de connaissances Microsoft " ce billet de blog MSDN pour un P / Invoke exemple du InternetErrorDlg une fonction).

"Manipulation d'authentification" article indique en outre:

Une interface personnalisée peut utiliser le InternetSetOption pour régler le INTERNET_OPTION_PROXY_PASSWORD et INTERNET_OPTION_PROXY_USERNAME valeurs et la demande de renvoyer le proxy.

Je suppose que les éléments suivants "workflow" pourrait réussir:

  1. Définissez le proxy à utiliser le proxy par défaut avec quelque chose comme cette réponse aux états de ce qu'il a utilisé avec succès < code> WebRequest quand il vient d'ouvrir Internet Explorer et est entré dans ses lettres de créance proxy il.

    donc, mon hypothèse est que les informations de proxy sont stockées quelque part dans la « session utilisateur » Windows tant que le l'utilisateur est connecté et est disponible pour toutes les applications après l'authentification.

    Depuis que je suis confronté à la même question que l'affiche originale, je vais essayer maintenant de voir comment mes suggestions fonctionnent réellement.


0 commentaires