OnVif集成错误 - 未经授权使用客户端身份验证方案'Digest'

时间:2014-02-21 11:41:23

标签: c# ip-camera digest-authentication onvif

使用this code连接到C#.Net 4.5中我的IP Camera上的OnVif服务 在该代码旁边,我试图获取设备信息如下:

string str = client.GetDeviceInformation(out model, out firmware, out serial, out hardwareId);

并鼓励这个错误:

An exception of type 'System.ServiceModel.Security.MessageSecurityException' occurred in mscorlib.dll but was not handled in user code

Additional information: The HTTP request is unauthorized with client authentication scheme 'Digest'. The authentication header received from the server was 'Basic realm="CBBA"'.

我试过了this information about Basic realm。通过向请求值WWW-Authenticate添加Http标头Basic realm="Our Site"。但没有运气。

到底是什么?如何解决?

2 个答案:

答案 0 :(得分:0)

您可能无法处理Digest Authentication。要正确处理事情,您应该在不使用身份验证的情况下向非PRE_AUTH ONVIF方法发送请求,既不是摘要也不是ws-usernameToken。

您可以获得以下两个答案之一:

  1. 您使用env:Sender ter:NoAuthorized获得500响应,这意味着相机不支持HTTP摘要(实际上,对于配置文件S设备不是必需的)。在这种情况下,您只能使用WS-UsernameToken

  2. 您从设备获得带有WWW-Authenticate标头的401响应。在这种情况下,您应该遵循RFC 2617,评估所有必要的元素,并使用Authorization标题重新发送您的请求。

  3. 请记住,HTTP摘要挑战始终由相机启动,您不能只将它添加到第一个请求中。

    检查Core specification的§5.12,至少知道相机是否处理身份验证。

答案 1 :(得分:0)

我有relevant issue - 我必须使用ONVIF相机进行身份验证,我不知道身份验证HTTP身份验证模式(基本/摘要)。在我的回答中,您可以看到如何正确迭代所有HTTP身份验证方案,或者您可以只使用Digest的代码,希望它有所帮助。