Dieses Blog durchsuchen

Dienstag, 9. Juli 2013

Remote-Zugriff auf die OTRS Datenbank 


Aussagekräftige Reports und Kennzahlen werden innerhalb einer modernen IT-Organisation immer wichtiger. Mit Hilfe von Business Intelligence Systemen (BI) können Ticket-Daten analysiert und grafisch aufbereitet werden. Die folgende Anleitung beschreibt die Konfiguration für den Remotezugriff des BI Systems auf die OTRS-Datenbank.

Beispielparameter:
OTRS-DB = otrs
OTRS-DB-Remote-User = otrs
Remote Host (BI System) = BISERVER.DOMAIN.NET


1. Den MySQL Port 3306 in der Firewall freischalten

 

2. Verbindung zum MySQL-Server herstellen

 

 OTRS:~ # mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 63934
Server version: 5.0.67 SUSE MySQL RPM


3. Datenbank auswählen

 

mysql> use otrs 
Database changed


4. Hinzufügen des Remote-MySQL-Benutzers

 

mysql> GRANT ALL ON *.* to otrs@'BISERVER.DOMAIN.NET IDENTIFIED BY 'your-otrs-password'; 
Query OK, 0 rows affected (0.00 sec)


5. Berechtigungen laden

 

mysql> FLUSH PRIVILEGES;

Dienstag, 4. Juni 2013

Single-Sign-On (SSO) für die OTRS-Weboberfläche 

 

Single-Sign-On für die OTRS-Weboberfläche heißt: Der Anwender wird beim Aufruf der OTRS-Weboberfläche aus dem Browser heraus automatisch authentifiziert, eine Passwortabfrage findet nicht mehr statt.

Diese Anleitung beschreibt die Konfiguration einer solchen Umgebung in einer Windows Domäne und einem SLES Server mit installiertem OTRS.

 

 

1. Kerberos Installation 

 

Das Modul mod_auth_kerb installieren:
 OTRS:~ # zypper install apache2-mod_auth_kerb

Das Paket krb5-client installieren
 OTRS:~ #zypper install krb5-client




2. Keytab für Apache erstellen 

 

Für die Authentifizierung von Apache muss ein sogenanntes keytab generiert werden.
Dieses setzt sich zusammen aus dem Protokoll (HTTP), dem Fully Qualified Domain Name des OTRS Servers und dem Realm der Domäne. Das Protokoll und der Domänen-Realm müssen groß geschrieben werden.
Desweiteren  wird ein Domänenbenutzer benötigt, an den das keytab gebunden wird. Der Benutzer muss über keine besonderen Rechte verfügen.

Im folgenden Beispiel dient als
FQDN = otrsserver.domain1.net
Realm = DOMAIN1.NET
Domänenbenutzer =  OTRSUSER


Auf dem Domain Controller in der Kommandozeile ins Support Tools Verzeichnis (in der Regel C:\Programme\Support Tools) wechseln und folgenden Befehl ausführen:

ktpass -princ HTTP/otrsserver.domain1.net@DOMAIN1.NET -mapuser DOMAIN1\OTRSUSER -pass xxxxxxxxx -out c:\temp\otrsserver.keytab


Das erstellte keytab ins Apache Verzeichnis /etc/apache2/keytabs des OTRS Severs kopieren.



3. Kerberos konfigurieren


Die Kerberos Konfiguration erfolgt auf dem OTRS Server unter /etc/krb5.conf
Im folgenden Beispiel wird Kerberos für zwei Domänen DOMAIN1 und DOMAIN2 konfiguriert.
Im Abschnitt [libdefaults] muss das Domain-Realm groß geschrieben werden. Im Abschnitt [realms] definiert man die einzelnen Realms der Domänen mit ihren Domänencontrollern.


[libdefaults]
        default_realm = DOMAIN1.NET

[realms]
        DOMAIN1.NET = {
                kdc = dc1.domain1.net
                kdc = dc2.domain1.net
                admin_server = dc1.domain1.net
        }
        DOMAIN2.NET = {
               kdc = dc3.domain2.net
               kdc = dc4.domain2.net
               admin_server = dc3.domain2.net
        }
