Hauptmenü

AD Sync einrichten

Begonnen von Marvin G. - FZJ, 26.10.2020 15:38:04

⏪ vorheriges - nächstes ⏩

Marvin G. - FZJ

Hallo, 

ich versuche gerade, im KIX18 Pro den LDAP-Sync einzurichten. Dafür habe ich Authentication###000-Default angepasst und im Anschluss einen Job eingerichtet. Ich bekomme in den Logs aber immer folgende Meldung: 

backend_1   | Use of uninitialized value in numeric gt (>) at /opt/kix/bin/server/../../plugins/KIXPro/Kernel/System/Automation/MacroAction/Synchronisation/LDAP2Contact.pm line 233.
backend_1   | Use of uninitialized value in string eq at /opt/kix/bin/server/../../plugins/KIXPro/Kernel/System/Automation/MacroAction/Synchronisation/LDAP2Contact.pm line 430.
backend_1   | Use of uninitialized value in string eq at /opt/kix/bin/server/../../plugins/KIXPro/Kernel/System/Automation/MacroAction/Synchronisation/LDAP2Contact.pm line 451.
backend_1   | ERROR: API-14 Perl: 5.24.1 OS: linux Time: Mon Oct 26 15:27:37 2020
backend_1   |
backend_1   |  Message: Need ID!
backend_1   |
backend_1   |  RemoteAddress: ::ffff:172.21.0.5
backend_1   |  RequestURI: /system/automation/jobs/6
backend_1   |
backend_1   |  Traceback (124):
backend_1   |    Module: Kernel::System::Contact::ContactUpdate Line: 659
backend_1   |    Module: KIXPro::Kernel::System::Automation::MacroAction::Synchronisation::LDAP2Contact::_Sync Line: 456
backend_1   |    Module: KIXPro::Kernel::System::Automation::MacroAction::Synchronisation::LDAP2Contact::Run Line: 190
backend_1   |    Module: Kernel::System::Automation::MacroAction::MacroActionExecute Line: 609
backend_1   |    Module: Kernel::System::Automation::Macro::Synchronisation::Run Line: 77
backend_1   |    Module: Kernel::System::Automation::Macro::MacroExecute Line: 603
backend_1   |    Module: Kernel::System::Automation::Job::JobExecute Line: 1000
backend_1   |    Module: Kernel::API::Operation::V1::Automation::JobUpdate::Run Line: 176
backend_1   |    Module: Kernel::API::Operation::V1::Common::RunOperation Line: 177
backend_1   |    Module: Kernel::API::Operation::Run Line: 245
backend_1   |    Module: Kernel::API::Provider::Run Line: 414
backend_1   |    Module: (eval) Line: 31
backend_1   |    Module: (eval) Line: 74
backend_1   |    Module: Plack::Sandbox::_2fopt_2fkix_2fbin_2fserver_2fapp_2epsgi::__ANON__ Line: 73
backend_1   |    Module: CGI::Emulate::PSGI::__ANON__ (v0.22) Line: 30
backend_1   |    Module: Plack::Middleware::StackTrace::try {...}  Line: 38
backend_1   |    Module: (eval) (v0.28) Line: 101
backend_1   |    Module: Try::Tiny::try (v0.28) Line: 94
backend_1   |    Module: Plack::Middleware::StackTrace::call Line: 42
backend_1   |    Module: Plack::Component::__ANON__ Line: 50
backend_1   |    Module: Plack::Middleware::AccessLog::Timed::call Line: 17
backend_1   |    Module: Plack::Component::__ANON__ Line: 50
backend_1   |    Module: Plack::Middleware::Deflater::call (v0.12) Line: 20
backend_1   |    Module: Plack::Component::__ANON__ Line: 50
backend_1   |    Module: Plack::Middleware::Refresh::call Line: 23
backend_1   |    Module: Plack::Component::__ANON__ Line: 50
backend_1   |    Module: Plack::Middleware::Lint::call Line: 24
backend_1   |    Module: Plack::Component::__ANON__ Line: 50
backend_1   |    Module: Plack::Middleware::StackTrace::try {...}  Line: 38
backend_1   |    Module: (eval) (v0.28) Line: 101
 

Leider finde ich nichts dazu und verstehe nicht, warum das so ist. Was genau muss ich Konfigurieren? Welche ID wird benötigt? Ich steh da ein bisschen auf dem Schlauch. 



