【问题标题】:C# SSL Basic Access AuthenticationC# SSL 基本访问身份验证
【发布时间】:2010-11-10 18:20:45
【问题描述】:

我想向第三方请求报告,他们需要通过 POST 进行“基本访问身份验证”:

Your client application must use Basic Access Authentication 
to send the user name and password.

有人能指出正确的方向吗?

编辑:我确实看到了this post,但有两个答案,我不确定这是否是我需要做的,或者哪个是首选方法。

【问题讨论】:

    标签: c# authentication ssl


    【解决方案1】:

    基本要点是这样的:

    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
    request.Method = WebRequestMethods.Http.Get;
    request.Credentials = new NetworkCredential(username, password);
    

    但有时使用请求凭据会出现问题,替代方法是在请求标头中添加身份验证数据

    string authInfo = username + ":" + password;
    authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
    request.Headers["Authorization"] = "Basic " + authInfo;
    

    有关更多详细信息,请参阅此博客文章

    http://charlie.cu.cc/2012/05/how-use-basic-http-authentication-c-web-request/

    【讨论】:

      【解决方案2】:

      假设您使用 WebRequest,则将 CredentialCache 附加到您的请求:

              NetworkCredential nc = new NetworkCredential("user", "password");
              CredentialCache cc = new CredentialCache();
              cc.Add("www.site.com", 443, "Basic", nc);
      
      
              WebRequest request = WebRequest.Create("https://www.site.com");
              request.Credentials = cc;
              request.PreAuthenticate = true;
              request.Method = "POST";
      
              // fill in other request properties here, like content
      
              WebResponse respose = request.GetResponse();
      

      【讨论】:

      • 这就是您想要的,该帖子中接受的答案是用艰难的方式做事,但这可能是他正在做的事情所必需的。请记住,如果您使用代理,则需要通过 request.Proxy.Credentials 发送单独的凭据此外,如果您使用代理,您可能/可能无法使用 PreAuthenticate。另外你不一定非要做CredentialCache,你可以设置request.Credentials = nc;不知道有什么区别。
      • @Allen with Basic nc 和 cc 没有区别。使用 Digest 时,缓存会做正确的事情:只协商一次摘要,然后使用新增加的 'nc'(摘要 nc,在我的示例中不是网络凭据)进行预身份验证,从而避免额外的往返。因此,我认为最好有使用缓存而不是网络凭据的习惯。
      猜你喜欢
      • 1970-01-01
      • 2012-03-05
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 2014-12-17
      • 2012-09-08
      • 2015-07-22
      • 1970-01-01
      相关资源
      最近更新 更多