【问题标题】:How does NetworkCredential in C# works when assigned to a HttpRequest object?C# 中的 NetworkCredential 在分配给 HttpRequest 对象时如何工作?
【发布时间】:2017-09-29 21:28:22
【问题描述】:

我想知道如何通过 http 请求传递 NetworkCredentials。它们是作为 HTTPHeaders、RequestData 传递还是有其他东西携带信息。

我尝试创建一个示例应用程序并检查了提琴手日志。我没有看到它被添加为 HTTPHeader,所以携带该信息。

这是我尝试过的示例代码:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://gmail.com");
request.Method = "GET";
request.ContentType = "application/json";
request.UserAgent = "Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0";
request.Credentials = new NetworkCredential("TestUser", "Password-1");

【问题讨论】:

  • 取决于您请求的身份验证类型。 Credentials 只是凭据的占位符。您要执行哪种身份验证?
  • 顺便说一句 Gmail 不使用用户名和密码。您必须首先使用 OAuthgoogle 进行身份验证

标签: c# httprequest networkcredentials


【解决方案1】:

来自以下 MSDN 页面;

支持的身份验证方案包括 Digest、Negotiate、Kerberos、 NTLM 和基本。 https://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.credentials(v=vs.110).aspx

所以这将取决于,通常我猜它会选择最安全和可用的方法......但是它也说;

要将 HttpWebRequest 限制为一种或多种身份验证方法,请使用 CredentialCache 类并将您的凭据绑定到一个或多个 身份验证方案

因此,如果您希望将其用作标头,我想您可以将其限制为仅使用使用 CredentialCache 对象的基本身份验证;

https://msdn.microsoft.com/en-us/library/system.net.credentialcache(v=vs.110).aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    相关资源
    最近更新 更多