[SOLVED] SSO Problem User: No $ENV{REMOTE_USER}

Hilfe zu Znuny Problemen aller Art
Locked
locksmith
Znuny newbie
Posts: 8
Joined: 12 Oct 2009, 11:58
Znuny Version: 2.2.7

[SOLVED] SSO Problem User: No $ENV{REMOTE_USER}

Post by locksmith »

Hallo zusammen,

nach zwei Tagen Recherche und lesen zahlloser Threads hoffe ich nun das mir jemand helfen kann.

Ich setze OTRS 3.3.8 auf einem Ubuntu Server sein und möchte SingleSignOn für das CustomerBackend konfigurieren.
LDAP Login mit Eingabe von Benutzername und Passwort funktioniert schon einwandfrei.

Auf dem Linux Server möchte ich das Single Sign On mit Kerberos einsetzen und bin nach folgender Anleitung vorgegangen:
http://otrshowto.blogspot.de/ Single-Sign-On (SSO) für die OTRS-Weboberfläche

Eine Anmeldung an der OTRS Customer Oberfläche ohne Passworteingabe funktioniert nicht. Fehlermeldung dort "Anmeldung fehlgeschlagen! Benutzername oder Passwort wurden falsch eingegeben.".
Ich denke der wahre Grund findet sich in der otrs.log

Code: Select all

[Tue Oct 14 13:57:48 2014][Notice][Kernel::System::CustomerAuth::HTTPBasicAuth::Auth] User: No $ENV{REMOTE_USER} or $ENV{HTTP_REMOTE_USER} !(REMOTE_ADDR: x.x.x.x).
Irgendwie schafft es die kerberos authentifizierung nicht die User Daten an das OTRS CustomerAuth zu übergeben.
Die URL ist im InternetExplorer unter den LokalenSites eingetragen.

Meine ApacheConfig:

Code: Select all

<Directory "/opt/otrs/bin/cgi-bin/">
    Options +ExecCGI -Includes
    AllowOverride None
    Order allow,deny
    Allow from all
    AuthType Kerberos
    AuthName "OTRS"
    Krb5Keytab /etc/apache2/otrsserver.keytab
    KrbAuthRealm DOMAIN.NET
    KrbMethodNegotiate on
    KrbSaveCredentials on
    KrbMethodK5Passwd on
    KrbServiceName HTTP
    Require valid-user
    KrbLocalUserMapping on   <- nicht aus der Doku. Auch wenn es fehlt macht es keinen Unterschied.
   

    <IfModule mod_version.c>
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
    </IfModule>
    <IfModule !mod_version.c>
        Order allow,deny
        Allow from all
    </IfModule>

    <IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE text/html text/javascript text/css text/xml application/json text/json
    </IfModule>
</Directory>
Meine Config.pm:

Code: Select all

 # This is an example configuration for an LDAP auth. backend.
    # (take care that Net::LDAP is installed!)
   $Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::LDAP';
   $Self->{'Customer::AuthModule::LDAP::Host'} = 'server.doamin.net';
   $Self->{'Customer::AuthModule::LDAP::BaseDN'} = 'dc=DOMAIN,dc=NET';
   $Self->{'Customer::AuthModule::LDAP::UID'} = 'sAMAccountName';
   $Self->{'Customer::AuthModule::LDAP::GroupDN'} = 'CN=gruppe,OU=ou1,OU=ou2,DC=DOMAIN,DC=NET';
    $Self->{'Customer::AuthModule::LDAP::AccessAttr'} = 'member';
     $Self->{'Customer::AuthModule::LDAP::UserAttr'} = 'DN';
     $Self->{'Customer::AuthModule::LDAP::SearchUserDN'} = 'otrs@DOMAIN.NET';
    $Self->{'Customer::AuthModule::LDAP::SearchUserPw'} = 'password';
     $Self->{'Customer::AuthModule::LDAP::Params'} = {
       port    => 389,
        timeout => 120,
       async   => 0,
       version => 3,
        inet4 => 1,
   };


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


