Ale*_*vic 8 .net c# security webclient digest-authentication
我正在使用Asp.net web api构建Web服务,我必须从AXIS IP Camera获取图像.但是,摄像机使用摘要式身份验证.所以我的C#代码看起来像这样:
WebClient webClient = new WebClient();
webClient.UseDefaultCredentials = true;
webClient.Credentials = new NetworkCredential("***", "***");
byte[] imageStream = webClient.DownloadData("http://192.168.0.90/axis-cgi/jpg/image.cgi");
Run Code Online (Sandbox Code Playgroud)
这一切都有效,但在查看Fiddler时,我发现客户端在没有身份验证的情况下发送了一个请求,并返回401错误.之后,它发送具有摘要安全性的那个.
我在这里找到了一个带有手动凭证注入的解决方案:
http://kristofmattei.be/2013/02/20/webclient-not-sending-credentials-heres-why/
但这看起来不错.它使用基本身份验证,我真的不想要,看起来有点不专业.
有没有办法立即发送签名的请求或这是如何工作的,因为我注意到相机在第一个请求中返回nonce?
您无法避免第一个匿名请求,因为WebClient必须根据他获得的401响应来确定使用哪种身份验证方案,它可能是基本的,摘要等...请参阅该问题.
使用摘要,无论如何都无法避免2个请求,因为第一个401响应包含一个nonce(客户端身份验证请求所需的值),请参阅摘要访问身份验证,Wikipedia.
如果是基本身份验证,则可以通过使用凭据手动设置所需的标头来避免第一个请求.