Zudem wollte ich noch fragen, wie ich mehrere LDAP-Server beim Sync angeben kann? Im Feld "Host" habe ich bisher nur einen Server eintragen können. In der Config von KIX17 und im Authentication###000-Default geht das mit "['ldaps://dc-1.ad.domain.de','ldaps://dc-2.ad.domain.de,'ldaps://dc-3.ad.domain.de']". Das scheint beim Sync aber nicht zu klappen. 

Vielen Dank und viele Grüße 
Marvin

Torsten Thau

Hi Marvin,

sorry - ich glaube Du bist Opfer eines Fehlers den wir eingebaut haben. Der Sync kann in v11 nicht mit Active Directory kommunizieren :-(

Der Fehler ist aber bereits gefixt und wird im kommenden Release behoben sein. Das sollte - wenn alles gut geht - Ende der Woche soweit sein, allerdings haben wir hier gerade einige Krankheitsausfälle zu verzeichnen. Daher hier ein Tipp: wenn Du magst kannst du auch folgende Korrektur kurz selbst vornehmen (ausgehend vom Docker-Host)


[someuser@dockerhost]# docker exec -it --user root kix_backend_1 bash
root@7045fbf0d08a:/opt/kix# apt update
root@7045fbf0d08a:/opt/kix# apt install vim
root@7045fbf0d08a:/opt/kix# vim ./plugins/KIXPro/Kernel/System/Automation/MacroAction/Synchronisation/LDAP2Contact.pm


darin die Zeile 170 so ändern:

So sieht es aus:

    filter  => $Self->{AlwaysFilter} ? "(&(uidNumber=*)$Self->{AlwaysFilter})" : "(uidNumber=*)",


So sollte es aussehen:

    filter  => $Self->{AlwaysFilter} || "$Self->{UID}=*",



Es sollte auch weiterhin möglich sein Arrays von Hosts anzugeben. In Deinem String fehlt ein Hochkomma hinter dem zweiten DC - das kann aber auch nur ein Copy-Paste-Fehler sein. Bitte probiere es wenn die Korrektur oben angewandt und bestätigt oder v12 installiert ist.


CU, Torsten

Marvin G. - FZJ

Hallo Thorsten, 

leider kann ich vim nicht installieren, da er nicht an euren Server kommt: 
root@32d1c42e5b64:/opt/kix# apt update
Err:1 http://security.debian.org/debian-security stretch/updates InRelease                                       
  Could not connect to proxy.intra.cape-it.de:3128 (212.99.203.131), connection timed out
Err:2 http://deb.debian.org/debian stretch InRelease                                                             
  Could not connect to proxy.intra.cape-it.de:3128 (212.99.203.131), connection timed out
Err:3 http://deb.debian.org/debian stretch-updates InRelease
  Unable to connect to proxy.intra.cape-it.de:3128:
Reading package lists... Done
Building dependency tree       
Reading state information... Done
All packages are up to date.
W: Failed to fetch http://deb.debian.org/debian/dists/stretch/InRelease  Could not connect to proxy.intra.cape-it.de:3128 (212.99.203.131), connection timed out
W: Failed to fetch http://security.debian.org/debian-security/dists/stretch/updates/InRelease  Could not connect to proxy.intra.cape-it.de:3128 (212.99.203.131), connection timed out
W: Failed to fetch http://deb.debian.org/debian/dists/stretch-updates/InRelease  Unable to connect to proxy.intra.cape-it.de:3128:
W: Some index files failed to download. They have been ignored, or old ones used instead.
 

Viele Grüße 
Marvin

Marvin G. - FZJ

#3
Hallo, 

ich habe das Ganze jetzt anders gemacht. Ich habe einen anderen Editor als deb in den Container geladen, installiert und die Zeile angepasst. Danach habe ich das Script "restart.sh" genutzt um alles neu zu starten. Leider kommt immer noch das gleiche raus:
backend_1   | Use of uninitialized value in numeric gt (>) at /opt/kix/bin/server/../../plugins/KIXPro/Kernel/System/Automation/MacroAction/Synchronisation/LDAP2Contact.pm line 233.
backend_1   | Use of uninitialized value in string eq at /opt/kix/bin/server/../../plugins/KIXPro/Kernel/System/Automation/MacroAction/Synchronisation/LDAP2Contact.pm line 430.
backend_1   | Use of uninitialized value in string eq at /opt/kix/bin/server/../../plugins/KIXPro/Kernel/System/Automation/MacroAction/Synchronisation/LDAP2Contact.pm line 451.
backend_1   | ERROR: API-14 Perl: 5.24.1 OS: linux Time: Tue Oct 27 11:47:47 2020
backend_1   |
backend_1   |  Message: Need ID!
backend_1   |
backend_1   |  RemoteAddress: ::ffff:172.21.0.4
backend_1   |  RequestURI: /system/automation/jobs/6
backend_1   |
backend_1   |  Traceback (60):
backend_1   |    Module: Kernel::System::Contact::ContactUpdate Line: 659
backend_1   |    Module: KIXPro::Kernel::System::Automation::MacroAction::Synchronisation::LDAP2Contact::_Sync Line: 456
backend_1   |    Module: KIXPro::Kernel::System::Automation::MacroAction::Synchronisation::LDAP2Contact::Run Line: 190
backend_1   |    Module: Kernel::System::Automation::MacroAction::MacroActionExecute Line: 609
backend_1   |    Module: Kernel::System::Automation::Macro::Synchronisation::Run Line: 77
backend_1   |    Module: Kernel::System::Automation::Macro::MacroExecute Line: 603
backend_1   |    Module: Kernel::System::Automation::Job::JobExecute Line: 1000
backend_1   |    Module: Kernel::API::Operation::V1::Automation::JobUpdate::Run Line: 176
backend_1   |    Module: Kernel::API::Operation::V1::Common::RunOperation Line: 177
backend_1   |    Module: Kernel::API::Operation::Run Line: 245
backend_1   |    Module: Kernel::API::Provider::Run Line: 414
backend_1   |    Module: (eval) Line: 31
backend_1   |    Module: (eval) Line: 74
backend_1   |    Module: Plack::Sandbox::_2fopt_2fkix_2fbin_2fserver_2fapp_2epsgi::__ANON__ Line: 73
backend_1   |    Module: CGI::Emulate::PSGI::__ANON__ (v0.22) Line: 30
backend_1   |    Module: Plack::Middleware::StackTrace::try {...}  Line: 38
backend_1   |    Module: (eval) (v0.28) Line: 101
backend_1   |    Module: Try::Tiny::try (v0.28) Line: 94
backend_1   |    Module: Plack::Middleware::StackTrace::call Line: 42
backend_1   |    Module: Plack::Component::__ANON__ Line: 50
backend_1   |    Module: Plack::Middleware::AccessLog::Timed::call Line: 17
backend_1   |    Module: Plack::Component::__ANON__ Line: 50
backend_1   |    Module: Plack::Middleware::Deflater::call (v0.12) Line: 20
backend_1   |    Module: Plack::Component::__ANON__ Line: 50
backend_1   |    Module: Plack::Middleware::Refresh::call Line: 23
backend_1   |    Module: Plack::Component::__ANON__ Line: 50
backend_1   |    Module: Plack::Middleware::Lint::call Line: 24
backend_1   |    Module: Plack::Component::__ANON__ Line: 50
backend_1   |    Module: Plack::Middleware::StackTrace::try {...}  Line: 38
backend_1   |    Module: (eval) (v0.28) Line: 101
 

Viele Grüße 
Marvin

Torsten Thau

Hi,


ok da ist noch der proxy gesetzt im Image, das kannst Du einfach durch  beseitigen



export http_proxy=""
export https_proxy=""
[/font]


Dann klappt auch die Nachinstallation via apt. Ein restart des Containers ist nicht erforderlich. Genauer zerstört er das "vollbrachte Werk". Im Restart werden die Images neu gezogen und die bestehenden ersetzt. Damit ist die manuelle Änderung wieder hin :-/. Probier es bitte nochmal ohne restart und ohne docker pull. Nur die Änderung durchführen speichern und direkt probieren.


CU, Torsten




Marvin G. - FZJ

Hallo, 

vim konnte ich nun installieren. Interessanterweise war die Änderung noch da. Dennoch bekomme ich den gleichen Fehler wie vorher. 

Viele Grüße 
Marvin

Torsten Thau

...oh sorry - mein Fehler. Ich habe nur den Teil docker pull gelesen in restart.sh. Korrekt. Er zieht gar nicht alle Images neu.


Bzgl. des AD-Abgleichs: können wir eine Remote-Support-Sitzung machen? Mich interessiert was da schief läuft.


vG, Torsten

Marvin G. - FZJ

Hallo Torsten, 

ich habe den Termin angenommen und Ihnen noch eine alternative Nummer zu gesendet, unter der Sie mich erreichen können. Sie können sich dann gerne per Teamviewer auf schalten. 

Viele Grüße 
Marvin

Torsten Thau

Der Vollständigkeit halber, der Nachwelt zuliebe und zur Vermeidung von Cliffhangern ohne Ausblick auf die nächste Staffel :-) hier die Zusammenfassung der Situation:

