zusätzliche Customer Authentifizierung mittels sha1 hash

Howto's zu OTRS Themen. Keine neuen Topics mit Fragen in diesem Forum!
Post Reply
noeggeL
Znuny newbie
Posts: 7
Joined: 21 Feb 2008, 19:54

zusätzliche Customer Authentifizierung mittels sha1 hash

Post by noeggeL »

OTRS beietet von "Haus aus" die Möglichkeit Agenten / Kunden über externe Datenbanken und Verzeichnisse zu authentifizieren.
Die Passworte können dabei mittels Crypt verschlüsselt, als MD5 Hash abgelegt oder im Klartext (plain) vorhanden sein.

Mein Problem war, dass in unserer externen Customer DB die Customer Passworte als SHA1 Hashes gespeichert waren. Die Datenbank konnte ich nicht (ohne grössere Implikationen) auf MD5 umstellen, so dass mir nichts anderes ürig blieb, als einen Workaround zu suchen.

Ich habe im OTRS Bugzilla einen Feature Request gestellt, so dass die Funktion (hoffentlich) irgendwann offiziell von OTRS unterstützt wird.
http://bugs.otrs.org/show_bug.cgi?id=2774
In der Zwischenzeit habe ich mir mit der nachfolgenden Anpassung geholfen.

Doch zuerst natürlich der Hinweis: Alle Änderungen gehen auf eigenes Risiko! Immer eine Sicherheitskopie des betreffenden Files vor den Änderungen machen! Ich bin kein Profi Programmierer, die Lösung kann man sicherlich auch eleganter realisieren.
Diese Änderungen betreffen nur den CustomerAuth Teil, also nur das Anmelden der Kunden auf dem Webinterface.


zusätzlich zu installierendes Perl Modul:
- Digest::SHA1

Änderungen im File: /opt/otrs/Kernel/System/CustomerAuth/DB.pm

zusätzlich am Anfang der Datei nach "use strict;"
use Digest::SHA1 qw(sha1_hex);

und in den Passwort Check Block:

# crypt given pw
my $CryptedPw = '';
my $Salt = $GetPw;
# md5 pw
if ($Self->{CryptType} eq 'plain') {
$CryptedPw = $Pw;
}

# diese drei Zeilen einfügen:

elsif ($Self->{CryptType} eq 'sha1') {
$CryptedPw = sha1_hex($Pw);
}


elsif ($GetPw !~ /^.{13}$/) {
# strip Salt
$Salt =~ s/^\$.+?\$(.+?)\$.*$/$1/;
$CryptedPw = unix_md5_crypt($Pw, $Salt);
}

und schlussendlich natürlich eine entsprechende Definition in der Config.pm:
$Self->{'Customer::AuthModule::DB::CryptType6'} = 'sha1';

Obwohl das problemlos funktioniert, wird bei einem Update von OTRS das DB.pm File möglicherweise ersetzt und damit die Funktion unwirksam, was dazu führt, dass sich die Kunden nicht mehr mit ihrem sha1-gehashten Passwort einloggen können.

Ich hoffe, dass es dem Einen oder Anderen hilft oder einen Lösungsansatz gibt.

Gruss,
noeggeL
Andre Bauer
Znuny guru
Posts: 2189
Joined: 08 Dec 2005, 17:01
Znuny Version: 5.0.x
Real Name: André Bauer
Company: Magix Software GmbH
Location: Dresden
Contact:

zusätzliche Customer Authentifizierung mittels sha1 hash

Post by Andre Bauer »

Füg deine Anpassung doch einfach noch als Patch mit in den Bugreport ein und änder den Titel auf "[Patch] add sha1 for additional auth method".

Das sollte die Chancen auf Integration deutlich erhöhen ;-)

Ich steh noch vor nem ähnlichen Problem, da ich irgendwann noch ne Authentifizierung gegen eine XML Schnittstelle machen muss, obwohl dahinter auch nur ne MySQL Datenbank liegt :roll:

Wird aber sicher etwas mehr Arbeit werden...
Prod: Ubuntu Server 16.04 / Zammad 1.2

DO NOT PM ME WITH OTRS RELATED QUESTIONS! ASK IN THE FORUMS!

OtterHub.org
Post Reply