# (customer user ldap backend and settings)
    $Self->{CustomerUser} = {
        Name => 'LDAP Backend',
        Module => 'Kernel::System::CustomerUser::LDAP',
        Params => {

            Host => 'server.domain.net',

            BaseDN => 'DC=DOMAIN,DC=NET',

            SSCOPE => 'sub',

            UserDN => 'otrs@DOMAIN.NET',
            UserPw => 'password',

            AlwaysFilter => '(&(objectCategory=person)(objectClass=user))',

            SourceCharset => 'utf-8',
            DestCharset   => 'utf-8',
	    Params => {
                port    => 389,
                timeout => 120,
                async   => 0,
                version => 3,
                inet4 => 1,
            },
        },


 # customer unique id
        CustomerKey => 'sAMAccountName',

        CustomerID => 'mail',
        CustomerUserListFields => ['givenname', 'sn', 'sAMAccountName','cn', 'mail'],
        CustomerUserSearchFields => ['givenname', 'sn', 'sAMAccountName','cn', 'mail'],
        CustomerUserSearchListLimit => 250,
        CustomerUserPostMasterSearchFields => ['mail'],
        CustomerUserNameFields => ['givenname', 'sn'],
        Map => [

            [ 'UserTitle',      'Title',      'title',           1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'sAMAccountName',             1, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email',      'mail',            1, 1, 'var', '', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'mail',            0, 1, 'var', '', 0 ],
            [ 'UserPhone',      'Phone',      'telephonenumber', 1, 0, 'var', '', 0 ],
	    [ 'UserDepartment', 'Department', 'department',      1, 0, 'var', '', 0],
            [ 'UserAddress',    'Address',    'l',   1, 0, 'var', '', 0 ],
        ],
    };
Die Kerberos Authentifizierung an sich scheint zu funktionieren. Dies habe ich mit folgendem Befehl getestet
kinit -VV -k -t /etc/apache2/otrsserver.keytab HTTP/server.domain.net@DOMAIN.NET

Ich bin mir aber nicht sicher ob den die Kerberos Konfig aus der APACHE Konfiguration für das Verzeichnis /opt/otrs/bin/cgi-bin/ zieht.
Davon gehe ich einfach mal aus.

Wie kann ich den Fehler in der OTRS.LOG beheben?

Vielen Dank für eure Hilfe!
Last edited by locksmith on 20 Oct 2014, 13:11, edited 1 time in total.
wrathbane
Znuny newbie
Posts: 23
Joined: 24 Apr 2014, 09:48
Znuny Version: 3.3.5

Re: SSO Problem User: No $ENV{REMOTE_USER}

Post by wrathbane »

Habe genau das selber Problem, gleiche OTRS-Version und unter Linux (in meinem Fall ist es Gentoo)
Hatte vor ein paar Tagen ebenfalls einen Thread eröffnet und bisher hat noch niemand eine Lösung geschrieben. LDAP funktioniert nur SSO nicht, gleiche Fehlermeldung.

Wäre dir sehr dankbar, falls du eine Lösung findest, wenn du sie hier in den thread rein posten könntest.

Was ich mir letztens noch angeschaut habe waren die Perl-Module von Kerberos, schau mal mit dem Befehl
"perl -e shell -MCPAN" ob du die benötigten krb5 module hast. Sollte sich die perl shell öffnen versuche es mal mit "i /krb5/" , das ist der suchbefehl in dieser Shell. Ansonsten bin ich ebenfalls ziemlich ratlos
OTRS 3.3.5 ITSM
MySQL DB
Gentoo Linux
locksmith
Znuny newbie
Posts: 8
Joined: 12 Oct 2009, 11:58
Znuny Version: 2.2.7

Re: SSO Problem User: No $ENV{REMOTE_USER}

Post by locksmith »

wrathbane wrote:Habe genau das selber Problem, gleiche OTRS-Version und unter Linux (in meinem Fall ist es Gentoo)
Hatte vor ein paar Tagen ebenfalls einen Thread eröffnet und bisher hat noch niemand eine Lösung geschrieben. LDAP funktioniert nur SSO nicht, gleiche Fehlermeldung.

Wäre dir sehr dankbar, falls du eine Lösung findest, wenn du sie hier in den thread rein posten könntest.

Was ich mir letztens noch angeschaut habe waren die Perl-Module von Kerberos, schau mal mit dem Befehl
"perl -e shell -MCPAN" ob du die benötigten krb5 module hast. Sollte sich die perl shell öffnen versuche es mal mit "i /krb5/" , das ist der suchbefehl in dieser Shell. Ansonsten bin ich ebenfalls ziemlich ratlos
Hast du diese PerlModule installiert?

Ich denke aber nicht das es daran liegt, denn ich gebe ja explizit das Apache Modul für die Konfiguration an und kein Perl Modul. Desweiteren ist die Vetrauensstellung zum ActiveDirectory ja vorhanden (Test mit kinit).
Ich denke eher das ich noch irgendetwas gemacht werden muss um ein Mapping des User der über Kerberos kommt und dem Customer::Auth herzustellen. Aber ob das in der Apache Konfig passieren muss oder ob ich in der OTRS config.pm noch was falsch habe, keine Ahnung.
wrathbane
Znuny newbie
Posts: 23
Joined: 24 Apr 2014, 09:48
Znuny Version: 3.3.5

Re: SSO Problem User: No $ENV{REMOTE_USER}

Post by wrathbane »

War auch eher so ne "Verzweiflungs" Vermutung, hab ca 5 oder 6 howto´s versucht, hat nie funktioniert.
Ich hab so das Gefühl das man unter Linux noch zusätzlich etwas konfigurieren muss. An deinen Configs sehe ich jetzt auf die schnelle keinen Fehler,
Hab das gleiche wie du mit dem gleichen Howto das du gepostet hast versucht, ebenfalls ohne Erfolg. Hab auch schon von vielen Linux Usern gehört die
an der gleichen Stelle Probleme haben. Wie du gesagt hast, das fehlt wahrscheinlich die Übergabe aber laut den Guides sind die Configs richtig.
OTRS 3.3.5 ITSM
MySQL DB
Gentoo Linux
Rooobaaat
Znuny wizard
Posts: 432
Joined: 11 Sep 2014, 16:28
Znuny Version: OTRS 5.0.x

Re: SSO Problem User: No $ENV{REMOTE_USER}

Post by Rooobaaat »

Wie schaut denn eure WebServer-Konfiguration aus? Habt ihr 'auth_basic' im Webserver auch konfiguriert?
My english is better than your german :P

"Produktiv": OTRS: 5.0.x, OTRS::ITSM 5.0.x
"Testing": OTRS 6 git
OS: Debian 8.0 (Jessie)
Apache2.4.10/MySQL 5.5.41
locksmith
Znuny newbie
Posts: 8
Joined: 12 Oct 2009, 11:58
Znuny Version: 2.2.7

Re: SSO Problem User: No $ENV{REMOTE_USER}

Post by locksmith »

Hallo Rooobaaat,

danke für deine Antwort.

Meine ApacheConfig sieht so aus:

Code: Select all

<Directory "/opt/otrs/bin/cgi-bin/">
    Options +ExecCGI -Includes
    AllowOverride None
    Order allow,deny
    Allow from all
    AuthType Kerberos
    AuthName "OTRS"
    Krb5Keytab /etc/apache2/otrsserver.keytab
    KrbAuthRealm DOMAIN.NET
    KrbMethodNegotiate on
    KrbSaveCredentials on
    KrbMethodK5Passwd on
    KrbServiceName HTTP
    Require valid-user
    KrbLocalUserMapping on   <- nicht aus der Doku. Auch wenn es fehlt macht es keinen Unterschied.
   

    <IfModule mod_version.c>
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
    </IfModule>
    <IfModule !mod_version.c>
        Order allow,deny
        Allow from all
    </IfModule>
So wird das auch in allen Tutorials beschrieben. Zum Beispiel hier: http://otrshowto.blogspot.de/

An welcher Stelle in der Apache Konfig soll ich denn die auth_basic noch hinzufügen? Hast du da einen Vorschlag? Bzw. wie machst du das?
Rooobaaat
Znuny wizard
Posts: 432
Joined: 11 Sep 2014, 16:28
Znuny Version: OTRS 5.0.x

Re: SSO Problem User: No $ENV{REMOTE_USER}

Post by Rooobaaat »

a2enmod auth_basic fällt mir da spontan ein. Hab allerdings auch noch nie SSO für OTRS implementiert.
My english is better than your german :P

"Produktiv": OTRS: 5.0.x, OTRS::ITSM 5.0.x
"Testing": OTRS 6 git
OS: Debian 8.0 (Jessie)
Apache2.4.10/MySQL 5.5.41
locksmith
Znuny newbie
Posts: 8
Joined: 12 Oct 2009, 11:58
Znuny Version: 2.2.7

Re: SSO Problem User: No $ENV{REMOTE_USER}

Post by locksmith »

Rooobaaat wrote:a2enmod auth_basic fällt mir da spontan ein. Hab allerdings auch noch nie SSO für OTRS implementiert.
Das aktiviert das Modul. Das ist natürlich gemacht....
jojo
Znuny guru
Posts: 15020
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Re: SSO Problem User: No $ENV{REMOTE_USER}

Post by jojo »

Der Browser übermittelt den user nicht.
"Production": OTRS™ 8, OTRS™ 7, STORM powered by OTRS
"Testing": ((OTRS Community Edition)) and git Master

Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
locksmith
Znuny newbie
Posts: 8
Joined: 12 Oct 2009, 11:58
Znuny Version: 2.2.7

Re: SSO Problem User: No $ENV{REMOTE_USER}

Post by locksmith »

jojo wrote:Der Browser übermittelt den user nicht.
Deine Vermutung kann natürlich stimmen.

Ich kriege es aber weder im Firefox noch im InternetExplorer hin. Wir haben einige Webapplikationen, Liferay, Icinga etc. Bei denen wir SSO nutzen. Auch jeweils mit einem Apache.
Dort reicht es immer die jeweiligen URL, in diesem Fall die OTRS URL, zu den "Loaklen Intranet" Sites hinzuzufügen.

Siehe bild in diesem Post.

Im Firefox weiß ich das ich die Url mit dem Befehl "about:config" in den Parameter "network.negotiate-auth.trusted-uris" übernehmen muss.
Auch das ist gemacht.

Hast du noch einen Tipp, was ich im Browser machen muss?

Desweiteren ist mir überaupt unklar wie denn der Benutzer- und Passwort übergeben werden soll. Das mod_auth_kerb stellt ja nur ein Authentifizierungsticket aus das dann eben den Zugriff erlaubt oder eben auch nicht. Das Mapping zu Benutzer und Passwort hat damit gar nichts zu tun. Das muss dann irgendwo auf OTRS Ebene passieren.
Wie genau das funktioniert kann ich leider nirgends finden.
You do not have the required permissions to view the files attached to this post.
locksmith
Znuny newbie
Posts: 8
Joined: 12 Oct 2009, 11:58
Znuny Version: 2.2.7

Re: SSO Problem User: No $ENV{REMOTE_USER}

Post by locksmith »

ich werd verrückt es funktioniert nun! :D :D

Es lag nicht am Browser und nicht an OTRS. Ich habe etwas in meiner Apache Konfig aufgeräumt und alle unnötigen Kommentaren entfernt.
Zusäztlich habe ich noch folgende Zeilen hinzugefügt:

Code: Select all

<Directory /otrs>
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
        AuthType Kerberos
        AuthName "OTRS"
        Krb5Keytab /etc/apache2/otrstab.keytab
        KrbAuthRealm DOMAIN.NET
        KrbMethodNegotiate on
        KrbSaveCredentials on
        KrbMethodK5Passwd on
        KrbServiceName HTTP
        Require valid-user
        KrbLocalUserMapping on
</Directory>
Außerdem habe ich folgende Zeilen auskommentiert:

Code: Select all

#    <IfModule mod_version.c>
#        <IfVersion < 2.4>
#            Order allow,deny
#            Allow from all
#        </IfVersion>
#        <IfVersion >= 2.4>
#            Require all granted
#        </IfVersion>
#    </IfModule>
#    <IfModule !mod_version.c>
#        Order allow,deny
#        Allow from all
#    </IfModule>
#
#    <IfModule mod_deflate.c>
#        AddOutputFilterByType DEFLATE text/html text/javascript text/css text/xml application/json text/json
#    </IfModule>
Ich werde in den nächsten Tagen noch etwas herumprobieren, was es nun wirklich war und hier nocheinmal bescheid geben. Ich vermute aber das ich in eine dieser IF Abfragen geraten bin und deswegen meine Konfig gar nicht erst gezogen hat.
Locked