• Deutsch
  • English
  • Anmeldung OTOBO Community
+49 (0)9427 68 39 000
OTOBO
  • SOFTWARE
    • Software | Überblick
    • IT Service Management
    • Customer Service Management
    • Enterprise Service Management
    • Demo
    • Download
    • Dokumentation
  • SERVICES
    • Überblick Services
    • Beratung
    • Training
    • Entwicklung
    • OTRS Migration zu OTOBO
    • Support
    • Managed Service
    • Support-Portal
  • UNTERNEHMEN
    • Über uns
    • Karriere
    • Partner
    • Kontakt
    • Newsletter
  • RESSOURCEN
  • COMMUNITY
    • Open Source
    • Community Forum
    • Download
    • Dokumentation
    • OTOBO übersetzen
  • Click to open the search input field Click to open the search input field Suche
  • Menü Menü

Schlagwörter: LDAP AD

Ansicht von 5 Antwort-Threads
  • Autor
    Beiträge
    • 24. Juni 2025 um 9:41 Uhr - Views: 668 #35349
      Marc
      Teilnehmer

        Hallo zusammen,

        ich habe eine Docker Installation von Otobo und scheitere schon eine Weile an der LDAP Anbindung. Ich würde gerne die lokale Datenbank als auch LDAP für Kundenbenutzer nutzen. Egal ob ich die Konfig aus der Doku: Benutzer — OTOBO Administration Manual 11.0 Dokumentation  oder aus der Defaults.pm und ob ich die LDAP oder lokale Datenbank Konfig nutze. Wenn ich die Config.pm speichere, dann bekomme ich einen internal Server error im Web angezeigt.

        Was mache ich falsch?

        Aktuell in der Config.pm:

         

        # CustomerUser
        # (customer user database backend and settings)
        $Self->{CustomerUser} = {
        Name => Translatable(‚Database Backend‘),
        Module => ‚Kernel::System::CustomerUser::DB‘,
        Params => {

        # if you want to use an external database, add the
        # required settings
        # DSN => ‚DBI:odbc:yourdsn‘,
        # Type => ‚mssql‘, # only for ODBC connections
        # DSN => ‚DBI:mysql:database=customerdb;host=customerdbhost‘,
        # User => “,
        # Password => “,
        Table => ‚customer_user‘,
        # ForeignDB => 0, # set this to 1 if your table does not have create_time, create_by, change_time and change_by fields

        # CaseSensitive defines if the data storage of your DBMS is case sensitive and will be
        # preconfigured within the database driver by default.
        # If the collation of your data storage differs from the default settings,
        # you can set the current behavior ( either 1 = CaseSensitive or 0 = CaseINSensitive )
        # to fit your environment.
        #
        # CaseSensitive => 0,

        # SearchCaseSensitive will control if the searches within the data storage are performed
        # case sensitively (if possible) or not. Change this option to 1, if you want to search case sensitive.
        # This can improve the performance dramatically on large databases.
        SearchCaseSensitive => 0,
        },

        # customer unique id
        CustomerKey => ‚login‘,

        # customer #
        CustomerID => ‚customer_id‘,
        CustomerValid => ‚valid_id‘,

        # The last field must always be the email address so that a valid
        # email address like „John Doe“ <john.doe@domain.com> can be constructed from the fields.
        CustomerUserListFields => [ ‚first_name‘, ‚last_name‘, ‚email‘ ],

        # CustomerUserListFields => [‚login‘, ‚first_name‘, ‚last_name‘, ‚customer_id‘, ‚email‘],
        CustomerUserSearchFields => [ ‚login‘, ‚first_name‘, ‚last_name‘, ‚customer_id‘ ],
        CustomerUserSearchPrefix => ‚*‘,
        CustomerUserSearchSuffix => ‚*‘,
        CustomerUserSearchListLimit => 250,
        CustomerUserPostMasterSearchFields => [‚email‘],

        CustomerUserNameFields => [ ‚title‘, ‚first_name‘, ‚last_name‘ ],
        CustomerUserEmailUniqCheck => 1,

        # # Configures the character for joining customer user name parts. Join single space if it is not defined.
        # # CustomerUserNameFieldsJoin => “,

        # # show now own tickets in customer panel, CompanyTickets
        # CustomerUserExcludePrimaryCustomerID => 0,
        # # generate auto logins
        # AutoLoginCreation => 0,
        # # generate auto login prefix
        # AutoLoginCreationPrefix => ‚auto‘,
        # # admin can change customer preferences
        # AdminSetPreferences => 1,
        # use customer company support (reference to company, See CustomerCompany settings)
        CustomerCompanySupport => 1,
        # cache time to live in sec. – cache any database queries
        CacheTTL => 60 * 60 * 24,
        # # Consider this source read only.
        # ReadOnly => 1,
        Map => [

        # Info about dynamic fields:
        #
        # Dynamic Fields of type CustomerUser can be used within the mapping (see example below).
        # The given storage (third column) then can also be used within the following configurations (see above):
        # CustomerUserSearchFields, CustomerUserPostMasterSearchFields, CustomerUserListFields, CustomerUserNameFields
        #
        # Note that the columns ‚frontend‘ and ‚readonly‘ will be ignored for dynamic fields.

        # note: Login, Email and CustomerID needed!
        # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target, link class(es)
        [ ‚UserTitle‘, Translatable(‚Title or salutation‘), ‚title‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserFirstname‘, Translatable(‚Firstname‘), ‚first_name‘, 1, 1, ‚var‘, “, 0, undef, undef ],
        [ ‚UserLastname‘, Translatable(‚Lastname‘), ‚last_name‘, 1, 1, ‚var‘, “, 0, undef, undef ],
        [ ‚UserLogin‘, Translatable(‚Username‘), ‚login‘, 1, 1, ‚var‘, “, 0, undef, undef ],
        [ ‚UserPassword‘, Translatable(‚Password‘), ‚pw‘, 0, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserEmail‘, Translatable(‚Email‘), ‚email‘, 1, 1, ‚var‘, “, 0, undef, undef ],
        # [ ‚UserEmail‘, Translatable(‚Email‘), ‚email‘, 1, 1, ‚var‘, ‚[% Env(„CGIHandle“) %]?Action=AgentTicketCompose;ResponseID=1;TicketID=[% Data.TicketID | uri %];ArticleID=[% Data.ArticleID | uri %>
        [ ‚UserCustomerID‘, Translatable(‚CustomerID‘), ‚customer_id‘, 0, 1, ‚var‘, “, 0, undef, undef ],
        # [ ‚UserCustomerIDs‘, Translatable(‚CustomerIDs‘), ‚customer_ids‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserPhone‘, Translatable(‚Phone‘), ‚phone‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserFax‘, Translatable(‚Fax‘), ‚fax‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserMobile‘, Translatable(‚Mobile‘), ‚mobile‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserStreet‘, Translatable(‚Street‘), ’street‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserZip‘, Translatable(‚Zip‘), ‚zip‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserCity‘, Translatable(‚City‘), ‚city‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserCountry‘, Translatable(‚Country‘), ‚country‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚UserComment‘, Translatable(‚Comment‘), ‚comments‘, 1, 0, ‚var‘, “, 0, undef, undef ],
        [ ‚ValidID‘, Translatable(‚Valid‘), ‚valid_id‘, 0, 1, ‚int‘, “, 0, undef, undef ],

        # Dynamic field example
        # [ ‚DynamicField_Name_X‘, undef, ‚Name_X‘, 0, 0, ‚dynamic_field‘, undef, 0, undef, undef ],
        ],

        # default selections
        Selections => {

        # UserTitle => {

        # ‚Mr.‘ => Translatable(‚Mr.‘),
        # ‚Mrs.‘ => Translatable(‚Mrs.‘),
        # },
        },
        };

         

        Vielen Dank im Voraus :)

      • 24. Juni 2025 um 12:12 Uhr #35350
        marcel-graf
        Teilnehmer

          Es gib ja zum einen den Bereich „Customer User LDAP Backend and Settings“ und den Bereich „Customer authentication settings“

          Sieht so aus, als ob die Cutomer Authentication fehlt.

          im Forum gibt es einige Beispiele: https://otobo.io/forums/topic/kundenbenutzer-ueber-ldap-automatisch-einem-kunden-zuweisen/

          Gruß Marcel

          • Diese Antwort wurde vor 1 Jahr, 2 Monaten von marcel-graf geändert.
        • 8. Juli 2025 um 7:56 Uhr #35407
          Marc
          Teilnehmer

            Hallo,
            danke für deine Antwort. Mir ist bewusst, dass ich den LDAP Teil nicht in der Konfig oben habe.
            Ich scheitere bereits an folgendem:

            Kopiere ich aus der Defaults.pm folgenden Abschnitt (Lokale Anmeldung) und füge diesen in die Config.pm ein, dann ist nichts mehr möglich. Im Browser wird dann nur noch Internal Server Error angezeigt.
            Ich verstehe nicht ganz wieso das passiert. Immerhin ist es doch genau dasselbe, was in der Defaults.pm steht.

            Der otobo-daemon-1 wird als unhealthy angezeigt. Im Log steht folgendes: Kernel::Config could not be loaded: at /opt/otobo/Kernel/System/ObjectManager.pm line 294.
            Manage the OTOBO daemon process.

             

            Ausschnitt:

            # Data source 1: customer user database back end and settings.
            $Self->{CustomerUser1} = {
            Name   => ‚Database Backend‘,
            Module => ‚Kernel::System::CustomerUser::DB‘,
            Params => {
            #            DSN => ‚DBI:odbc:yourdsn‘,
            #            DSN => ‚DBI:mysql:database=customerdb;host=customerdbhost‘,
            #            User => “,
            #            Password => “,
            Table => ‚customer_user‘,
            SearchCaseSensitive => 0,
            },

            # customer unique id
            CustomerKey => ‚login‘,

            # customer #
            CustomerID    => ‚customer_id‘,
            CustomerValid => ‚valid_id‘,

            # The last field must always be the email address so that a valid
            #   email address like „John Doe“ <john.doe@domain.com> can be constructed from the fields.
            CustomerUserListFields => [ ‚first_name‘, ‚last_name‘, ‚email‘ ],

            #        CustomerUserListFields => [‚login‘, ‚first_name‘, ‚last_name‘, ‚customer_id‘, ‚email‘],
            CustomerUserSearchFields           => [ ‚login‘, ‚first_name‘, ‚last_name‘, ‚customer_id‘ ],
            CustomerUserSearchPrefix           => ‚*‘,
            CustomerUserSearchSuffix           => ‚*‘,
            CustomerUserSearchListLimit        => 250,
            CustomerUserPostMasterSearchFields => [‚email‘],
            CustomerUserNameFields             => [ ‚title‘, ‚first_name‘, ‚last_name‘ ],
            CustomerUserEmailUniqCheck         => 1,

            #        # Configures the character for joining customer user name parts. Join single space if it is not defined.
            #        # CustomerUserNameFieldsJoin => “,

            #        # show now own tickets in customer panel, CompanyTickets
            #        CustomerUserExcludePrimaryCustomerID => 0,
            #        # generate auto logins
            #        AutoLoginCreation => 0,
            #        # generate auto login prefix
            #        AutoLoginCreationPrefix => ‚auto‘,
            #        # admin can change customer preferences
            #        AdminSetPreferences => 1,
            # use customer company support (reference to company, See CustomerCompany settings)
            CustomerCompanySupport => 1,
            # cache time to live in sec. – cache any database queries
            CacheTTL => 60 * 60 * 24,
            #        # Consider this source read only.
            #        ReadOnly => 1,
            Map => [

            # Info about dynamic fields:
            #
            # Dynamic Fields of type CustomerUser can be used within the mapping (see example below).
            # The given storage (third column) then can also be used within the following configurations (see above):
            # CustomerUserSearchFields, CustomerUserPostMasterSearchFields, CustomerUserListFields, CustomerUserNameFields
            #
            # Note that the columns ‚frontend‘ and ‚readonly‘ will be ignored for dynamic fields.

            # note: Login, Email and CustomerID needed!
            # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target, link class(es)
            [ ‚UserTitle‘,        Translatable(‚Title or salutation‘), ‚title‘,          1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserFirstname‘,    Translatable(‚Firstname‘),           ‚first_name‘,     1, 1, ‚var‘, “, 0, undef, undef ],
            [ ‚UserLastname‘,     Translatable(‚Lastname‘),            ‚last_name‘,      1, 1, ‚var‘, “, 0, undef, undef ],
            [ ‚UserLogin‘,        Translatable(‚Username‘),            ‚login‘,          1, 1, ‚var‘, “, 0, undef, undef ],
            [ ‚UserPassword‘,     Translatable(‚Password‘),            ‚pw‘,             0, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserEmail‘,        Translatable(‚Email‘),               ‚email‘,          1, 1, ‚var‘, “, 0, undef, undef ],
            #            [ ‚UserEmail‘,        Translatable(‚Email‘),               ‚email‘,          1, 1, ‚var‘, ‚[% Env(„CGIHandle“) %]?Action=AgentTicketCompose;ResponseID=1;TicketID=[% Data.TicketID | uri %];ArticleID=[% Data.ArticleID | uri %]‘, 0, “, ‚AsPopup OTOBOPopup_TicketAction‘ ],
            [ ‚UserCustomerID‘,   Translatable(‚CustomerID‘),          ‚customer_id‘,    0, 1, ‚var‘, “, 0, undef, undef ],
            #            [ ‚UserCustomerIDs‘,  Translatable(‚CustomerIDs‘),         ‚customer_ids‘,   1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserPhone‘,        Translatable(‚Phone‘),               ‚phone‘,          1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserFax‘,          Translatable(‚Fax‘),                 ‚fax‘,            1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserMobile‘,       Translatable(‚Mobile‘),              ‚mobile‘,         1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserStreet‘,       Translatable(‚Street‘),              ’street‘,         1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserZip‘,          Translatable(‚Zip‘),                 ‚zip‘,            1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserCity‘,         Translatable(‚City‘),                ‚city‘,           1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserCountry‘,      Translatable(‚Country‘),             ‚country‘,        1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚UserComment‘,      Translatable(‚Comment‘),             ‚comments‘,       1, 0, ‚var‘, “, 0, undef, undef ],
            [ ‚ValidID‘,          Translatable(‚Valid‘),               ‚valid_id‘,       0, 1, ‚int‘, “, 0, undef, undef ],

            # Dynamic field example
            #            [ ‚DynamicField_Name_X‘, undef, ‚Name_X‘, 0, 0, ‚dynamic_field‘, undef, 0, undef, undef ],
            ],

            # default selections
            Selections => {

            #            UserTitle => {
            #                ‚Mr.‘ => Translatable(‚Mr.‘),
            #                ‚Mrs.‘ => Translatable(‚Mrs.‘),
            #            },
            },
            };

          • 15. Juli 2025 um 14:03 Uhr #35484
            marcel-graf
            Teilnehmer

              Hallo Marc,

              ich habe leider aktuell keinen Zugriff auf ein Ldap zum testen.

              Ich könnte dir mal unsere alte Config zusenden.

              Gruß Marcel

            • 17. Juli 2025 um 14:20 Uhr #35558
              Marc
              Teilnehmer

                Hallo Marcel,

                Gerne. Das würde mir sicher weiterhelfen.

              • 17. Juli 2025 um 14:27 Uhr #35559
                marcel-graf
                Teilnehmer

                  Hallo Marc,

                  das es die Config hier beim hochladen immer zerstört, hab ich mal WETransfer benutzt.

                  https://we.tl/t-TLxlsdt3SK  (der Link ist 3 Tage aktiv)

                  Datei: komplette_Otobo_LDAP_Config_V1.7z

                  passwd: otobo

                  Gruß Marcel

              • Autor
                Beiträge
              Ansicht von 5 Antwort-Threads
              • Du musst angemeldet sein, um auf dieses Thema antworten zu können.

              Foren durchsuchen

              Anmeldung

              Anmeldung

              Konto erstellen
              Passwort vergessen?

              Login via Social

              Profil

              Bitte vervollständigen Sie nach der Registrierung Ihr Profil, das vereinfacht die spätere Kommunikation enorm. Ihre Profileinstellung finden Sie, wenn Sie auf Ihr Avatarbild klicken.

              Sie können Ihren Avatar ändern, indem Sie sich mit Ihrer E-Mail-Adresse unter gravatar.com registrieren.

              Letzte Aktivitäten

              • Dynamische Felder in AgentTicketNote mit ACL verstecken
              • FAQ: kaputtes Copy & Paste von Bildern zwischen Artikeln
              • Benachrichtigung „Ticket wurde mir entzogen“ möglich?
              • Statistik Anzahl Tickets pro Agent
              • Docker: Ändern des redis Hosts

              Unternehmen

              Über uns
              Karriere
              Stellenbörse
              Partner werden
              Kontakt
              Newsletter

              OTOBO | Simplify work and create exceptional service experiences.

              Die Source Code Owner und Maintainer hinter OTOBO.

              Software

              Service Management-Plattform
              OTOBO Demo
              OTOBO Download
              OTOBO Dokumentation

              Security-Problem melden:
              security@otobo.org

              Services

              Support-Portal
              Beratung
              Training
              Support
              Managed Services
              Erweiterung
              OTRS Migration
              Partner finden

              Community

              Open Source
              Community Forum
              Mitmachen
              OTOBO Developer
              OTOBO@GitHub

              © 2026 Rother OSS GmbH | All rights reserved.
              • Cookie-Einstellungen
              • Impressum
              • Datenschutz
              • Haftungsausschluss
              Nach oben scrollen Nach oben scrollen Nach oben scrollen