我的Epson TM-T88V-i收据打印机尝试从服务器URL获取XML数据,该服务器URL需要打印机通过HTTP摘要进行身份验证。 (此Epson功能称为" Server Direct Print")
从打印机的Web控制台,我能够向服务器发送测试请求,但HTTP摘要认证失败。如果我让打印机尝试在服务器上进行身份验证,也会发生同样的情况。
如果我尝试通过浏览器访问URL,则会出现HTTP摘要用户名+密码框,如果我输入凭据,XML将按预期显示在浏览器中。这表明服务器端的HTTP摘要机制设置正确(我使用PHP框架Symfony 2.8)。
在服务器端,我看到以下日志信息:
第1步
[2016-04-03 16:33:01] security.INFO:一个AuthenticationException 抛出;重定向到身份验证入口点。 {"例外":" [对象] (Symfony的\分量\安全\核心\异常\ AuthenticationCredentialsNotFoundException(代码: 0):在TokenStorage中找不到令牌。 at / home /.../ src / Symfony / Component / Security / Http / Firewall / AccessListener.php:53)"}第2步
<小时/> 第3步
[2016-04-03 16:33:01] security.DEBUG:调用身份验证条目 点。
[2016-04-03 16:33:01] security.DEBUG:摘要授权标题 从用户代理处收到。 {&#34;头&#34;:&#34;用户名= \&#34;打印机\&#34 ;, 境界= \&#34;例如\&#34 ;, nonce = \&#34; MTQ1OTk5Mzk4MS40NjQ3OmI0OTVmN2ZkZTlhYME1NmNjNDIxNmIxMWU0OGVmYjUz \&#34;,uri = \&#34; / export \&#34;,cnonce = \&#34; MDAxNjM0 \&#34;,nc = 00000001,qop = \ &#34; AUTH \&#34 ;, 响应= \&#34;的 c6ad88607624efd17f7de602f6ee9def \&#34;&#34;} 第4步
[2016-04-03 16:33:01] security.DEBUG:来自的意外回应 DigestAuth收到;是返回明文密码的标题? {&#34;预期&#34;:&#34;的 741bff6abed513b6948c26eae529b6b6 &#34;&#34;接收&#34;:&#34;的 c6ad88607624efd17f7de602f6ee9def &# 34;}
<小时/> 第5步
[2016-04-03 16:33:01] security.INFO:摘要认证失败。 {&#34;例外&#34;:&#34; [对象] (Symfony的\分量\安全\核心\异常\ BadCredentialsException(代码: 0):错误的响应 /家庭/.../ SRC / Symfony的/分量/安全性/ HTTP /防火墙/ DigestAuthenticationListener.php:107)&#34;}
日志文件告诉我们服务器端发生了什么:
在步骤1 + 2中,Epson尝试访问受HTTP摘要保护的服务器URL,并且服务器发送401&#34;未授权的&#34;用nonce响应(我们不会在此日志文件中看到这个)
在步骤3中,Epson发送HTTP摘要客户端授权请求,包括所有必要的数据。 响应参数包含应从其他授权参数生成的哈希
在步骤4中,我的symfony 2.8应用程序说,Epson在步骤3中发送的散列响应参数不是HTTP摘要过程所期望的参数。
步骤5最后显示HTTP摘要认证失败。
据我所知,摘要认证过程(如wikipedia所述)是正确的,只是Epson在他的认证请求中没有计算正确的哈希值。
有谁知道为什么爱普生发送了错误的响应参数,或者有人让这个场景有效?
答案 0 :(得分:3)
我可以在调试2天后解决问题。我的摘要auth密码的长度是40个字符。我减少了约20个字符。不行,dohhh。