[domain_realm]

        .domain1.net = DOMAIN1.NET
        domain1.net = DOMAIN1.NET
        .domain2.net = DOMAIN2.NET
        domain2.net = DOMAIN2.NET




4. Apache konfigurieren


Folgende Eintrage müssen in /etc/apache2/conf.d/otrs.conf hinzugefügt werden:


LoadModule auth_kerb_module usr/lib/apache2/modules/mod_auth_kerb.so
<Directory "/opt/otrs/bin/cgi-bin/">
  AllowOverride None
  AuthType Kerberos
  AuthName "OTRS"
  Krb5Keytab /etc/apache2/keytabs/otrsserver.keytab
  KrbAuthRealms DOMAIN1.NET DOMAIN2.NET
  KrbMethodNegotiate on
  KrbSaveCredentials  off
  KrbMethodK5Passwd on
  Require valid-user
  Order allow,deny
  Allow from all
</Directory>



Mit LoadModule auth_kerb_module usr/lib/apache2/modules/mod_auth_kerb.so sorgt man dafür, dass das Modul mod_auth_kerb gestartet wird. Das auf dem Domänencontroller erstellte keytab gibt man unter Krb5Keytab an. Unter KrbAuthRealms gibt man die Domain-Realms an, mehrere trennt man mit einem Leerzeichen.
Anschließend muss das Modul mod_auth_kerb mit folgendem Befehl aktiviert werden:

OTRS:~ #  a2enmod auth_kerb


5. OTRS Konfiguration


Um die SSO Authentifizierung im OTRS zu implementieren, muss das HTTPBasicAuth Modul aktiviert werden. Dazu müssen folgende Einträge in der /opt/otrs/Kernel/Config.pm gemacht werden.

Für die Authentifizierung der Agenten per SSO ist folgender Eintrag zuständig:
$Self->{'AuthModule'} = 'Kernel::System::Auth::HTTPBasicAuth';
$Self->{'AuthModule::HTTPBasicAuth::ReplaceRegExp'} ='@DOMAIN1.NET';


Für die Authentifizierung der Customer sieht der Eintrag wie folgt aus:

$Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::HTTPBasicAuth';
$Self->{'Customer::AuthModule::HTTPBasicAuth::ReplaceRegExp'} ='@DOMAIN1.NET';


Um die Authentifizierung Agenten mehrerer Domänen zu ermöglichen, muss für jede Domäne ein eigener Eintrag gemacht werden. z.B. für DOMAIN1 und DOMAIN2

$Self->{'AuthModule'} = 'Kernel::System::Auth::HTTPBasicAuth';
$Self->{'AuthModule::HTTPBasicAuth::ReplaceRegExp'} ='@DOMAIN1.NET';
...

$Self->{'AuthModule1'} = 'Kernel::System::Auth::HTTPBasicAuth';
$Self->{'AuthModule::HTTPBasicAuth::ReplaceRegExp1'} ='@DOMAIN2.NET';
...

Gleiches gilt für die Customer Authentifizierung.

Desweiteren muss für Agenten aus der DOMAIN2 in /Kernel/System/Auth/HTTPBasicAuth.pm folgender Eintrag hinzugefügt werden:

# regexp1 on login
my $ReplaceRegExp = $Self->{ConfigObject}->Get(
'AuthModule::HTTPBasicAuth::ReplaceRegExp1' . $Self->{Count},
);
if ($ReplaceRegExp) {
$User =~ s/$ReplaceRegExp1/$1/;
}
und für die Customer aus der DOMAIN2 wird der folgende Eintrag in
/Kernel/System/CustomerAuth/HTTPBasicAuth.pm hinzugefügt:

# regexp1 on login
my $ReplaceRegExp1 = $Self->{ConfigObject}->Get(
'Customer::AuthModule::HTTPBasicAuth::ReplaceRegExp1' . $Self->{Count},
);
if ($ReplaceRegExp1) {
$User =~ s/$ReplaceRegExp1/$1/;
}
 



6. Troubleshooting

 

Der HTTP-Fehler 400 Bad Request „Size of a request header field exceeds serverlimit.“ im Internet Explorer lässt sich durch den Eintrag LimitRequestFieldSize 16384 in /etc/apache2/httpd.conf beheben.