LDAP-Anbindung - Beginner

Allgemein Fragen, deutsche News, Ankündigungen & Events zum OTRS
Post Reply
Manfred89
Znuny newbie
Posts: 53
Joined: 14 Jun 2023, 21:44
Znuny Version: 6.5.8
Real Name: Manfred

LDAP-Anbindung - Beginner

Post by Manfred89 »

Hey Leute,

da ich irgendwann mal den Znuny Server übernehmen soll und noch totaler Anfänger bin, habe ich versucht mir einen Server selber aufzusetzen

Znuny:6.5.3 (und mit 6.0.48 getestet)
Debian 5.10

Ich habe die Grundinstallation abgeschlossen und kann mich mit root@localhost auf "http://IP-Adresse/otrs/index.pl" anmelden.
Mail Konfiguration habe ich erstmal übersprungen.

Jetzt habe ich einen Testuser eingerichtet und dem Adminrechte verpasst. Mit diesem kann ich mich jedoch nicht im customer.pl anmelden...
Zudem kommt mein eigentliches Problem...
Ich habe versucht eine LDAP-Anbindung durchzuführen, damit mehrere hundert User im customer.pl sich an dem System anmelden können, ohne dass ich die Accounts selber erstellen muss.

Normal müsste ich doch nur vom funktionierenden Server die /opt/otrs/Kernel/Config.pm kopieren und bei mir einfügen bzw. folgenden Inhalt:

Code: Select all

# --
# Kernel/Config.pm - Config file for OTRS kernel
# Copyright (C) 2001-2015 xxx, http://otrs.com/
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (AGPL). If you
# did not receive this file, see http://www.gnu.org/licenses/agpl.txt.
# --
#  Note:
#
#  -->> Most OTRS configuration should be done via the OTRS web interface
#       and the SysConfig. Only for some configuration, such as database
#       credentials and customer data source changes, you should edit this
#       file. For changes do customer data sources you can copy the definitions
#       from Kernel/Config/Defaults.pm and paste them in this file.
#       Config.pm will not be overwritten when updating OTRS.
# --

package Kernel::Config;

use strict;
use warnings;
use utf8;