In einer vorherigen Konfiguration wurden bereits zahlreiche Nutzer angelegt. Zu diesen wurden jedoch keine Kontakte erstellt. Die neue Konfiguration hatte damit ein Problem. Die eingeleitete Gegenmaßnahme war die Nutzer direkt in der DB zu löschen.

DELETE FROM users WHERE id > 2;



Danach lief die Kontaktdatensynchronisation durch.

Für die Authentifizierung habe ich hier noch ein Beispiel für Authentication###000-Default zusammengestellt, welches mit einem LDAP redet um Kontakte zu authentifizieren und mit einem Active Directory um Agenten zu authentifizieren (und noch mit KIX als DB-Auth gegen sich selbst). Es zeigt damit auch wie mehre Auth.-Backends eingerichtet werden können.

[
  {
    "Enabled": 1,
    "Module": "Kernel::System::Auth::LDAP",
    "Name": "1st Backend: Customer Contact From LDAP",
    "Config": {
      "AlwaysFilter": "(&(objectclass=person)(mail=*))",
      "BaseDN": "dc=example,dc=com",
      "Charset": "utf-8",
      "Die": 1,
      "Host": "ldap.example.com",
      "Params": {
        "async": 0,
        "port": 389,
        "timeout": 10,
        "version": 3
      },
      "SearchUserDN": "cn=read-only-admin,dc=example,dc=com",
      "SearchUserPw": "password",
      "GroupDN": "dc=customercontacts,dc=example,dc=com",
      "AccessAttr": "memberUid",
      "UID": "uid",
      "UserAttr": "UID",
      "UserSuffix": ""
    },
    "Sync": [
      {
        "Enabled": 1,
        "Module": "Kernel::System::Auth::Sync::LDAP",
        "Config": {
          "ContactUserSync": {
            "Email": "mail",
            "Firstname": "cn",
            "Lastname": "sn",

            "UserLogin": "uid",           
            "IsAgent": "SET:0",
            "IsCustomer": "SET:1",
          },
          "GroupDNBasedRoleSync": {
            "dc=customercontacts,dc=example,dc=com": {
              "Customer": 1
            }
          }
        }
      }
    ]
  },

  {
    "Enabled": 1,
    "Module": "Kernel::System::Auth::LDAP",
    "Name": "2nd Backend: Agent Users from Active Directory (via multiple LDAPS)",
    "Config": {
      "AlwaysFilter": "(&(objectclass=person)(mail=*))",
      "BaseDN": "dc=example,dc=com",
      "Charset": "utf-8",
      "Die": 1,
      "Host": [
          "ldaps://dc1.example.com",
          "ldaps://dc2.example.com"
      ],
      "Params": {
        "async":   0,
        "port":    636,
        "timeout": 10,
        "version": 3
      },
      "SearchUserDN": "cn=read-only-admin,dc=example,dc=com",
      "SearchUserPw": "password",
      "GroupDN": "dc=serviceteam,dc=example,dc=com",
      "AccessAttr": "member",
      "UID": "sAMAccountName",
      "UserAttr": "DN",
      "UserSuffix": ""
    },
    "Sync": [
      {
        "Enabled": 1,
        "Module": "Kernel::System::Auth::Sync::LDAP",
        "Config": {
          "ContactUserSync": {
            "Email": "mail",
            "Title": "title",
            "Firstname": "givenname",
            "Lastname": "sn",
            "Street": "streetAddress",
            "City": "l",
            "Zip": "postalCode",
            "Phone": "homePhone",
            "Mobile": "mobile",
            "Fax": "facsimileTelephoneNumber",

            "UserLogin":  "sAMAccountName",
            "IsAgent":    "SET:1",
            "IsCustomer": "SET:0"
          },
          "GroupDNBasedRoleSync": {
            "dc=serviceteam,dc=example,dc=com": {
              "Agent User": 1,
              "Ticket Agent": 1,
              "Asset Maintainer": 1,
              "Customer Manager": 1,
              "FAQ Editor": 1
            }
          },
          "AttributeBasedRoleSync": {
            "sAMAccountName": {
              "m.mustermann": {
                "Superuser": 1
              }
            }
          }
        }
      }
    ]
  },

  {
    "Enabled": 1,
    "Module": "Kernel::System::Auth::DB",
    "Name": "Local Database",
    "Config": {
      "CryptType": "sha2"
    }
  }

]




CU, Torsten