使用--digest选项进行'摘要式身份验证'在curl中使用curl

时间:2016-03-07 14:31:43

标签: http curl http-authentication digest-authentication onvif

我正在尝试使用linux中的curl更改基于Onvif的相机的日期。我已经成功地在c#中使用摘要式身份验证,但我遇到了这种情况。

我使用以下命令:

curl -u "admin:admin" --digest http://10.104.37.1:80/onvif/device_service --data '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SetSystemDateAndTime xmlns="http://www.onvif.org/ver10/device/wsdl"><DateTimeType>Manual</DateTimeType><DaylightSavings>false</DaylightSavings><TimeZone><TZ xmlns="http://www.onvif.org/ver10/schema">CST-0:00:00</TZ></TimeZone><UTCDateTime><Time xmlns="http://www.onvif.org/ver10/schema"><Hour>8</Hour><Minute>8</Minute><Second>8</Second></Time><Date xmlns="http://www.onvif.org/ver10/schema"><Year>2008</Year><Month>8</Month><Day>8</Day></Date></UTCDateTime></SetSystemDateAndTime></s:Body></s:Envelope>'

我获得了以下结果(似乎卡住了):

  
      
  • 即将连接()到10.104.37.1端口80(#0)
  •   
  • 尝试10.104.37.1 ...已连接
  •   
  • 连接到10.104.37.1(10.104.37.1)端口80(#0)
  •   
  • 使用摘要与用户&#39; admin&#39;
  • 进行服务器身份验证   
  • POST / onvif / device_service HTTP / 1.1
  •   
  • User-Agent:curl / 7.19.7(i486-pc-linux-gnu)libcurl / 7.19.7 OpenSSL / 0.9.8k zlib / 1.2.3.3 libidn / 1.15
  •   
  • 主持人:10.104.37.1
  •   
  • 接受: /
  •   
  • 内容长度:0
  •   
  • 内容类型:application / x-www-form-urlencoded
  •   

在此之后,没有任何反应。

我必须说,如果我只是阅读日期(此操作不需要验证)......

curl -u admin:admin http://10.104.37.1:80/onvif/device_service --data '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><GetSystemDateAndTime xmlns="http://www.onvif.org/ver10/device/wsdl"/></s:Body></s:Envelope>' 

...它做得恰到好处,但是如果我添加&#34; - 摘要&#34;,则该过程遵循之前评论过的行为。

任何人都可以给我一个提示吗?

谢谢!

修改 内容长度= 0?

并不奇怪

1 个答案:

答案 0 :(得分:1)

我终于找到了解决此问题的解决方案:我在完整命令中添加了选项 - anyauth 。 无论如何,我仍然不知道为什么使用--digest选项会阻碍这个过程。