HTTPS 和摘要式身份验证

Posted

技术标签:

【中文标题】HTTPS 和摘要式身份验证【英文标题】:HTTPS & Digest Authentication 【发布时间】:2009-12-28 17:10:56 【问题描述】:

如何在 C#.Net 中实现带有摘要式身份验证的 HTTPS?根据 msdn,凭据类不支持 SSL.. 那么我们如何实现身份验证呢?我的代码适用于基本身份验证,但摘要出错..

【问题讨论】:

您是否尝试过简单地将 URL 指定为 https://... 到 WebRequest 对象? 【参考方案1】:

您可以在CredentialCache 中创建凭证时指定凭证的类型,用于WebClients 和WebRequests。因此,例如,要填充 CredentialCache 以尝试 Digest auth,您可以使用

CredentialCache cache = new CredentialCache();
Uri prefix = new Uri ("http://www.example.com");
cache.Add (prefix, "Digest",  new NetworkCredential ("username", "passwd"));

WebClient wc = new WebClient();
wc.Credentials = cache;

由于摘要式身份验证取决于目标 URL,如果它指定了域,则您确实需要正确处理。

【讨论】:

【参考方案2】:

您正在尝试组合通常被认为可以相互替代的事物。 HTTP Digest Authentication 使用 MD5 对用户凭据进行加密,这在当今被认为不够安全。

所以,这里的信息是:使用带有基本身份验证的 HTTPS。

【讨论】:

摘要有随机数,就像盐一样。所以理论上,如果有人预先计算所有的 nonce 值,或者生成彩虹表,那么这可能是一个问题,但实际上不是。

以上是关于HTTPS 和摘要式身份验证的主要内容,如果未能解决你的问题,请参考以下文章

使用 URLConnection 进行摘要式身份验证

.Net Core HttpClient 摘要式身份验证

为啥在 Django 中需要基本或摘要式身份验证?

使用 Java 进行基本和摘要式访问身份验证

使用 HttpURLConnection 进行摘要式身份验证

为 HTTP 摘要式身份验证编写测试/方法