【问题标题】:WinForm Security ContextWinForm 安全上下文
【发布时间】:2011-07-13 17:41:13
【问题描述】:

我编写了一个 WinForms 应用程序,它从电子表格上传地址,并使用外部地理编码服务对其进行地理编码。这一切在我的本地机器上运行良好,但现在是时候将它安装在其他人的计算机上进行测试了。该应用程序现在不再运行,产生以下错误:

 System.Net.WebException: The remote server returned an error: (407) Proxy Authentication Required.

阅读了很多内容并与我们的网络人员进行了简短的交谈,看来我需要为用户帐户建立安全上下文并使用它来纠正错误。

有没有人知道我应该如何处理这个问题?

提前致谢!

C

【问题讨论】:

    标签: c# .net security


    【解决方案1】:

    这取决于您上传数据的方式。如果您使用 http 请求(看起来像您一样),它将看起来像;

      HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("https://test.example.com/");
      req.Method = "POST";
      req.ContentType = "text/xml";
    
      req.Credentials = new NetworkCredential("TESTACCOUNT", "P@ssword");
    
      StreamWriter writer = new StreamWriter(req.GetRequestStream());
      writer.Write(input);
      writer.Close();
      var rsp = req.GetResponse().GetResponseStream();
    

    【讨论】:

    • 我只使用 WebRequest,但我知道你在那里做什么。目前我设置了 DefaultCredentials。我可以以编程方式为每个用户指定 NetworkCredentials,还是必须像您在示例中所做的那样使用我的用户名/密码对其进行硬编码?
    • DefaultCredentials 获取当前登录的用户的安全上下文。从错误看来,您有权上传该文件而普通用户没有。我个人会创建一个具有权限的新用户帐户和一个不会过期的密码,并授予它上传文件的权限。然后,您可以在代码中硬编码用户名和密码。
    • 很想这样做,但我们公司的 IT 技术人员喜欢锁定事情!所以我认为新用户帐户会推动它!
    • 添加仅具有该权限的新用户帐户比使用您的帐户更安全。您可以使用您的,但这意味着将您的用户名和密码暴露给全世界(像提琴手这样的简单嗅探器会获取您的详细信息)。此外,如果您使用自己的密码,那么每次更改密码时,所有应用程序都会中断。唯一的其他选择是将上传权限授予每个想要使用您的帐户的用户,然后继续使用 DefaultCredentials
    猜你喜欢
    • 2021-12-14
    • 2011-08-18
    • 2015-09-13
    • 2019-05-29
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 2012-06-18
    相关资源
    最近更新 更多