Ansicht von 6 Antwort-Themen
  • Autor
    Beiträge
    • #12153
      Tobias Schöllmann
      Teilnehmer

        Otobo-Version: Branch rel 10-1
        Otobo Installationsart: Docker

        Hallo zusammen, ich habe vor kurzem die Installation von Otobo über Docker https-kerberos erfolgreich abgeschlossen. Ich bin aktuell dabei unser Active Directory in Otobo zu integrieren. Die LDAP Authentifizierung funktioniert dabei einwandfrei. Nun möchte ich zusätzlich die Möglichkeit haben, dass unsere Nutzer den Anmeldebildschirm mit Hilfe von Single Sign On überspringen können.

        Die Keytab Datei habe ich über unseren Domain Controller erstellt und in der Otobo VM mit erfolg getestet. Zusätzlich habe ich die /etc/krb5.conf entsprechend angepasst.
        (Quelle: http://otrshowto.blogspot.com/)

        Beim erstellen der Docker .env habe ich neben der in der Anleitung angegeben Werte, folgendes angepasst:

        OTOBO_NGINX_SSL_CERTIFICATE=/etc/nginx/ssl/nginx-selfsigned.crt
        OTOBO_NGINX_SSL_CERTIFICATE_KEY=/etc/nginx/ssl/nginx-selfsigned.key

        # Kerberos Options
        # Kerberos keytab
        OTOBO_NGINX_KERBEROS_KEYTAB=/opt/otobo-docker/nginx-conf/krb5.keytab

        # Kerberos config
        OTOBO_NGINX_KERBEROS_CONFIG=/opt/otobo-docker/nginx-conf/krb5.conf

        # Kerberos Service Name
        OTOBO_NGINX_KERBEROS_SERVICE_NAME=HTTP/OTOBO-SERVER@UNSERE.DOMAIN

        # Kerberos REALM
        OTOBO_NGINX_KERBEROS_REALM=UNSERE.DOMAIN

        # Kerberos kdc / AD Controller
        OTOBO_NGINX_KERBEROS_KDC=AD-CONTROLLER-DNS-NAME

        # Kerberos Admin Server
        OTOBO_NGINX_KERBEROS_ADMIN_SERVER=AD-CONTROLLER-DNS-NAME

        # Kerberos Default Domain
        OTOBO_NGINX_KERBEROS_DEFAULT_DOMAIN=UNSERE.DOMAIN

        Nun habe ich folgendes Problem:

        Ich habe in die Config.pm zusätzlich zu der LDAP Auth folgendes Modul hinzugefügt:
        (Quelle: https://doc.otrs.com/doc/manual/admin/6.0/en/html/external-backends.html#agent-auth-backend-httpbasic)

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

        Wenn ich nun die Customer Login Seite aufrufe. Kommt direkt die Meldung “Benutzername oder Kennwort falsch”
        im log steht folgendes:

        web_1 | ERROR: OTOBO-CGI-54 Perl: 5.32.1 OS: linux Time: Tue Nov 23 14:29:37 2021
        web_1 |
        web_1 | Message: Need Key!
        web_1 |
        web_1 | RemoteAddress: <MEINE IP-ADRESSE>
        web_1 | RequestURI: /otobo/customer.pl
        web_1 |
        web_1 | Traceback (18):
        web_1 | Module: Kernel::System::Cache::Get Line: 295
        web_1 | Module: Kernel::System::Web::InterfaceCustomer::_StoreFailedLogins Line: 1510
        web_1 | Module: Kernel::System::Web::InterfaceCustomer::Run Line: 354
        web_1 | Module: Plack::Sandbox::_2fopt_2fotobo_2fbin_2fpsgi_2dbin_2fotobo_2epsgi::__ANON__ Line: 587
        web_1 | Module: CGI::Emulate::PSGI::__ANON__ (v0.23) Line: 30
        web_1 | Module: Plack::Middleware::HTTPExceptions::try {…} Line: 20
        web_1 | Module: (eval) (v0.30) Line: 100
        web_1 | Module: Try::Tiny::try (v0.30) Line: 93
        web_1 | Module: Plack::Middleware::HTTPExceptions::call Line: 23
        web_1 | Module: Plack::Component::__ANON__ Line: 50
        web_1 | Module: Plack::Sandbox::_2fopt_2fotobo_2fbin_2fpsgi_2dbin_2fotobo_2epsgi::__ANON__ Line: 393
        web_1 | Module: Plack::Sandbox::_2fopt_2fotobo_2fbin_2fpsgi_2dbin_2fotobo_2epsgi::__ANON__ Line: 318
        web_1 | Module: Plack::Middleware::ForceEnv::call (v0.02) Line: 18
        web_1 | Module: Plack::Component::__ANON__ Line: 50
        web_1 | Module: Plack::Middleware::ReverseProxy::call (v0.16) Line: 68
        web_1 | Module: Plack::Component::__ANON__ Line: 50
        web_1 | Module: Plack::Middleware::Conditional::call Line: 16
        web_1 | Module: Plack::Component::__ANON__ Line: 50
        web_1 | Module: Plack::Middleware::ErrorDocument::call Line: 15
        web_1 | Module: Plack::Component::__ANON__ Line: 50
        web_1 | Module: Plack::App::URLMap::call Line: 71
        web_1 | Module: Plack::Component::__ANON__ Line: 50
        web_1 | Module: Plack::Middleware::Conditional::call Line: 16
        web_1 | Module: Plack::Component::__ANON__ Line: 50
        web_1 | Module: Plack::Sandbox::_2fopt_2fotobo_2fbin_2fpsgi_2dbin_2fotobo_2epsgi::__ANON__ Line: 358
        web_1 | Module: (eval) Line: 145
        web_1 | Module: Plack::Util::run_app Line: 145
        web_1 | Module: Plack::Handler::Gazelle::__ANON__ (v0.49) Line: 220
        web_1 | Module: Parallel::Prefork::start (v0.18) Line: 75
        web_1 | Module: Plack::Handler::Gazelle::run (v0.49) Line: 237

        Welcher Key ist hier gemeint? Ich kann mit dem Fehler im Log leider nichts anfangen.

         

      • #12158
        Andreas Erhard
        Teilnehmer

          Hallo Tobias,

          kannst Du bitte mal schauen, ob der NGINX bei Dir überhaupt Kerberos aktiviert hat?
          Ich stehe aktuell vor einem ähnlichen Problem und versuche aktuell OTOBO unter Docker mit Kerberos zum Laufen zu bekommen.

          Vielleicht hilft dir mein Post hier etwas weiter:

          Weil ich auch einen kleinen Bug gefunden habe, habe ich zusätzlich ein Issue eröffnet:
          https://github.com/RotherOSS/otobo-docker/issues/81

           

          Viele Grüße
          Andreas

          • #12160
            Tobias Schöllmann
            Teilnehmer

              Hallo Andreas, danke für die Antwort.

              Ich hatte auch schon mal getestet in die /etc/nginx/nginx.conf* mal die Zeilen einzutragen, die du in deinem Post geschrieben hast.

              *Nicht in die /etc/nginx/conf.d/otobo_nginx.conf.Sonst werden die Zeilen nach einem nginx Neustart wieder in die Default Einstellungen geändert (auskommentiert)!

              location / {

              # Example to use Kerberos SSO
              # proxy_set_header REMOTE_USER $remote_user;
              auth_gss on;
              auth_gss_keytab ${OTOBO_NGINX_KERBEROS_KEYTAB};
              auth_gss_service_name HTTP/server.MY.DOMAIN;
              auth_gss_realm MY.DOMAIN;
              auth_gss_allow_basic_fallback on;
              # EO Kerberos SSO Example

              Kopie von: https://otobo.de/de/forums/topic/installation-ueber-docker-bricht-beim-mounten-der-krb5-conf-datei-ab/

              Dabei hat aber die Umgebungsvariable “${OTOBO_NGINX_KERBEROS_KEYTAB};” nicht funktioniert. Ich habe dann mal getestet den absoluten Pfad (etc/krb5.keytab) anzugeben. Beim Öffnen wurde mir dann von Google Chrome bzw. MS Edge ein Popup angezeigt, wo ich einen Benutzernamen und ein Passwort eingeben konnte. Das Passwort und der Benutzername wurde auch akzeptiert und aufgelöst. Nach der Eingabe war ich allerdings wieder im Customer Login, wo mir erneut “Benutzername oder Passwort falsch” angezeigt wurde.

              https://otobo.de/wp-content/uploads/hm_bbpui/12160/24ewusmamg21d2adeh981cxh9t95i71f.png

              https://otobo.de/wp-content/uploads/hm_bbpui/12160/6f1f1fcx1vyjmii2rgd644qil8v4z9b3.png

               

          • #12182
            alexander-fuhr
            Teilnehmer

              Hallo Tobias,

              wie hast Du geschafft die Datei /etc/nginx/nginx.config zu überschreiben? Die Änderungen werden bei mir nach nginx reboot wieder zurückgesetzt. Hast Du zufällig schon einen Lösung gefunden?

              Grüß

              Alexander

               

              • #12188
                Tobias Schöllmann
                Teilnehmer

                  Hallo Alexander, ich habe bis jetzt noch keine Lösung für Single Sign On gefunden.

                  Die /etc/nginx/nginx.conf wird bei mir nach einem Neustart nicht zurückgesetzt. Das passiert bei mir nur bei der /etc/nginx/conf.d/otobo_nginx.conf.

                  Ich habe folgenden Teil aus der /etc/nginx/conf.d/otobo_nginx.conf kopiert:

                  … und in die /etc/nginx/nginx.conf eingefügt. Danach habe ich noch den genauen Pfad der krb5.keytab angegeben, weil die Umgebungsvariable nicht funktioniert hat und vor dem auth_gss-Teil das “#” entfernt:

                  Nach der Änderung habe ich Nginx mit dem Befehl: docker restart otobo_nginx_1 neu gestartet. Die Datei wurde dabei nicht zurückgesetzt.

                  Ich habe bis jetzt auch noch keine Dokumentation oder Anleitung gefunden, wo die Konfiguration von Single Sign On  vollständig erklärt wurde.

              • #12192
                bes
                Teilnehmer

                  Bei der Konfiguration von SSO mit Kerberos gibt es anscheinend mehrere Probleme. Die Sache mit OTOBO_NGINX_KERBEROS_KEYTAB ist besonders komisch. Ich habe das mal als Issue angelegt und forsche da bei Gelegenheit nach. Siehe https://github.com/RotherOSS/otobo/issues/1462 .

                  Ansonsten gibt es da noch das Issue https://github.com/RotherOSS/otobo-docker/issues/81, in dem ich aus meiner Sicht die nächsten Schritte eingepflegt habe.

                  Ich selber habe keine Erfahrung mit Kerberos. Deshalb stellt sich mir dir Frage ob man neben /etc/nginx/conf.d/otobo_nginx.conf noch andere Dateien anpassen muss. Wie sind da die Erfahrungen?

                  Viele Grüße,

                  Bernhard

                   

                • #12201
                  Tobias Schöllmann
                  Teilnehmer

                    Hallo Bernhard,

                    ich habe das Projekt erstmal pausiert, bis eine offizielle Anleitung oder ein Fix für das Problem veröffentlicht wurde (Ich hoffe das dazu in kürze etwas erscheint, wegen den Issues auf Github).

                    Ggf. setze ich den Server dann erneut auf.

                    Angepasst habe ich folgende Dateien (wie gesagt, ohne Erfolg. Es kann sehr wahrscheinlich sein, dass mir hier schon ein grober Fehler unterlaufen ist. Ich bin absoluter Anfänger was Docker, Kerberos und Otobo betrifft):

                    • krb5.keytab erstellt und auf Otobo Server übertragen (mit FTP nach /etc) -> PowerShell auf dem DC öffnen und folgenden Befehl nach euren Vorgaben eingeben:
                      ktpass -princ HTTP/OTOBO-SERVER-HOSTNAME@UNSERE-DOMAIN -mapuser AD-BENUTZER@UNSERE-DOMAIN -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -mapop set -pass AD-BENUTZER-PASSWORT -out c:\temp\krb5.keytab
                    • /etc/krb5.conf  angepasst (Schritt 3): http://otrshowto.blogspot.com/ 
                    • .env Datei angepasst wie oben beschrieben
                    • LDAP nach dieser Anleitung integriert: http://www.nerd.junetz.de/blogbox/index.php?/archives/613-OTRS-Anbindung-ans-Active-Directory.html
                    • HTTPBasicAuth in der Config.pm aktiviert (im Docker Container otobo_web_1) :
                      $Self->{‘Customer::AuthModule’} = ‘Kernel::System::CustomerAuth::HTTPBasicAuth’;
                      $Self->{‘Customer::AuthModule::HTTPBasicAuth::ReplaceRegExp’} =’@UNSERE.DOMAIN’;
                    • Nach Installation im Nginx Docker Container (otobo_nginx_1) die /etc/nginx/nginx.conf wie auf den Bildern gezeigt.

                    Über den Shell Befehl docker exec -it CONTAINERNAME /bin/bash kommt man in die Console des Containers falls diese Info jemand benötigt.

                  • #12203
                    bes
                    Teilnehmer

                      Hallo Tobias,

                      ja, das klingt nachvollziehbar. Von meiner Seite kann ich ein paar Stolpersteine in Bezug auf Docker und Docker Compose wegräumen. Aber Kerberos selbst habe ich noch nicht konfiguriert. Da muss dann jemand ran, der das schon öfter gemacht hat.

                      Viele Grüße,

                      Bernhard

                       

                    • #13933
                      Stefan Rother
                      Administrator

                        Hi,

                        endlich bin ich dazu gekommen die Doku zu verfassen. So wie hier hinterlegt, habe ich schon einige Systeme konfiguriert:

                        https://doc.otobo.org/manual/installation/10.1/en/content/sso-kerberos.html

                        Schöne Grüße,

                        Stefan Rother

                        Team OTOBO

                        • #14295
                          Tobias Schöllmann
                          Teilnehmer

                            Hallo Stefan,

                            danke für die Dokumentation.

                            Ich habe allerdings noch eine Frage dazu:

                            Bei dem Schritt “Create a new Volume for your custom nginx configuration” soll im letzten Schritt des ersten Absatzes der Befehl vim docker-compose/otobo-nginx-custom-config.yml aufgeführt werden. In welchem Pfad befindet sich die Datei?

                            Unter /opt/otobo-docker/docker-compose/ befindet sich eine otobo-nginx-custom-config.yml wo bereits einige Parameter drin stehen. Soll dieser Teil:

                            COMPOSE_FILE =>
                            docker-compose/otobo-nginx-custom-config.yml
                            NGINX_ENVSUBST_TEMPLATE_DIR=/etc/nginx/config/template-custom

                            Dort angehangen werden oder soll die Datei ersetzt werden?

                             

                      Ansicht von 6 Antwort-Themen
                      • Du musst angemeldet sein, um auf dieses Thema antworten zu können.