2016-04-03 12 views
6

Mein Epson TM-T88V-i-Belegdrucker versucht, XML-Daten von einer Server-URL abzurufen, die den Drucker über HTTP-Digest authentifizieren muss. (Diese Epson-Funktion heißt "")Epson TM-T88V-i-Digestauthentifizierung funktioniert nicht

Über die Webkonsole des Druckers kann ich eine Testanforderung an den Server senden, aber die HTTP Digest-Authentifizierung schlägt fehl. Das Gleiche passiert, wenn ich den Drucker versuche, auf dem Server zu authentifizieren.

Wenn ich versuche, über den Browser auf die URL zuzugreifen, wird das Feld HTTP-Digest-Benutzername + Passwort angezeigt, und wenn ich die Credentials eintrage, wird das XML wie erwartet im Browser angezeigt. Dies zeigt, dass der HTTP-Digest-Mechanismus auf der Serverseite korrekt eingerichtet ist (ich verwende das PHP-Framework Symfony 2.8).

Auf Server-Seite sehe ich folgende Protokollinformationen:

Schritt 1
[2016.04.03 16.33.01] security.INFO: Ein AuthenticationException wurde geworfen; Weiterleiten an den Authentifizierungseingangspunkt { "Ausnahme": "[object] (Symfony \ Component \ Security \ Core \ Exception \ AuthenticationCredentialsNotFoundException (Code: 0): Ein Token nicht in der TokenStorage gefunden wurde /home/.../src/Symfony. /Component/Security/Http/Firewall/AccessListener.php:53) "}


Schritt 2
[2016.04.03 16.33.01] security.DEBUG: Anrufen Authentication Eintrag Punkt.


Schritt 3
[2016.04.03 16.33.01] security.DEBUG: Digest Authorization Header von User-Agent empfangen werden. { "Header": "username = \" Drucker \“ realm = \ "example \" Nonce = \ "MTQ1OTk5Mzk4MS40NjQ3OmI0OTVmN2ZkZTlhYmE1NmNjNDIxNmIxMWU0OGVmYjUz \", uri = \ "/ export \", cnonce = \ "MDAxNjM0 \", nc = 00000001, qop = \ "Auth \" response = \“ c6ad88607624efd17f7de602f6ee9def \ ""}
Schritt 4
[2016.04.03 16.33.01] security.DEBUG: Unexpected Antwort von DigestAuth erhalten; Gibt die Kopfzeile einen Klartextpasswort zurück? { "erwartete": " 741bff6abed513b6948c26eae529b6b6", "empfangen", " c6ad88607624efd17f7de602f6ee9def"}


Schritt 5
[2016.04.03 16.33.01] security.INFO : Digestauthentifizierung ist fehlgeschlagen. {"Ausnahme": "[Objekt] (Symfony \ Component \ Sicherheit \ Core \ Exception \ BadCredentialsException (code: 0)): falsche Antwort um /home/.../src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php: 107) "}

Die Log-Datei sagt uns, was Server-Seite passiert:

  1. In Schritt 1 + 2 der Epson versucht, den Server-URL für den Zugriff auf die HTTP geschützt verdauen und den Server a 401 „nicht autorisierte“ Antwort mit einem nonce Sends (wir in dieser Protokolldatei sehen dies nicht)

  2. in Schritt 3 der Epson die HTTP sendet einschließlich aller notwendigen Daten Client-Autorisierungs-Anfrage verdauen. die Antwort Parameter enthält ein Hash, der sollte aus der anderen Genehmigung erzeugt werden Parameter

  3. In Schritt 4 mein symfony 2.8 Anwendung sagt, dass der Hash-Antwortparameter, die 3 durch den Epson in Schritt gesendet wurde, ist nicht derjenige, der durch den HTTP erwartet wurde Digest verarbeiten.

  4. Schritt 5 zeigt schließlich, dass die HTTP-Digest-Authentifizierung fehlgeschlagen ist.

Soweit ich zu verstehen, ist der Digest-Authentifizierungsprozess (wie auf wikipedia beschrieben) korrekt ist, außer dass der Epson berechnet nicht den korrekten Hash in seiner Authentifizierungsanforderung.

Weiß jemand, warum der Epson sendet eine falsche Antwort Parameter oder hat jemand dieses Szenario arbeiten lassen?

Antwort

3

Ich konnte das Problem nach 2 Tagen Debuggen beheben. Die Länge meines Digest Auth Passwortes war 40 Zeichen. Ich habe es etwas um 20 Zeichen reduziert. Es funktioniert nicht, Dohhh.

Verwandte Themen