2016-04-03 12 views
6

La stampante di ricevute Epson TM-T88V-i tenta di recuperare i dati XML da un URL del server che richiede l'autenticazione della stampante tramite digest HTTP. (questa funzione Epson è denominata "Server Direct Print")L'autenticazione digest di Epson TM-T88V-i non funziona

Dalla console Web della stampante sono in grado di inviare una richiesta di test al server ma l'autenticazione del digest HTTP non riesce. Lo stesso accade se lascio che la stampante provi ad autenticare sul server.

Se provo ad accedere all'URL tramite browser, viene visualizzata la casella Nome utente + password HTTP digest e se si immettono le credenziali l'XML viene visualizzato nel browser come previsto. Questo dimostra che il meccanismo di digest HTTP sul lato server è impostato correttamente (sto usando il framework PHP Symfony 2.8).

Sul lato server che vedo seguenti informazioni di log:

Fase 1
[2016/04/03 16:33:01] security.INFO: Un AuthenticationException stato gettato; reindirizzamento al punto di ingresso di autenticazione. {"eccezione": "[oggetto] (Symfony \ Component \ Security \ Core \ Exception \ AuthenticationCredentialsNotFoundException (codice: 0): un token non è stato trovato nel TokenStorage all'indirizzo /home/.../src/Symfony /Component/Security/Http/Firewall/AccessListener.php:53) "}


Fase 2
[2016/04/03 16:33:01] security.DEBUG: Chiamata ingresso autenticazione punto.


Fase 3
[2016/04/03 16:33:01] security.DEBUG: Digest Autorizzazione intestazione ricevuto dal programma utente. { "Header": "username = \" stampante \", regno = \ "ad esempio \", nonce = \ "MTQ1OTk5Mzk4MS40NjQ3OmI0OTVmN2ZkZTlhYmE1NmNjNDIxNmIxMWU0OGVmYjUz \", uri = \ "/ export \", cnonce = \ "MDAxNjM0 \", nc = 00000001, qop = \ "auth \", risposta = \" c6ad88607624efd17f7de602f6ee9def \ ""}
Fase 4
[2016/04/03 16:33:01] security.DEBUG: imprevisto risposta da DigestAuth ricevuta; l'intestazione restituisce una password in chiaro? { "atteso": " 741bff6abed513b6948c26eae529b6b6", "ha ricevuto": " c6ad88607624efd17f7de602f6ee9def"}


Fase 5
[2016/04/03 16:33:01] security.INFO : L'autenticazione del digest non è riuscita. {"eccezione": "[oggetto] (Symfony \ Component \ Security \ Core \ Exception \ BadCredentialsException (codice: 0): risposta errata a /home/.../src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php: 107) "}

Il file di log ci dice cosa succede lato server:

  1. Nel passaggio 1 + 2 Epson tenta di accedere al URL del server che è HTTP Digest protetto e il server invia una risposta 401 "non autorizzata" con un nonce (non vediamo questo in questo file di log)

  2. nel passaggio 3 Epson invia l'HTTP digest cliente richiesta di autorizzazione tra cui tutti i dati necessari. il parametro risposta contiene un hash che dovrebbe essere generato fuori dalla altra autorizzazione parametri

  3. Al punto 4 il mio symfony 2.8 applicazione dice, che il parametro di risposta hash che è stato inviato dal Epson al punto 3 non è quella che ci si aspettava da parte del HTTP Digest processi.

  4. Il passaggio 5 mostra infine che l'autenticazione del digest HTTP non è riuscita.

Per quanto ho capito, il processo di autenticazione digest (come descritto a wikipedia) è corretto, tranne che l'Epson non calcola l'hash corretto nella sua richiesta di autenticazione.

Qualcuno sa perché Epson invia una risposta errata parametro o qualcuno ha fatto in modo che questo scenario funzioni?

risposta

3

Potrei risolvere il problema dopo 2 giorni di debug. La lunghezza della password di autenticazione del mio digest era di 40 caratteri. L'ho ridotto di circa 20 caratteri. Non funziona, dohhh.

Problemi correlati