Требуется проверка подлинности прокси (Forefront TMG требует авторизации для выполнения запроса. Доступ к фильтру веб-прокси запрещен.) - PullRequest
3 голосов
/ 24 января 2012

Когда я пытался публиковать сообщения в Twitter, появилась ошибка выше. Как избавиться от этой ошибки?

Трассировка стека следующая:

Exception = {"Удаленный сервер возвратил ошибку: (407) Требуется проверка подлинности прокси-сервера."} ExceptionStatus = ProtocolError

Код:

private string GetOAuthUrl()
{
    IFluentTwitter twitter;

    //Override the callback url if one was entered
    if (CallbackUrl != null && CallbackUrl.Trim().Length > 0)
    {
        twitter = FluentTwitter.CreateRequest().Configuration.UseHttps().Authentication.GetRequestToken(ConsumerKey, ConsumerSecret, CallbackUrl);
    }
    else
    {
        twitter = FluentTwitter.CreateRequest().Configuration.UseHttps().Authentication.GetRequestToken(ConsumerKey, ConsumerSecret);
    }

    var response = twitter.Request();
    UnauthorizedToken UnauthorizedToken = response.AsToken();

    string AuthorizationUrl = FluentTwitter.CreateRequest().Authentication.GetAuthorizationUrl(UnauthorizedToken.Token);
    return AuthorizationUrl;
}

1 Ответ

7 голосов
/ 27 января 2012

Если беглый твиттер использует веб-запросы под обложками, то вам необходимо указать учетные данные для прокси-сервера, используя такой код:

 System.Net.WebRequest.DefaultWebProxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;

Это будет указывать всем веб-запросам использовать учетные данные пользователя, запустившего приложение, для аутентификации на прокси.

Чтобы это работало, вам необходимо настроить приложение для запуска под учетной записью службы, которой предоставлен доступ к прокси-серверу. Затем вы можете привязать эту учетную запись службы, чтобы у нее было как можно меньше разрешений для запуска службы.

Если ваше приложение должно работать под учетной записью, у которой нет прав на использование прокси-сервера, вы можете явно указать учетные данные следующим образом:

System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("username", "password", "domain");
System.Net.WebRequest.DefaultProxy.Credentials = credentials;

Недостатком является то, что вы должны где-то хранить эти учетные данные и что они могут быть захвачены злоумышленником, если им удастся скомпрометировать ваше приложение. В некоторых средах это неприемлемо с точки зрения безопасности.

...