0

my company's internet works on proxy server with Authentication(i.e. Browser prompts with window for username/password everytime i tried to access any web page).

Now i have some windows application which tries to access internet(like WebPI/Visual Studio 2008 for rss feeds), but as they are unable to popup the the authentication window, they are unable to connect with internet with error:

(407) Proxy Authentication Required

. Here the exception is VS2008, first time it always fails to load rss feeds on startup page, but when i click on the link, it shows authentication window and everything works fine after that.

my question is: How can i configure normal windows application(through app.config/app.manifest file) accessing web to able to show the authentication window or provide default credentials.

For explore this furthor, i have created one console application on VS2008 which tries to serach something on google and display the result on console. Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;

namespace WebAccess.Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter Serach Criteria:");
            string criteria = Console.ReadLine();
            string baseAddress = "http://www.google.com/search?q=";
            string output = "";

            try
            {

                // Create the web request   
                HttpWebRequest request = WebRequest.Create(baseAddress + criteria) as HttpWebRequest;

                // Get response   
                using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    // Get the response stream   
                    StreamReader reader = new StreamReader(response.GetResponseStream());

                    // Console application output   
                    output = reader.ReadToEnd();
                }

                Console.WriteLine("\nResponse : \n\n{0}", output);
            }
            catch (Exception ex)
            {
                Console.WriteLine("\nError : \n\n{0}", ex.ToString());
            }
        }
    }
}

When running this, It gives error

Enter Serach Criteria:
Lalit

Error :

System.Net.WebException: The remote server returned an error: (407) Proxy Authen
tication Required.
   at System.Net.HttpWebRequest.GetResponse()
   at WebAccess.Test.Program.Main(String[] args) in D:\LK\Docs\VS.NET\WebAccess.
Test\WebAccess.Test\Program.cs:line 26
Press any key to continue . . .

3 Answers 3

7

Resolve myself:

Created an assembly to provide default proxy credentials

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;

namespace ProxyCredProvider
{
    public class DefProxy : IWebProxy
    {
        public ICredentials Credentials
        {
            get { return new NetworkCredential("xxxx", "xxxx"); }
            set { }
        }

        public Uri GetProxy(Uri destination)
        {
            return new Uri("http://xx.xx.xx.xx:8080/");
        }

        public bool IsBypassed(Uri host)
        {
            return false;
        } 

    }
}

Installed it to GAC. and use App.Config to attach the above module to any exe trying to access web.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.net>
    <defaultProxy enabled="true" useDefaultCredentials="false">
      <module type="ProxyCredProvider.DefProxy, ProxyCredProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5e3bf8f3a8a14cca" />
    </defaultProxy>
  </system.net>
</configuration>
Sign up to request clarification or add additional context in comments.

Comments

0

Edit:

There are a couple of utilities which will tunnel any app through a proxy listed at http://kakku.wordpress.com/2007/11/18/proxify-any-application-tsocks-and-proxychains-force-any-program-to-communicate-through-a-socks-https-proxy-or-use-cascading-proxies/ - look for the 'Windows Alternatives' links..

1 Comment

I don't have source code for all windows application, i need a way to configure the proxy credentials through config files or just a prompt to enter credentials.
0

Use a WebProxy object, then use the app.config to get proxyurl and username. For the password you might enter it in the console or throw up a password box.

WebProxy proxy = new WebProxy(proxyurl);
proxy.Credentials = new NetworkCredential(username, password, domain);
request.Proxy = proxy;

EDIT

Sorry I misunderstood how about NTLMAPS

3 Comments

I don't have source code for all windows application, i just need a way to configure the proxy credentials through config files or just show prompt to enter credentials.
What you are reffering from NTLMAPS.
I have viewd the link, but can't understand what you are tring to say?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.