Epson TM-T88V-i摘要认证无效

时间:2016-04-03 15:24:04

标签: symfony authentication digest digest-authentication epson

我的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步
  [2016-04-03 16:33:01] security.DEBUG:调用身份验证条目   点。   

<小时/>   第3步
  [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. 在步骤1 + 2中,Epson尝试访问受HTTP摘要保护的服务器URL,并且服务器发送401&#34;未授权的&#34;用nonce响应(我们不会在此日志文件中看到这个)

  2. 在步骤3中,Epson发送HTTP摘要客户端授权请求,包括所有必要的数据。 响应参数包含从其他授权参数生成的哈希

  3. 在步骤4中,我的symfony 2.8应用程序说,Epson在步骤3中发送的散列响应参数不是HTTP摘要过程所期望的参数。

  4. 步骤5最后显示HTTP摘要认证失败。

  5. 据我所知,摘要认证过程(如wikipedia所述)是正确的,只是Epson在他的认证请求中没有计算正确的哈希值。

    有谁知道为什么爱普生发送了错误的响应参数,或者有人让这个场景有效?

1 个答案:

答案 0 :(得分:3)

我可以在调试2天后解决问题。我的摘要auth密码的长度是40个字符。我减少了约20个字符。不行,dohhh。