【问题标题】:Proxy Authentication Required (Forefront TMG requires authorization to fulfill the request. Access to the Web Proxy filter is denied.)需要代理身份验证(Forefront TMG 需要授权才能完成请求。对 Web 代理筛选器的访问被拒绝。)
【发布时间】:2012-02-17 12:55:23
【问题描述】:

当我尝试向 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;
}

【问题讨论】:

  • 顺便说一句,使用String.IsNullOrWhiteSpace()
  • 而不是if (CallbackUrl != null && CallbackUrl.Trim().Length > 0)
  • 我的意思是这只是关于您的代码的常见建议。这与问题本身无关。
  • 您在您的环境中使用什么代理?

标签: c# .net twitter exception-handling twitter-oauth


【解决方案1】:

如果 fluent twitter 在后台使用 WebRequests,那么您需要使用如下代码为代理指定凭据:

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

这将告诉所有 Web 请求使用运行应用程序的用户的凭据向代理进行身份验证。

要完成这项工作,您需要将应用程序配置为在已获得代理服务器访问权限的服务帐户下运行。然后,您可以绑定此服务帐户,使其拥有尽可能少的权限来运行服务。

如果您的应用程序需要在无权使用代理服务器的帐户下运行,您可以明确指定凭据,如下所示:

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

这样做的缺点是您必须将这些凭据存储在某个地方,并且如果攻击者设法破坏您的应用程序,他们可能会被捕获。在某些环境中,从安全角度来看这是不可接受的。

【讨论】:

  • 它不起作用,在调试模式下我找到了用户名密码,域为空
  • 您的应用程序很可能在本地帐户下运行。您要么需要更改帐户,要么从代码中明确指定凭据。我已经相应地修改了我的答案。
  • 是的,我的应用程序在本地帐户下运行,我无法更改帐户,我将尝试使用此代码,我将尝试此,你能告诉我应该在 web 配置文件中创建什么吗?应该在那里使用
  • 有关如何在 web.config 中指定凭据的详细信息,请参阅此答案:stackoverflow.com/questions/186800/…。确保它们已加密,并且使用的帐户具有尽可能少的权限(即不要使用您自己的凭据)
  • @sga101 感谢您的回答!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-02
  • 2012-04-07
  • 1970-01-01
相关资源
最近更新 更多