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 和摘要式身份验证的主要内容,如果未能解决你的问题,请参考以下文章