Wer im Kundenservice das Ticketsystem OTRS v3.0 verwendet und dies mit Firefox bedienen möchte, ist gekniffen: Der Firefox-Passwortmanager fühlt sich zwar geneigt, das eingegebene Passwort zu speichern, trägt es aber beim nächsten Login nicht ins Eingabefeld ein. Die Lösung: Zwei Zeilen Userscript, und fertig ist die Laube.
Das Problem existiert seit geraumer Zeit: Irgendwann funktionierte das OTRS-Login mit Firefox via Passwort-Manager noch, aber seit irgendwann später eben nicht mehr. Das Problem kam mit irgend einem OTRS 3.0.x-Update oder mir irgendeinem Firefox 4/5/6/7/8/9-Update … retrospektiv weiß ich das nicht mehr, aber es macht die Sache ja nicht eben besser.
Des Pudels Kern ist, dass OTRS das Passwortfeld der Anmeldemaske auf Read-Only setzt und erst beim Eintritt des Cursors („onFocus“) editierbar macht. Zweifelsohne handelt es sich dabei um eine sinnvolle Sicherheitserwägung, aber dieser Kniff führt effizient dazu, dass der Firefox-Passwortmanager sich bockig zeigt: Er speichert das Passwort zwar beim ersten Login auf Anfrage, trägt selbiges aber beim nächsten Login nicht mehr automatisch ein – weil das dösige Passwort-Feld in dem Moment halt nicht beschreibbar ist.
Exakt diese Information entnahm ich dem OTRS-Bugtracker, mitsamt einem Core-Patch, der der Login.dtl-Datei ein Stückchen JavaScript hinzufügt. Core-Patches an OTRS sind allerdings nervig, weil man immer damit rechnen muss, dass sie entweder mit dem nächsten Update überschrieben werden, oder (schlimmer noch) dass Sie eben dieses nächste Update der gepatchten Datei be- oder gar verhindern.
Da es sich um ein Stück JavaScript, genauer gesagt: einen Zweizeiler handelt, der aufgerufen werden soll, wenn die Login-Maske erscheint, lag es nahe, diese Funktionalität in ein Userscript (deutsch: Benutzerskript) zu stecken. Das sieht in etwa so aus – der funktionelle Kern ist ein Zweizeiler:
// ==UserScript==
// @name OTRS Login Helper
// @namespace https://mein.ticketsystem.tld/otrs/
// @description Enables support for Firefox password manager
// @include https://mein.ticketsystem.tld/otrs/index.pl*
// ==/UserScript==
// Notes:
// based on http://bugs.otrs.org/show_bug.cgi?id=7719document.getElementById(‚User‘).readOnly = false;
document.getElementById(‚Password‘).readOnly = false;
Um es tauglich für den eigenen Anwendungszweck zu machen, muss man natürlich „mein.ticketsystem.tld/otrs“ durch den Pfad zum eigenen OTRS v3 ersetzen. Anschließend speichert man die Datei unter einem beliebigen Namen, der mit „.user.js“ endet, also z.B. „otrsfix.user.js“.
Wie bringt man das Userscript zur Ausführung? Ganz einfach: Mit Greasemonkey.
Also:
- Greasemonkey installieren.
- Firefox neu starten.
- Leeres Fenster (oder Tab) öffnen.
- Die Datei „otrsfix.user.js“ aus dem Finder oder Explorer in das geöffnete Firefox-Fenster ziehen.
- Userscript-Installation bestätigen.
- Firefox-Fenster mit OTRS-Anmeldemaske öffnen bzw. neu laden.
- Genießen. 🙂
So, this is great, but the bug report you mentioned is already closed.
This means you can also simply replace Login.dtl on the server and you have fixed this issue for all your clients in case you’re running OTRS 3.0.x:
http://source.otrs.org/viewvc.cgi/otrs/Kernel/Output/HTML/Standard/Login.dtl?view=markup&pathrev=rel-3_0
Or you could upgrade to new OTRS 3.1.x which is still in beta, but will become GA on 14th of February.
Hi Michael,
thanks for stopping by! Sure – I know that the bug is closed, but it doesn’t help me with my OTRS 3.0.11 instance – it’s still in there, you know. In my (German) blog post I mention that I try to avoid core patches if possible, as they might interfere with later updates (creating some .rpmnew files I have to take care of). And I probably won’t upgrade to 3.1 beta with a „living“ productive OTRS instance. For the time being, with a small team of agents, this small userscript fix is pretty handy.