Авторизуйтесь на HTTPS. - PullRequest
       6

Авторизуйтесь на HTTPS.

2 голосов
/ 30 ноября 2010

Я на самом деле подключаюсь в своем унив к сети через невыполненный портал по этому URL https://secure.arubanetworks.com/cgi-bin/login, время назад я создал программу для подключения к нему, которая прекрасно работала (C ++ & libCurl), отправляя HTTP POST с нужна «строка запроса», такая как имя пользователя и пароль, но я думаю, что это потому, что все еще не было SSL, Cert X.509, который теперь, похоже, работает с GET вместо POST, который использовался ранее.

Вставка в Firefox полного URL со строкой запроса работала мне идеально, как и должно быть, поэтому я просто попытался добиться этого в небольшой программе на C #, но так как я не знаю, что делать с сертификатом (я asume должно быть что-то, что с этим делать ..: P) он выдает мне ProtocolError, и теперь я подумал, что сначала я должен немного понять об этом, поэтому мне интересен код для его достижения, а также способ его работает. :)

PS: Также хотелось бы, если есть способ установить учетную запись или программу (exe) в качестве обратного вызова, в свойствах соединения (моя ОС - Win7), чтобы после подключения к сети он сразу проходил аутентификацию. : D

Заранее спасибо за ваше время и помощь товарищей! ;)

        Uri uri = new Uri(url + "?" + postData);
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
        req.Method = this.method;
        // ToDo: Something doesn't work with the cert auth I guess
        req.Proxy = null;
        req.Credentials = CredentialCache.DefaultCredentials;
        ServicePointManager.ServerCertificateValidationCallback += 
        delegate(object sender, X509Certificate certificate, X509Chain chain, 
        SslPolicyErrors sslPolicyErrors)
        {
            return true;
        };

        try
        {
            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
            Stream responseStream = resp.GetResponseStream();
            StreamReader reader = new StreamReader(responseStream);
            string responseFromServer = reader.ReadToEnd();
        }
        catch (WebException e)
        {
            if (e.Status == WebExceptionStatus.ProtocolError)
            {
                HttpWebResponse response = e.Response as HttpWebResponse;
                if (response != null)
                {
                    Console.WriteLine(e.ToString());
                }
            }
        }

1 Ответ

1 голос
/ 01 декабря 2010

Попробуйте это для https GET . Для справки, это связано, но проще, чем выполнение https POST .

Есть разница, если вам нужен асинхронный подход, но я не думаю, что это то, что вам нужно. Итак, вы по-прежнему используете объект HttpWebRequest, но после перехода к .method есть разница - все, что вам нужно, это вставить свой URI в запрос и получить ответ. Я не думаю, что вам нужно вручную связываться с прокси или учетными данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...