sub Load {
    my $Self = shift;

    # ---------------------------------------------------- #
    # database settings                                    #
    # ---------------------------------------------------- #

    # The database host
    $Self->{'DatabaseHost'} = '127.0.0.1';

    # The database name
    $Self->{'Database'} = "otrsdb";

    # The database user
    $Self->{'DatabaseUser'} = "otrs";

    # The password of database user. You also can use bin/otrs.CryptPassword.pl
    # for crypted passwords
    $Self->{'DatabasePw'} = 'Passwort';

    # The database DSN for MySQL ==> more: "perldoc DBD::mysql"
    $Self->{'DatabaseDSN'} = "DBI:mysql:database=$Self->{Database};host=$Self->{DatabaseHost}";

    # The database DSN for PostgreSQL ==> more: "perldoc DBD::Pg"
    # if you want to use a local socket connection
#    $Self->{DatabaseDSN} = "DBI:Pg:dbname=$Self->{Database};";
    # if you want to use a TCP/IP connection
#    $Self->{DatabaseDSN} = "DBI:Pg:dbname=$Self->{Database};host=$Self->{DatabaseHost};";

    # The database DSN for Microsoft SQL Server - only supported if OTRS is
    # installed on Windows as well
#    $Self->{DatabaseDSN} = "DBI:ODBC:driver={SQL Server};Database=$Self->{Database};Server=$Self->{DatabaseHost},1433";

    # The database DSN for Oracle ==> more: "perldoc DBD::oracle"
#    $Self->{DatabaseDSN} = "DBI:Oracle://$Self->{DatabaseHost}:1521/$Self->{Database}";
#
#    $ENV{ORACLE_HOME}     = '/path/to/your/oracle';
#    $ENV{NLS_DATE_FORMAT} = 'YYYY-MM-DD HH24:MI:SS';
#    $ENV{NLS_LANG}        = 'AMERICAN_AMERICA.AL32UTF8';

    # ---------------------------------------------------- #
    # fs root directory
    # ---------------------------------------------------- #
    $Self->{Home} = '/opt/otrs';

    # ---------------------------------------------------- #
    # insert your own config settings "here"               #
    # config settings taken from Kernel/Config/Defaults.pm #
    # ---------------------------------------------------- #
    # $Self->{SessionUseCookie} = 0;
    # $Self->{CheckMXRecord} = 0;

    # ---------------------------------------------------- #

    # ---------------------------------------------------- #
    # data inserted by installer                           #
    # ---------------------------------------------------- #
    # $DIBI$
# CustomerUser
# (customer ldap backend and settings)
$Self->{CustomerUser} = {
    Name => 'LDAP Datenbank',
    Module => 'Kernel::System::CustomerUser::LDAP',
    Params => {
        # ldap host
        Host => 'ldaps://xxxxx.de',
        # ldap base dn
        BaseDN => 'o=xxxx',
        # search scope (one|sub)
        SSCOPE => 'sub',
        sizelimit => 0,
        # The following is valid but would only be necessary if the
        # anonymous user does NOT have permission to read from the LDAP tree
        UserDN => 'cn=xxxxx,ou=xxx,o=xxxxx',
        UserPw => 'xxxxxx',
        # in case you want to add always one filter to each ldap query, use
        # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
        AlwaysFilter => '',
            # if both your frontend and your LDAP are unicode, use this:
            SourceCharset => 'utf-8',
            DestCharset   => 'utf-8',
            # if your frontend is unicode and the charset of your
            # ldap server is iso-8859-1, use these options.
            # SourceCharset => 'iso-8859-1',
            # DestCharset => 'utf-8',
            # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
            Params => {
                port => 636,
                timeout => 600,
                async => 0,
                version => 3,
            },
    },
    # customer unique id
    CustomerKey => 'cn',
    # customer #
    CustomerID => 'cn',
    CustomerUserListFields => ['givenname', 'sn', 'mail'],
    CustomerUserSearchFields => ['uid', 'cn', 'mail', 'givenname', 'sn', 'xxxxmailPreferredAddress'],
    CustomerUserSearchPrefix => '',
    CustomerUserSearchSuffix => '*',
    CustomerUserSearchListLimit => 150000,
    CustomerUserPostMasterSearchFields => ['xxxxmailPreferredAddress', 'mail', 'cn', 'sn'],
    CustomerUserNameFields => ['givenname', 'sn'],
    # show not own tickets in customer panel, CompanyTickets
    CustomerUserExcludePrimaryCustomerID => 0,
    # add an ldap filter for valid users (expert setting)
#    CustomerUserValidFilter => '(!(description=locked))',
    # administrator can't change customer preferences
    AdminSetPreferences => 0,
#    # cache time to live in sec. - cache any database queries
#    CacheTTL => 0,
    Map => [
        # note: Login, Email and CustomerID are mandatory!
        # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
        [ 'UserFirstname',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
        [ 'UserLastname',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
        [ 'UserLogin',      'Username',   'cn',             1, 1, 'var', '', 0 ],
        [ 'UserEmail',      'Email',      'xxxxmailPreferredAddress',            1, 1, 'var', '', 0 ],
        [ 'UserCustomerID', 'CustomerID', 'cn',            0, 1, 'var', '', 0 ],
#        [ 'UserCustomerIDs', 'CustomerIDs', 'second_customer_ids', 1, 0, 'var', '', 0 ],
#        [ 'UserPhone',      'Phone',      'telephonenumber', 1, 0, 'var', '', 0 ],
#        [ 'UserAddress',    'Address',    'postaladdress',   1, 0, 'var', '', 0 ],
#        [ 'UserComment',    'Comment',    'description',     1, 0, 'var', '', 0 ],
    ],
};
    # ---------------------------------------------------- #
    # ---------------------------------------------------- #
    #                                                      #
    # end of your own config options!!!                    #
    #                                                      #
    # ---------------------------------------------------- #
    # ---------------------------------------------------- #
}

Wenn ich mich nun mit dem ldap Benutzer anmelden möchte, taucht die Meldung: "Anmeldung fehlgeschlagen! Benutzername oder Passwort wurden falsch eingegeben."
  • Dachte, ich schau mal in der /var/log/syslog, aber da wird kein Eintrag gefunden.
  • Mit nmap "ldap-Server" sind ldap und ldapssl "STATE: Open"
  • Server neustart hat auch nichts gebracht
Einen extra Eintrag am LDAP-Server muss ja nicht gemacht werden für meinen Server?

Muss ich noch irgendwo Einstellungen ändern?
Habe ich eine Verbindung zum LDAP-Server?


edit:

In der Config.pm steht ja Module => 'Kernel::System::CustomerUser::LDAP. Wenn ich im Frontend in der Systemkonfiguration
"Customer::AuthModule" eingebe, steht der Eintrag drin: "Kernel::System::CustomerAuth::DB"

Ändere ich den Eintrag manuell und trage alle LDAP Daten im Frontend ein, dann funktionierts. Woran liegts? Greift die Config.pm überhaupt?

Er scheint keine Einstellungen im Frontend abzuändern. WIe gesagt, es gibt eine bestehende erfolgrieche Konfig von einem anderen Server.
Welche Dateien müssen noch angepasst werden? :(
Manfred89
Znuny newbie
Posts: 53
Joined: 14 Jun 2023, 21:44
Znuny Version: 6.5.8
Real Name: Manfred

Re: LDAP-Anbindung - Beginner

Post by Manfred89 »

Jemand ne Idee? :/
root
Administrator
Posts: 3968
Joined: 18 Dec 2007, 12:23
Znuny Version: Znuny and Znuny LTS
Real Name: Roy Kaldung
Company: Znuny
Contact:

Re: LDAP-Anbindung - Beginner

Post by root »

Hallo,

Hast du denn mal eine Fehlermeldung aus dem Znuny Log?

- Roy
Znuny and Znuny LTS running on CentOS / RHEL / Debian / SLES / MySQL / PostgreSQL / Oracle / OpenLDAP / Active Directory / SSO

Use a test system - always.

Do you need professional services? Check out https://www.znuny.com/

Do you want to contribute or want to know where it goes ?
Manfred89
Znuny newbie
Posts: 53
Joined: 14 Jun 2023, 21:44
Znuny Version: 6.5.8
Real Name: Manfred

Re: LDAP-Anbindung - Beginner

Post by Manfred89 »

Sorry, ich bin wie gegsagt noch Anfänger. Welchen log meinst du?

Systemprotokoll im Frontend? Da ist nichts.
Oder meinst du unter /opt/otrs/var/log?

Code: Select all

Manfred log # ls -l
total 4
drwxrws--- 2 otrs www-data 4096 Jul  7 10:05 Daemon
Manfred log # cd Daemon/
Manfred Daemon # ls -l
total 8
-rw-rw---- 1 otrs www-data   0 Jul  7 10:05 SchedulerCronTaskManagerERR.log
-rw-rw---- 1 otrs www-data 821 Jul  7 09:59 SchedulerFutureTaskManagerERR-1688716762.log
-rw-rw---- 1 otrs www-data 707 Jul  7 09:59 SchedulerFutureTaskManagerERR-1688716772.log
-rw-rw---- 1 otrs www-data   0 Jul  7 10:05 SchedulerFutureTaskManagerERR.log
-rw-rw---- 1 otrs www-data   0 Jul  7 10:05 SchedulerGenericAgentTaskManagerERR.log
-rw-rw---- 1 otrs www-data   0 Jul  7 10:05 SchedulerTaskWorkerERR.log

Es sind nur Errors in " SchedulerFutureTaskManagerERR-1688716762.log" und "SchedulerFutureTaskManagerERR-1688716772.log"
awenir
Znuny newbie
Posts: 1
Joined: 29 Nov 2016, 10:59
Znuny Version: 5.0.13
Real Name: Thor
Company: Asgard

Re: LDAP-Anbindung - Beginner

Post by awenir »

Hallo Manfred,

otrs/znuny schreibt interessanterweise bei mir per default egal in welcher Version nach /var/log/user.log (debian)
und in das apache error log.

Funktioniert das wirklich genau gleich mit der Eingabe im Frontend? Ich sehe, dass da port 636 eingetragen ist,
klappt das denn auf der Kommandozeile?

Weitere Debug Möglichkeit: FRED installieren (freies Plugin) und STDERR prüfen.

Ich habe bei uns die Usernamen und das Profil in der otrs DB, LDAP dient nur zur Passwortprüfung ( wüßte nicht, wie ich sonst die User mappen sollte auf ihre Profile / Kundenzugehörigeit, bevor ich mir den Drist in einem LDAP Editor antue, kann ich das auch im Admin Frontend editieren lassen.)

Hoffe das gibt den richtigen Anstoss, Updates willkommen.
Manfred89
Znuny newbie
Posts: 53
Joined: 14 Jun 2023, 21:44
Znuny Version: 6.5.8
Real Name: Manfred

Re: LDAP-Anbindung - Beginner

Post by Manfred89 »

Hallo awenir,

danke für deine Antwort. Leider schreibt sonst niemand rein :(
otrs/znuny schreibt interessanterweise bei mir per default egal in welcher Version nach /var/log/user.log (debian)
und in das apache error log.
Danke für den Tipp. Da habe ich auch reingeschaut, aber nichts auffälliges gefunden.
Funktioniert das wirklich genau gleich mit der Eingabe im Frontend? Ich sehe, dass da port 636 eingetragen ist,
klappt das denn auf der Kommandozeile?
  • Ich kann über das Frontend "fast" alles Richtung ldap aktivieren und einstellen. Dann geht die LDAP Authentifizierung auch. Ich frage mich nur, warum das nicht über die Config.pm geht.
  • Da wir ein funktionierendes Ticketsystem haben mit Port 636, sollte das funktionieren. Ich habe 1:1 die Einstellungen aus der Config.pm übernommen.
  • Das LDAP Modul ist auch installiert (im Frontend weiterhin deaktiviert,sofern ich es Manuell nicht aktiviere).
Ich habe in der Config.pm oben in der Datenbank mal Name, Adresse etc. abgeändert zum testen, ob die Einstellungen überhaupt greifen und das tun Sie logischerweise. Der Bereich ab

Code: Select all

# (customer ldap backend and settings)
$Self->{CustomerUser} = {
    Name => 'LDAP Datenbank',
    Module => 'Kernel::System::CustomerUser::LDAP',
greift einfach nicht. Im funktionierenden Ticketsystem ändert er die LDAP Config sofort ab.
Manfred89
Znuny newbie
Posts: 53
Joined: 14 Jun 2023, 21:44
Znuny Version: 6.5.8
Real Name: Manfred

Re: LDAP-Anbindung - Beginner

Post by Manfred89 »

Jemand noch Tipps? :(

folgende Hinweise:
  • Erstelle ich die Config.pm (kopiere alle Daten von einem funktionierenden Ticketsystem), kann ich mich nicht im customer.pl Bereich anmelden
  • Die LDAP Einstellungen greifen nur, wenn ich es im Frontend eingebe.
z.B:
-> "Customer::Auth"
• Customer::AuthModule: Kernel::System::CustomerAuth::LDAP
• Customer::AuthModule::LDAP::BaseDN: o=xxxxx
• Customer::AuthModule::LDAP::Die: Deaktiviert
• Customer::AuthModule::LDAP::Host: ldaps://xxxx.de
• Customer::AuthModule::LDAP::Params: port: 636, timeout: 120, version 3, async 0
• Customer::AuthModule::LDAP::SearchUserDN: cn=xxxxx,ou=xxxx,o=xx-xxxx
• Customer::AuthModule::LDAP::SearchUserPw: xxxxxxx
• Customer::AuthModule::LDAP::UID: cn
• Customer::AuthModule::Radius::Die: deaktiviert

Danach kann ich mich im Frontend im customer.pl Bereich anmelden.
  • Ändere ich danach was in der Config.pm ab, kann ich mich nicht mehr per LDAP anmelden, außer ich setz die Einstellung wieder richtig.
  • Ändere ich was in der Config.pm ab, wird die Einstellung im Frontend nicht angezeigt/synchronisiert.
Post Reply