使用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"
。但没有运气。
到底是什么?如何解决?
答案 0 :(得分:0)
您可能无法处理Digest Authentication。要正确处理事情,您应该在不使用身份验证的情况下向非PRE_AUTH
ONVIF方法发送请求,既不是摘要也不是ws-usernameToken。
您可以获得以下两个答案之一:
您使用env:Sender ter:NoAuthorized
获得500响应,这意味着相机不支持HTTP摘要(实际上,对于配置文件S设备不是必需的)。在这种情况下,您只能使用WS-UsernameToken
您从设备获得带有WWW-Authenticate
标头的401响应。在这种情况下,您应该遵循RFC 2617,评估所有必要的元素,并使用Authorization
标题重新发送您的请求。
请记住,HTTP摘要挑战始终由相机启动,您不能只将它添加到第一个请求中。
检查Core specification的§5.12,至少知道相机是否处理身份验证。
答案 1 :(得分:0)
我有relevant issue - 我必须使用ONVIF相机进行身份验证,我不知道身份验证HTTP身份验证模式(基本/摘要)。在我的回答中,您可以看到如何正确迭代所有HTTP身份验证方案,或者您可以只使用Digest的代码,希望它有所帮助。