LDAP Anbindung für den Kunden

Hilfe zu Znuny Problemen aller Art
Locked
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

LDAP Anbindung für den Kunden

Post by whiteotrs »

Hallo,

ich bin neu hier im Forum und arbeite nun schon seit einiger Zeit mit OTRS.
Allerdings treten immer wieder Probleme auf, einige konnte ich bereits beheben, nur eines nicht, wo ich nun schon seit ca. 2 Wochen dran knobbel.
Ich hoffe das mir jemand helfen kann.

Folgendes Problem: :?:

Es geht allgemein um die Anbindung von LDAP für den Kunden.
Der Kunde soll sich im OTRS anmelden und arbeiten können, dies funktioniert soweit auch bereits, wenn der Kunde bereits in der Datenbank abgelegt ist.
Allerdings möchte ich gern, dass wenn der Kunde noch nicht in der Datenbank existiert aber bereits im LDAP, dass er aus dem LDAP ausgelesen wird und in der OTRS Datenbank angelegt wird. Dies sollte alles automatisch sein.
Also der Kunde kommt, meldet sich ganz normal mit seinem Nutzernamen und Passwort unseres Unternehmens an und kommt auf die Kundenstartseite.
Er soll also nicht merken, dass er noch nicht in der Datenbank angelegt ist und erst aus dem LDAP ausgelesen wird und dann angelegt wird.

Leider habe ich noch nicht die richtige .pm gefunden, in der ich ihm das sagen kann.
Beim Agenten funktuioniert das nur beim Kunden noch nicht!

Ich wäre für jede Hilfe dankbar.
OTRS v. 3.1.6, Apache 2.2, openSuse 12.x
Wolfgangf
Znuny ninja
Posts: 1029
Joined: 13 Apr 2009, 12:26
Znuny Version: 6.0.13
Real Name: Wolfgang Fürtbauer
Company: PBS Logitek GmbH
Location: Pinsdorf

Re: LDAP Anbindung für den Kunden

Post by Wolfgangf »

Produktiv:
OTRS 6.0.13/ ITSM 6.0.13
OS: SUSE Linux (SLES 12, Leap), MySql 5.5.x, 5.6.x
Windows 2012 AD Integration (agents and customers), Nagios integration (incidents, CMDB), Survey, TimeAccounting
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

Danke, aber soweit war ich schon...
Da bekomme ich Fehlermeldungen ohne Ende, habe bisher alles mit dem Handbuch eingerichtet, aber diese Sache ist dort nicht vorgesehen, soweit ich den Text udn Code verstehe...

Folgende Fehler:
Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist.

Fehlermeldung:
Global symbol "$Self" requires explicit package name at /opt/otrs//Kernel/Config/Defaults.pm line 1788. Global symbol "$Self" requires explicit package name at /opt/otrs//Kernel/Config/Defaults.pm line 1796. Global symbol "$Self" requires explicit package name at /opt/otrs//Kernel/Config/Defaults.pm line 1801. Global symbol "$Self" requires explicit package name at /opt/otrs//Kernel/Config/Defaults.pm line 1811. Global symbol "$Self" requires explicit package name at /opt/otrs//Kernel/Config/Defaults.pm line 1816. Global symbol "$Self" requires explicit package name at /opt/otrs//Kernel/Config/Defaults.pm line 1825. Global symbol "$Self" requires explicit package name at /opt/otrs//Kernel/Config/Defaults.pm line 1830. Global symbol "$Self" requires explicit package name at /opt/otrs//Kernel/Config/Defaults.pm line 1842. Global symbol "$Self" requires explicit package name at /opt/otrs//Kernel/Config/Defaults.pm line 1861. Global symbol "$Self" requires explicit package name at /opt/otrs//Kernel/Config/Defaults.pm line 1866. Global symbol "$Self" requires explicit package name at /opt/otrs//Kernel/Config/Defaults.pm line 1878. Global symbol "$Self" requires explicit package name at /opt/otrs//Kernel/Config/Defaults.pm line 1899. Unmatched right curly bracket at /opt/otrs//Kernel/Config/Defaults.pm line 1915, at end of line /opt/otrs//Kernel/Config/Defaults.pm has too many errors. Compilation failed in require at /opt/otrs/Kernel/cpan-lib/Apache2/Reload.pm line 181.


Default:
Zeile 1788: $Self->{YesNoOptions} = {
Zeile 1796: $Self->{'Frontend::CommonObject'} = {
Zeile 1811: $Self->{'CustomerFrontend::CommonObject'} = {
Zeile 1816: $Self->{'CustomerFrontend::CommonParam'} = {

und so weiter

Also das HAndbuch hilft mir hier nicht..bei diesem Problemen, solch eine Lösung ist nciht vorgesehen...Man soll die Kundendaten händisch eingeben, das geht aber schlecht bei über 3000 Nutzern...deswegen brauche ich so eine Lösung wie oben beschrieben...
Ich bin für jeden Tipp wirklich dankbar...
Und hoffe auf Hilfe
PS: Ich nutze nur LDAP für die Authorisierug. Beim Agenten klappt es bereits mithilfe der Sync. Doch beim Kunden gibt es keine Sync in der man die Änderungen dafür machen kann...


LG whiteotrs
OTRS v. 3.1.6, Apache 2.2, openSuse 12.x
Wolfgangf
Znuny ninja
Posts: 1029
Joined: 13 Apr 2009, 12:26
Znuny Version: 6.0.13
Real Name: Wolfgang Fürtbauer
Company: PBS Logitek GmbH
Location: Pinsdorf

Re: LDAP Anbindung für den Kunden

Post by Wolfgangf »

Du schreibst Deine Änderungen in /opt/otrs//Kernel/Config/Defaults.pm ?
Das solltest Du nicht tun!
Alle site-spezifischen Änderungen gehören in /opt/otrs/Kernel/config.pm

Dass die Kunden nicht in die Datenbank gesynct werden stimmt, aber warum möchtest du das haben?
Wenn der AD Lookup funktioniert, können sich die Kunden einloggen bzw. siehst du die Information (die Du eingerichtet hast) im Ticket unter Kunden-Info

LG
Produktiv:
OTRS 6.0.13/ ITSM 6.0.13
OS: SUSE Linux (SLES 12, Leap), MySql 5.5.x, 5.6.x
Windows 2012 AD Integration (agents and customers), Nagios integration (incidents, CMDB), Survey, TimeAccounting
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

ich weiß das man das nicht soll, aber ich hab es so gemacht, da wir das in unserem unternehmen so besser gebrauchen können!

Ich will ja keine Informationen eingeben über dne Kunden, diese Informationen soll sich die Datenbank aus dem LDAP ziehen und abspeichern, von allein!
Sobald der Kunde sich einloggt auf der Kundenoberfläche, zieht OTRS die Infos aus dem LDAP, da der Kunde bereits in der Datenbank angelegt ist, ist er aber noch nicht angelegt soll er gucken ob ein Nutzer mit dem Nutzernamen im LDAP existiert, und wenn die der Fall ist, soll er die Anmeldeinformationen aus dem LDAP auslesen und in der Datenbank speichern, sowie beim Agenten!
Wolfgangf
Znuny ninja
Posts: 1029
Joined: 13 Apr 2009, 12:26
Znuny Version: 6.0.13
Real Name: Wolfgang Fürtbauer
Company: PBS Logitek GmbH
Location: Pinsdorf

Re: LDAP Anbindung für den Kunden

Post by Wolfgangf »

.. und genauso habe ich das auch
mit 2 Quellen für die Kunden
1) Datenbank
2) AD
ich weiß das man das nicht soll, aber ich hab es so gemacht, da wir das in unserem unternehmen so besser gebrauchen können!
das hat meiner Meinung nach nichts mit der Firma zu tun; bei einem upgrade wird es rums machen und die Defaults.pm wird überschrieben und deine ganzen schönen Einstellungen sind futsch.

so sieht meine Config aus:

Code: Select all

    # CustomerUser
    # (customer user database backend and settings)
    $Self->{CustomerUser} = {
        Name   => 'Database Backend',
        Module => 'Kernel::System::CustomerUser::DB',
        Params => {
            Table => 'customer_user',
            DestCharset => 'utf-8',
            SourceCharset => 'utf-8',
        },
        # customer uniq id
        CustomerKey => 'login',

        # customer #
        CustomerID             => 'customer_id',
        CustomerValid          => 'valid_id',
        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 => 1000,
        CustomerUserPostMasterSearchFields => ['email'],
        CustomerUserNameFields => [ 'salutation', 'first_name', 'last_name' ],
        #CustomerUserEmailUniqCheck => 1,##

        # 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 life in sec. - cache any database queris
        #CacheTTL => 0,
        # just a read only source
        ReadOnly => 1,
        Map => [

           # note: Login, Email and CustomerID needed!
           # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target
           # [ 'UserSalutation', 'Salutation', 'salutation', 1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  'Firstname',  'first_name',     1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'last_name',      1, 1, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'login',          1, 1, 'var', '', 0 ],
           # [ 'UserPassword',   'Password',   'pw',            1, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email',      'email',          1, 1, 'var', '', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'customer_id',    0, 1, 'var', '', 0 ],
            [ 'UserPhone','Phone',      'phone',                1, 0,'var', 'click2dial.pl?agent=$Env{"UserComment"}&customer=$Data{"UserPhone"}', 0 ],
            [ 'UserMobile',      'Mobile',      'mobile',       1, 0,'var', 'click2dial.pl?agent=$Env{"UserComment"}&customer=$Data{"UserMobile"}', 0 ],
          # [ 'UserEmail',      'Email', 'email',1, 1, 'var', '$Env{"CGIHandle"}?Action=AgentTicketCompose&ResponseID=1&TicketID=$Data{"TicketID"}&ArticleID=$Data{"ArticleID"}', 0 ],
          # [ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var', '', 0 ],
          # [ 'UserComment', 'Comment', 'comments', 1, 0, 'var', '', 0 ],
          # [ 'ValidID',     'Valid',   'valid_id', 0, 1, 'int', '', 0 ],
        ],

    };
# ===================================================
# LDAP Customer User Authentication
# ===================================================

    $Self->{CustomerUser1} = {
        Name => 'Active Directory',
        Module => 'Kernel::System::CustomerUser::LDAP',
        Params => {
            Host => <ldaphosts>,
            BaseDN => '<base_dn>',
            SSCOPE => 'sub',
            UserDN => '<search_user>',
            UserPw => '<pass>',
            AlwaysFilter =>  (mail=*),
            DestCharset => 'utf-8',
            SourceCharset => 'utf-8',
            Params => {
                port => 3268,
                timeout => 10,
                async => 0,
                version => 3,
            },
        },
        CustomerKey => 'sAMAccountName',
        CustomerID => 'mail',
        CustomerUserListFields => ['cn', 'mail'],
        CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
        CustomerUserSearchListLimit => 1000,
        CustomerUserPostMasterSearchFields => ['mail'],
        CustomerUserNameFields => ['givenname', 'sn'],
        CustomerUserExcludePrimaryCustomerID => 0,
        AdminSetPreferences => 0,
        Map => [
           #[ 'UserSalutation', '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', 'click2dial.pl?agent=$Env{"UserComment"}&customer=$Data{"UserPhone"}', 0 ],
            [ 'UserMobile',     'Mobile',      'mobile',         1, 0,'var', 'click2dial.pl?agent=$Env{"UserComment"}&customer=$Data{"UserMobile"}', 0 ],
           # [ 'UserAddress',    'Address',    'postaladdress',   1, 0,'var', '', 0 ],
           # [ 'UserComment',    'Comment',    'description',     1, 0,'var', '', 0 ],
        ],
    };


Produktiv:
OTRS 6.0.13/ ITSM 6.0.13
OS: SUSE Linux (SLES 12, Leap), MySql 5.5.x, 5.6.x
Windows 2012 AD Integration (agents and customers), Nagios integration (incidents, CMDB), Survey, TimeAccounting
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

Und deine Lösung funktioniert auch?
Dann werde ich das mal vergleichen und ausbessern...

Ich habe das jetzt alles in die Config.pm geschrieben und aus der Default rausgenommen, bzw. die Original default.pm wieder eingespielt.

Habe nun leider das Problem, wenn ich mich als Kunde anmelden will, dass ich mich nicht amelden kann...
Folgende Fehlermeldung:
Authentication succeeded, but no customer record is found in the customer backend. Please contact your administrator

Wenn ich mich als Admin anmelde auf der Agentenseite, dann sehe ich unter Kunden keine Kunden, da das LDAP Backend verwendet wird, was ja auch richtig ist, oder?
Nur leider scheint die Authentifizierung über LDAP noch nicht zu klappen bzw. das anmelden...
Hast du noch einen Tipp?

Ich werde in der Zeit mal deine Config mit meiner Vergleichen!
Danke
Wolfgangf
Znuny ninja
Posts: 1029
Joined: 13 Apr 2009, 12:26
Znuny Version: 6.0.13
Real Name: Wolfgang Fürtbauer
Company: PBS Logitek GmbH
Location: Pinsdorf

Re: LDAP Anbindung für den Kunden

Post by Wolfgangf »

Und deine Lösung funktioniert auch?

surely :)
Ich habe das jetzt alles in die Config.pm geschrieben und aus der Default rausgenommen, bzw. die Original default.pm wieder eingespielt.
perfekt!
Habe nun leider das Problem, wenn ich mich als Kunde anmelden will, dass ich mich nicht amelden kann...
Folgende Fehlermeldung:
Authentication succeeded, but no customer record is found in the customer backend. Please contact your administrator
hier der Rest meiner Config:

Code: Select all

  
    $Self->{'AuthModule1'}  = 'Kernel::System::Auth::DB';
    $Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
    $Self->{'AuthModule::LDAP::Host'} = '<ldaphosts>';
    $Self->{'AuthModule::LDAP::BaseDN'} = '<basedn>';
   # ----------------------------------------------------------------------------
   # -> see internal Asamer - LDAP settings
    $Self->{'AuthModule::LDAP::UID'} = 'sAMAccountName';
    $Self->{'AuthModule::LDAP::AccessAttr'} = 'member';
#<--
    # The following is valid but would only be necessary if the
    # anonymous user do NOT have permission to read from the LDAP tree
    # -------------------------------------------------------------------------------------------------------------------------
    # we have our own search-user defined for LDAP sync. functionality
    # -------------------------------------------------------------------------------------------------------------------------
# -->
    $Self->{'AuthModule::LDAP::SearchUserDN'} = '<searchdn>';
    $Self->{'AuthModule::LDAP::SearchUserPw'} = '<pass>';
#<--
    # -------------------------------------------------------------------------------------------------------------------------
    # in case you want to add always one filter to each ldap query, use
    # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
# -->
    $Self->{'AuthModule::LDAP::AlwaysFilter'} = '(mail=*)';
# <--
    # -------------------------------------------------------------------------------------------------------------------------
    # in case you want to add a suffix to each login name, then
    # you can use this option. e. g. user just want to use user but
    # in your ldap directory exists user@domain.
    # $Self->{'AuthModule::LDAP::UserSuffix'} = '@domain.com';

    # In case you want to convert all given usernames to lower letters you
    # should activate this option. It might be helpfull if databases are
    # in use that do not distinguish selects for upper and lower case letters
    # (Oracle, postgresql). User might be synched twice, if this option
    # is not in use.
    #  $Self->{'AuthModule::LDAP::UserLowerCase'} = 0;

    # In case you need to use OTRS in iso-charset, you can define this
    # by using this option (converts utf-8 data from LDAP to iso).
    $Self->{'AuthModule::LDAP::Charset'} = 'utf-8';

# --> activate LDAP
#    # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
    $Self->{'AuthModule::LDAP::Params'} = {
       # port => 389,
       port => 3268,
       timeout => 10, #--> activate LDAP 120,
       async => 0,
       version => 3,
    };
Wenn ich mich als Admin anmelde auf der Agentenseite, dann sehe ich unter Kunden keine Kunden, da das LDAP Backend verwendet wird, was ja auch richtig ist, oder?
genau, wenn Du in die suchmaske was eingibst, dann sollte er die Kunden holen
Produktiv:
OTRS 6.0.13/ ITSM 6.0.13
OS: SUSE Linux (SLES 12, Leap), MySql 5.5.x, 5.6.x
Windows 2012 AD Integration (agents and customers), Nagios integration (incidents, CMDB), Survey, TimeAccounting
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

Okay habe nun verglichen und abgeändert...
Ich kann mich auf der Kundenseite, nun auch anmelden, aber nur mit dem Nutzer, mit dem ich vorheranmelden konnte, also welcher noch in der Datenbank liegt.
Mit einem Nutzer der nur im LDAP existiert klappt es immer noch nicht!
Kann mir jemand nochmal einen Tip geben?

Hier meine Config.pm:

Code: Select all

# Meine Daten:
 my $LDAP_Host = 'LDAP';
    my $LDAP_BaseDN = 'u=**, o=**, c=**';
    my $LDAP_UID = 'uid';
    my $LDAP_SearchUserDN= 'LDAPNM';
    my $LDAP_SearchUserPw = 'LDAPPW';

# --------------------------------------------------- #
   # --------------------------------------------------- #
   #                                                                  #
   #         LDAP Authentifizierung Agent               #
   #   							  #
   # --------------------------------------------------- #
   # --------------------------------------------------- #
   # This is the auth. module againt the otrs db
    $Self->{AuthModule} = 'Kernel::System::Auth::DB';

    # This is an configuration for an LDAP auth. backend.
    # (take care that Net::LDAP is installed!)
    $Self->{AuthModule} = 'Kernel::System::Auth::LDAP';
    $Self->{'AuthModule::LDAP::Host'} = $LDAP_Host;
    $Self->{'AuthModule::LDAP::BaseDN'} = $LDAP_BaseDN;
    $Self->{'AuthModule::LDAP::UID'} = $LDAP_UID;

    # The following is valid but would only be necessary if the
    # anonymous user do NOT have permission to read from the LDAP tree
    $Self->{'AuthModule::LDAP::SearchUserDN'} = $LDAP_SearchUserDN;
    $Self->{'AuthModule::LDAP::SearchUserPw'} = $LDAP_SearchUserPw;

    # in case you want to add always one filter to each ldap query, use
    # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
    $Self->{'AuthModule::LDAP::AlwaysFilter'} = '(uid=*)';
    
    # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
    $Self->{'AuthModule::LDAP::Params'} = 
    {
         port    => 389,
         timeout => 120,
        async   => 0,
        version => 3,
    };
    # --------------------------------------------------- #
    # --------------------------------------------------- #
    #                                                                  #
    #                           LDAP Sync                        #
    #   						   #
    # --------------------------------------------------- #
    # --------------------------------------------------- #
    
    # This is an configuration for an LDAP auth sync. backend.
    # (take care that Net::LDAP is installed!)
    $Self->{AuthSyncModule} = 'Kernel::System::Auth::Sync::LDAP';
    $Self->{'AuthSyncModule::LDAP::Host'} = $LDAP_Host;
    $Self->{'AuthSyncModule::LDAP::BaseDN'} = $LDAP_BaseDN;
    $Self->{'AuthSyncModule::LDAP::UID'} = $LDAP_UID;

    # The following is valid but would only be necessary if the
    # anonymous user do NOT have permission to read from the LDAP tree
    $Self->{'AuthSyncModule::LDAP::SearchUserDN'} = $LDAP_SearchUserDN;
    $Self->{'AuthSyncModule::LDAP::SearchUserPw'} = $LDAP_SearchUserPw;
    
    # in case you want to add always one filter to each ldap query, use
    # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
    $Self->{'AuthSyncModule::LDAP::AlwaysFilter'} = '(uid=*)';
    
    # AuthSyncModule::LDAP::UserSyncMap
    # (map if agent should create/synced from LDAP to DB after successful login)
    $Self->{'AuthSyncModule::LDAP::UserSyncMap'} = 
    {
        # DB -> LDAP
        UserFirstname => 'name',
        UserLastname  => 'name',
        UserEmail     => 'mail',
    };
    
    # AuthSyncModule::LDAP::UserSyncInitialGroups
    # (sync following group with rw permission after initial create of first agent
    # login)
    $Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'} = 
    [
        'users',
    ];
    
    # UserTable
    $Self->{DatabaseUserTable}       = 'users';
    $Self->{DatabaseUserTableUserID} = 'id';
    $Self->{DatabaseUserTableUserPW} = 'pw';
    $Self->{DatabaseUserTableUser}   = 'login';
    
    # --------------------------------------------------- #
    # --------------------------------------------------- #
    #                                                                  #
    #         LDAP Authentifizierung Kunde               #
    #  					             #
    # --------------------------------------------------- #
    # --------------------------------------------------- #
    
    # CustomerUser
    # (customer user database backend and settings)
    $Self->{CustomerUser} = 
     {
         Name   => 'Database Backend',
         Module => 'Kernel::System::CustomerUser::DB',
         Params => 
       {
            Table => 'customer_user',
            DestCharset => 'utf-8',
            SourceCharset => 'utf-8',
        },
        # customer uniq id
        CustomerKey => 'login',

        # customer #
        CustomerID             => 'customer_id',
        CustomerValid          => 'valid_id',
        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 => 1000,
        CustomerUserPostMasterSearchFields => ['email'],
        CustomerUserNameFields => [ 'salutation', 'first_name', 'last_name' ],
        #CustomerUserEmailUniqCheck => 1,##
    
	
        ReadOnly => 1,
        Map => [

           # note: Login, Email and CustomerID needed!
           # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target
           # [ 'UserSalutation', 'Salutation', 'salutation', 1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  'Firstname',  'first_name',     1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'last_name',      1, 1, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'login',          1, 1, 'var', '', 0 ],
           # [ 'UserPassword',   'Password',   'pw',            1, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email',      'email',          1, 1, 'var', '', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'customer_id',    0, 1, 'var', '', 0 ],
            [ 'UserPhone','Phone',      'phone',                1, 0,'var', 'click2dial.pl?agent=$Env{"UserComment"}&customer=$Data{"UserPhone"}', 0 ],
            [ 'UserMobile',      'Mobile',      'mobile',       1, 0,'var', 'click2dial.pl?agent=$Env{"UserComment"}&customer=$Data{"UserMobile"}', 0 ],
          # [ 'UserEmail',      'Email', 'email',1, 1, 'var', '$Env{"CGIHandle"}?Action=AgentTicketCompose&ResponseID=1&TicketID=$Data{"TicketID"}&ArticleID=$Data{"ArticleID"}', 0 ],
          # [ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var', '', 0 ],
          # [ 'UserComment', 'Comment', 'comments', 1, 0, 'var', '', 0 ],
          # [ 'ValidID',     'Valid',   'valid_id', 0, 1, 'int', '', 0 ],
        ],

    };
    
   
    $Self->{CustomerUser1} = 
    {
        Name => 'LDAP Backend',
        Module => 'Kernel::System::CustomerUser::LDAP',
        Params => {
            Host => $LDAP_Host,
            BaseDN => $LDAP_BaseDN,
            SSCOPE => 'sub',
            UserDN => $LDAP_SearchUserDN,
            UserPw => $LDAP_SearchUserPw,
            AlwaysFilter =>  '(uid=*)',
            DestCharset => 'utf-8',
            SourceCharset => 'utf-8',
            Params => {
                port => 393,
                timeout => 10,
                async => 0,
                version => 3,
            },
        },
        CustomerKey => 'uid',
        CustomerID => 'mail',
        CustomerUserListFields => ['name', 'mail'],
        CustomerUserSearchFields => ['uid', 'name', 'mail'],
        CustomerUserSearchListLimit => 250,
        CustomerUserPostMasterSearchFields => ['mail'],
        CustomerUserNameFields => ['name', 'name'],
        CustomerUserExcludePrimaryCustomerID => 0,
        AdminSetPreferences => 0,
        Map => [
             [ 'title',      'Title',      'title',           1, 0, 'var', '', 0 ],
             [ 'name',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
             [ 'name',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
             [ 'name',      'Username',   'uid',             1, 1, 'var', '', 0 ],
             [ 'mail',      'Email',      'mail',            1, 1, 'var', '', 0 ],
             [ 'uid', 'CustomerID', 'mail',            0, 1, 'var', '', 0 ],
        ],
    };
Wolfgangf
Znuny ninja
Posts: 1029
Joined: 13 Apr 2009, 12:26
Znuny Version: 6.0.13
Real Name: Wolfgang Fürtbauer
Company: PBS Logitek GmbH
Location: Pinsdorf

Re: LDAP Anbindung für den Kunden

Post by Wolfgangf »

$Self->{'AuthModule::LDAP::AlwaysFilter'} = '(uid=*)';
...
$Self->{'AuthSyncModule::LDAP::AlwaysFilter'} = '(uid=*)';
...
AlwaysFilter => '(uid=*)',
ich würde das mal auf ='(mail=*)' ändern oder den Filter leer lassen (auskommentieren)
Produktiv:
OTRS 6.0.13/ ITSM 6.0.13
OS: SUSE Linux (SLES 12, Leap), MySql 5.5.x, 5.6.x
Windows 2012 AD Integration (agents and customers), Nagios integration (incidents, CMDB), Survey, TimeAccounting
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

Okay, danke...
Soweit kann ich meine Nutzer nun auch wieder im Admin Bereich sehen unter Kunden.
ABER neues Problem :(
Ich habe nun versucht mich mit Nutzernamen und Passwort auf der Kundenseite anzumelden...
Dann kommt diese Fehlermeldung:
Anmeldung fehlgeschlagen! Benutzername oder Passwort wurden falsch eingegeben.

Ist aber beides richtig!

Und in der Error-Log schreibt er:

Code: Select all

[Mon Feb 13 15:05:34 2012] -e: Use of uninitialized value in concatenation (.) or string at /opt/otrs//Kernel/System/Log.pm line 161.
ERROR: OTRS-CGI-10 Perl: 5.10.0 OS: linux Time: Mon Feb 13 15:05:34 2012

 Message: 0000208D: NameErr: DSID-031522C9, problem 2001 (NO_OBJECT), data 0, best match of:
	'O=***,C=**'
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

Okay,
ich hatte das von dir vorgeschlagene geändert beim Agenten aus "uid=*" hab ich "mail=*" gemacht das hat nichts gebracht, außer das ich mich auch als Agent/Admin nicht mehr anmelden konnte...
Beim Agenten hab ich das also wieder auf uid zuurückgeändert und beim Kunden aus dem Grund auch...wenn ich beim Kunden also uid stehen habe, habe ich keine Kunden in der Datenbank liegen (von Adminoberfläche aus gesehen). Aber wennn ich mail stehen habe, sehe ich den Kunden in der Datenbank aber ich kann mich nicht als Kunde anmelden...
Hm...Noch jemand eine Idee???
jojo
Znuny guru
Posts: 15020
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Re: LDAP Anbindung für den Kunden

Post by jojo »

um was für ein LDAP handelt es sich denn?
"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
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

Gute Frage, das weiß ich nicht.
Ich habe auf LDAP keinen Zugriff...
Ich kann nur die Nutzerdaten aus dem LDAP auslesen, also die dafür nötigen Parameter habe ich.
jojo
Znuny guru
Posts: 15020
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Re: LDAP Anbindung für den Kunden

Post by jojo »

d.h. Du bist Dir sicher das es bei Euch ein Feld UID gibt?
"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
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

ja das bin ich mir!
Welche Felder es bei uns gibt, habe ich vor der Konfiguration ds OTRS bzw. der LDAP Anbindung ausgelesen.
Also UID gibt es
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

Okay, habe nun noch mal in meiner Config geguckt, wenn ich das wie folgt habe, dann kann cih mich als Agent anmelden und als Kunde, wenn der Kunde in der Datenbank steht, ist der Kunde noch nicht in der Datenbank geht es auch nicht.

Code: Select all

 Meine Daten
    my $LDAP_Host = 'LDAP';
    my $LDAP_BaseDN = 'ou=***, o=***, c=***';
    my $LDAP_UID = 'uid';
    my $LDAP_SearchUserDN= 'LDAPNM';
    my $LDAP_SearchUserPw = 'LDAPPW';

   # --------------------------------------------------- #
   # --------------------------------------------------- #
   #                                                                  #
   #         LDAP Authentifizierung Agent               #
   #   							  #
   # --------------------------------------------------- #
   # --------------------------------------------------- #
   # This is the auth. module againt the otrs db
    $Self->{AuthModule} = 'Kernel::System::Auth::DB';

    # This is an configuration for an LDAP auth. backend.
    # (take care that Net::LDAP is installed!)
    $Self->{AuthModule} = 'Kernel::System::Auth::LDAP';
    $Self->{'AuthModule::LDAP::Host'} = $LDAP_Host;
    $Self->{'AuthModule::LDAP::BaseDN'} = $LDAP_BaseDN;
    $Self->{'AuthModule::LDAP::UID'} = $LDAP_UID;

    # The following is valid but would only be necessary if the
    # anonymous user do NOT have permission to read from the LDAP tree
    $Self->{'AuthModule::LDAP::SearchUserDN'} = $LDAP_SearchUserDN;
    $Self->{'AuthModule::LDAP::SearchUserPw'} = $LDAP_SearchUserPw;

    # in case you want to add always one filter to each ldap query, use
    # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
    $Self->{'AuthModule::LDAP::AlwaysFilter'} = '(uid=*)';
    
    # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
    $Self->{'AuthModule::LDAP::Params'} = 
    {
         port    => 389,
         timeout => 120,
        async   => 0,
        version => 3,
    };
    # --------------------------------------------------- #
    # --------------------------------------------------- #
    #                                                                  #
    #                           LDAP Sync                        #
    #   						   #
    # --------------------------------------------------- #
    # --------------------------------------------------- #
    
    # This is an configuration for an LDAP auth sync. backend.
    # (take care that Net::LDAP is installed!)
    $Self->{AuthSyncModule} = 'Kernel::System::Auth::Sync::LDAP';
    $Self->{'AuthSyncModule::LDAP::Host'} = $LDAP_Host;
    $Self->{'AuthSyncModule::LDAP::BaseDN'} = $LDAP_BaseDN;
    $Self->{'AuthSyncModule::LDAP::UID'} = $LDAP_UID;

    # The following is valid but would only be necessary if the
    # anonymous user do NOT have permission to read from the LDAP tree
    $Self->{'AuthSyncModule::LDAP::SearchUserDN'} = $LDAP_SearchUserDN;
    $Self->{'AuthSyncModule::LDAP::SearchUserPw'} = $LDAP_SearchUserPw;
    
    # in case you want to add always one filter to each ldap query, use
    # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
    $Self->{'AuthSyncModule::LDAP::AlwaysFilter'} = '(uid=*)';
    
    # AuthSyncModule::LDAP::UserSyncMap
    # (map if agent should create/synced from LDAP to DB after successful login)
    $Self->{'AuthSyncModule::LDAP::UserSyncMap'} = 
    {
        # DB -> LDAP
        UserFirstname => 'name',
        UserLastname  => 'name',
        UserEmail     => 'mail',
    };
    
    # AuthSyncModule::LDAP::UserSyncInitialGroups
    # (sync following group with rw permission after initial create of first agent
    # login)
    $Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'} = 
    [
        'users',
    ];
    
    # UserTable
    $Self->{DatabaseUserTable}       = 'users';
    $Self->{DatabaseUserTableUserID} = 'id';
    $Self->{DatabaseUserTableUserPW} = 'pw';
    $Self->{DatabaseUserTableUser}   = 'login';
    
    # --------------------------------------------------- #
    # --------------------------------------------------- #
    #                                                                  #
    #         LDAP Authentifizierung Kunde               #
    #  					             #
    # --------------------------------------------------- #
    # --------------------------------------------------- #
    
    # CustomerUser
    # (customer user database backend and settings)
    $Self->{CustomerUser} = 
     {
         Name   => 'Database Backend',
         Module => 'Kernel::System::CustomerUser::DB',
         Params => 
       {
            Table => 'customer_user',
            DestCharset => 'utf-8',
            SourceCharset => 'utf-8',
        },
        # customer uniq id
        CustomerKey => 'login',

        # customer #
        CustomerID             => 'customer_id',
        CustomerValid          => 'valid_id',
        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 => 1000,
        CustomerUserPostMasterSearchFields => ['email'],
        CustomerUserNameFields => [ 'first_name', 'last_name' ],
        
	
        ReadOnly => 1,
        Map => [

           # note: Login, Email and CustomerID needed!
           # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target
           # [ 'UserSalutation', 'Salutation', 'salutation', 1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  'Firstname',  'first_name',     1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'last_name',      1, 1, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'login',          1, 1, 'var', '', 0 ],
           # [ 'UserPassword',   'Password',   'pw',            1, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email',      'email',          1, 1, 'var', '', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'customer_id',    0, 1, 'var', '', 0 ],
            [ 'UserPhone','Phone',      'phone',                1, 0,'var', 'click2dial.pl?agent=$Env{"UserComment"}&customer=$Data{"UserPhone"}', 0 ],
            [ 'UserMobile',      'Mobile',      'mobile',       1, 0,'var', 'click2dial.pl?agent=$Env{"UserComment"}&customer=$Data{"UserMobile"}', 0 ],
          # [ 'UserEmail',      'Email', 'email',1, 1, 'var', '$Env{"CGIHandle"}?Action=AgentTicketCompose&ResponseID=1&TicketID=$Data{"TicketID"}&ArticleID=$Data{"ArticleID"}', 0 ],
          # [ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var', '', 0 ],
          # [ 'UserComment', 'Comment', 'comments', 1, 0, 'var', '', 0 ],
          # [ 'ValidID',     'Valid',   'valid_id', 0, 1, 'int', '', 0 ],
        ],

    };
    
   
    $Self->{CustomerUser1} = 
    {
        Name => 'LDAP Backend',
        Module => 'Kernel::System::CustomerUser::LDAP',
        Params => {
            Host => $LDAP_Host,
            BaseDN => $LDAP_BaseDN,
            SSCOPE => 'sub',
            UserDN => $LDAP_SearchUserDN,
            UserPw => $LDAP_SearchUserPw,
            AlwaysFilter =>  '(uid=*)',
            DestCharset => 'utf-8',
            SourceCharset => 'utf-8',
            Params => {
                port => 393,
                timeout => 10,
                async => 0,
                version => 3,
            },
        },
        CustomerKey => 'uid',
        CustomerID => 'mail',
        CustomerUserListFields => ['name', 'mail'],
        CustomerUserSearchFields => ['uid', 'name', 'mail'],
        CustomerUserSearchListLimit => 250,
        CustomerUserPostMasterSearchFields => ['mail'],
        CustomerUserNameFields => ['name', 'name'],
        CustomerUserExcludePrimaryCustomerID => 0,
        AdminSetPreferences => 0,
        Map => [
             [ 'title',      'Title',      'title',           1, 0, 'var', '', 0 ],
             [ 'name',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
             [ 'name',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
             [ 'name',      'Username',   'uid',             1, 1, 'var', '', 0 ],
             [ 'mail',      'Email',      'mail',            1, 1, 'var', '', 0 ],
             [ 'uid', 'CustomerID', 'mail',            0, 1, 'var', '', 0 ],
        ],
    };




    $Self->{'AuthModule1'}  = 'Kernel::System::Auth::DB';
    $Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
    $Self->{'AuthModule::LDAP::Host'} = $LDAP_Host,
    $Self->{'AuthModule::LDAP::BaseDN'} = $LDAP_BaseDN,
   # ----------------------------------------------------------------------------
   # -> see internal Asamer - LDAP settings
    $Self->{'AuthModule::LDAP::UID'} = $LDAP_UID,
    $Self->{'AuthModule::LDAP::AccessAttr'} = 'member';
#<--
    # The following is valid but would only be necessary if the
    # anonymous user do NOT have permission to read from the LDAP tree
    # -------------------------------------------------------------------------------------------------------------------------
    # we have our own search-user defined for LDAP sync. functionality
    # -------------------------------------------------------------------------------------------------------------------------
# -->
    $Self->{'AuthModule::LDAP::SearchUserDN'} = $LDAP_SearchUserDN,
    $Self->{'AuthModule::LDAP::SearchUserPw'} = $LDAP_SearchUserPw,
#<--
    # -------------------------------------------------------------------------------------------------------------------------
    # in case you want to add always one filter to each ldap query, use
    # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
# -->
    $Self->{'AuthModule::LDAP::AlwaysFilter'} = '(uid=*)';
# <--
    # -------------------------------------------------------------------------------------------------------------------------
    # in case you want to add a suffix to each login name, then
    # you can use this option. e. g. user just want to use user but
    # in your ldap directory exists user@domain.
    # $Self->{'AuthModule::LDAP::UserSuffix'} = '@domain.com';

    # In case you want to convert all given usernames to lower letters you
    # should activate this option. It might be helpfull if databases are
    # in use that do not distinguish selects for upper and lower case letters
    # (Oracle, postgresql). User might be synched twice, if this option
    # is not in use.
    #  $Self->{'AuthModule::LDAP::UserLowerCase'} = 0;

    # In case you need to use OTRS in iso-charset, you can define this
    # by using this option (converts utf-8 data from LDAP to iso).
    $Self->{'AuthModule::LDAP::Charset'} = 'utf-8';

# --> activate LDAP
#    # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
    $Self->{'AuthModule::LDAP::Params'} = {
        port => 389,
              timeout => 10, 
       async => 0,
       version => 3,
    };
  
   
};
Hat vielleicht noch jemand eine idee??
Bzw. ist es denn irgendwie möglich den Kunden nun aus dem LDAP auszulesen und dann in der Datenbank anzulegen, wenn er noch nicht drin steht??
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

genau, wenn Du in die suchmaske was eingibst, dann sollte er die Kunden holen
Was soll ich denn da in der Suchmaske eingeben?
Wenn ich da ein Nutzer eingebe der nur im LDAP liegt und nicht in der DB dann findet er keinen Datensatz, wenn ich einen Nutzer nehme, der bereits in der DB liegt findet er den.

Deswegen ist meine Frage ob ich die Nutzer irgendwie automatisch abspeichern kann in der DB, also das sie ausgelesen werden und dann der Name abgespeichert wird, damit der Name vorhanden ist und der Fehler dann weg is

Code: Select all

Authentication succeeded, but no customer record is found in the customer backend
jojo
Znuny guru
Posts: 15020
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Re: LDAP Anbindung für den Kunden

Post by jojo »

dann stimmt was an Deiner Anbindung nicht. was sagt das Logfile
"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
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

Guten Morgen,

meine Anbindung stimmt, denke ich, schließlich wird erkannt das der Nutzer im LDAP existiert aber da er nicht in der Datenbank steht kann er nicht angemeldet werden. Die Nutzer werden ausgelesen, wenn sie in der OTRS DB sind. Dann werden sie aus dem LDAP ausgelesen und angemeldet.
Genau aus diesem Grund, war meine Frage, wie ich das machen kann, dass der Name in der OTRS DB abgespeichert wird, bzw. das OTRS die Namen automatisch abspeichert, damit der Name für die nächste Anmeldung verfügbar ist.
Beim Agenten habe ich das auch so gemacht mithilfe der sync-datei.
Ist das nicht irgendwie auch für den Kunden möglich???

die error_log sagt folgendes:

Code: Select all

[Tue Feb 14 07:30:49 2012] -e: Use of uninitialized value in concatenation (.) or string at /opt/otrs//Kernel/System/Log.pm line 161, <DATA> line 466.
ERROR: OTRS-CGI-10 Perl: 5.10.0 OS: linux Time: Tue Feb 14 07:30:49 2012

 Message: No such user 'beispiel'!

 Traceback (9011): 
   Module: Kernel::System::CustomerUser::SetPreferences (v1.61.2.1) Line: 493
   Module: Kernel::System::CustomerAuth::Auth (v1.34.2.2) Line: 155
   Module: Kernel::System::Web::InterfaceCustomer::Run (v1.56.2.5) Line: 203
   Module: ModPerl::ROOT::ModPerl::Registry::opt_otrs_bin_cgi_2dbin_customer_2epl::handler (unknown version) Line: 46
   Module: (eval) (v1.43.2.1) Line: 204
   Module: ModPerl::RegistryCooker::run (v1.43.2.1) Line: 204
   Module: ModPerl::RegistryCooker::default_handler (v1.43.2.1) Line: 170
   Module: ModPerl::Registry::handler (v1.99) Line: 31

[Tue Feb 14 07:30:49 2012] LDAP.pm: Subroutine new redefined at /opt/otrs//Kernel/System/CustomerAuth/LDAP.pm line 22.
[Tue Feb 14 07:30:49 2012] LDAP.pm: Subroutine GetOption redefined at /opt/otrs//Kernel/System/CustomerAuth/LDAP.pm line 103.
[Tue Feb 14 07:30:49 2012] LDAP.pm: Subroutine Auth redefined at /opt/otrs//Kernel/System/CustomerAuth/LDAP.pm line 119.
[Tue Feb 14 07:30:49 2012] LDAP.pm: Subroutine _ConvertTo redefined at /opt/otrs//Kernel/System/CustomerAuth/LDAP.pm line 355.
[Tue Feb 14 07:30:49 2012] LDAP.pm: Subroutine _ConvertFrom redefined at /opt/otrs//Kernel/System/CustomerAuth/LDAP.pm line 373.

whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

Mir ist soeben noch etwas aufgefallen!

Wenn ich mich als Agent anmelde und ein neues Telefonticket erstelle, sehe ich alle möglichen Kunden aus dem LDAP. Also wenn ich z.B. ein "A" eingebe werden mir alle mit A vorgeschlagen, das finde ich sehr gut :)

Aber wenn ich mir als Agent im Kundenbereich die Kunden ansehen will, dann steht dort kein einziger, das wird sicher auch das Problem sein, warum ein Kunde sich nicht anmelden kann, oder???
Wenn ich dann im Kundenbereich einen Namen suche, dann wird mir eine leere Zeile angezeigt.
Aber wenn ich einen Namen nehme, der vorher schon in der Datenbank lag, dann wird mir dieser angezeigt...
Irgendwo ist da noch ein Fehler drin...

Hat jemand einen Tip?
jojo
Znuny guru
Posts: 15020
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Re: LDAP Anbindung für den Kunden

Post by jojo »

Schau ins Log
"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
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

In die Log.pm??
Damit kann ich nichts anfangen :(

Code: Select all

 eval { $VersionString = 'v' . $Package1->VERSION };
Wolfgangf
Znuny ninja
Posts: 1029
Joined: 13 Apr 2009, 12:26
Znuny Version: 6.0.13
Real Name: Wolfgang Fürtbauer
Company: PBS Logitek GmbH
Location: Pinsdorf

Re: LDAP Anbindung für den Kunden

Post by Wolfgangf »

nein - ins OTRS log
/var/log/messages oder dergleichen
Produktiv:
OTRS 6.0.13/ ITSM 6.0.13
OS: SUSE Linux (SLES 12, Leap), MySql 5.5.x, 5.6.x
Windows 2012 AD Integration (agents and customers), Nagios integration (incidents, CMDB), Survey, TimeAccounting
Wolfgangf
Znuny ninja
Posts: 1029
Joined: 13 Apr 2009, 12:26
Znuny Version: 6.0.13
Real Name: Wolfgang Fürtbauer
Company: PBS Logitek GmbH
Location: Pinsdorf

Re: LDAP Anbindung für den Kunden

Post by Wolfgangf »

und kann ich bitte die gesamte /opt/optrs/Kernel/Config.pm sehen?

P.S: wir werden die Kuh schon vom Eis kriegen :)
PP.S: wenn Du deine Signatur ausfüllst mit System, .... dann wissen wir noch mehr ;)
Produktiv:
OTRS 6.0.13/ ITSM 6.0.13
OS: SUSE Linux (SLES 12, Leap), MySql 5.5.x, 5.6.x
Windows 2012 AD Integration (agents and customers), Nagios integration (incidents, CMDB), Survey, TimeAccounting
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

Wolfgangf wrote:nein - ins OTRS log
/var/log/messages oder dergleichen
in der messages steht:

Code: Select all

Feb 14 08:55:01 linux-t59g /usr/sbin/cron[1193]: Permission denied
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

Wolfgangf wrote:und kann ich bitte die gesamte /opt/optrs/Kernel/Config.pm sehen?

Code: Select all

# --
# Kernel/Config.pm - Config file for OTRS kernel
# Copyright (C) 2001-2010 xxx, http://otrs.org/
# --
# $Id: Config.pm.dist,v 1.23 2010/01/13 22:25:00 martin Exp $
# --
# 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:
#
#  -->> OTRS does have a lot of config settings. For more settings
#       (Notifications, Ticket::ViewAccelerator, Ticket::NumberGenerator,
#       LDAP, PostMaster, Session, Preferences, ...) see
#       Kernel/Config/Defaults.pm and copy your wanted lines into "this"
#       config file. This file will not be changed on update!
#
# --

package Kernel::Config;

sub Load 
{
    my $Self = shift;
    # ---------------------------------------------------- #
    # ---------------------------------------------------- #
    #                                                      #
    #         Start of your own config options!!!          #
    #                                                      #
    # ---------------------------------------------------- #
    # ---------------------------------------------------- #

    # ---------------------------------------------------- #
    # database settings                                    #
    # ---------------------------------------------------- #
    # DatabaseHost
    # (The database host.)
    $Self->{'DatabaseHost'} = 'host';
    # Database
    # (The database name.)
    $Self->{'Database'} = 'otrs';
    # DatabaseUser
    # (The database user.)
    $Self->{'DatabaseUser'} = 'user';
    # DatabasePw
    # (The password of database user. You also can use bin/otrs.CryptPassword.pl
    # for crypted passwords.)
    $Self->{'DatabasePw'} = 'password';
    # DatabaseDSN
    # (The database DSN for MySQL ==> more: "man DBD::mysql")
    $Self->{DatabaseDSN} = "DBI:mysql:database=$Self->{Database};host=$Self->{DatabaseHost};";

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

    # ---------------------------------------------------- #
    # 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$
    $Self->{'DefaultCharset'} = 'utf-8';


 # Meine Daten
    my $LDAP_Host = 'ldap';
    my $LDAP_BaseDN = 'ou=***, o=***, c=***';
    my $LDAP_UID = 'uid';
    my $LDAP_SearchUserDN= 'LDAPNM';
    my $LDAP_SearchUserPw = 'LDAPPW';

   # --------------------------------------------------- #
   # --------------------------------------------------- #
   #                                                                  #
   #         LDAP Authentifizierung Agent               #
   #   							  #
   # --------------------------------------------------- #
   # --------------------------------------------------- #
   # This is the auth. module againt the otrs db
    $Self->{AuthModule} = 'Kernel::System::Auth::DB';

    # This is an configuration for an LDAP auth. backend.
    # (take care that Net::LDAP is installed!)
    $Self->{AuthModule} = 'Kernel::System::Auth::LDAP';
    $Self->{'AuthModule::LDAP::Host'} = $LDAP_Host;
    $Self->{'AuthModule::LDAP::BaseDN'} = $LDAP_BaseDN;
    $Self->{'AuthModule::LDAP::UID'} = $LDAP_UID;

    # The following is valid but would only be necessary if the
    # anonymous user do NOT have permission to read from the LDAP tree
    $Self->{'AuthModule::LDAP::SearchUserDN'} = $LDAP_SearchUserDN;
    $Self->{'AuthModule::LDAP::SearchUserPw'} = $LDAP_SearchUserPw;

    # in case you want to add always one filter to each ldap query, use
    # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
    $Self->{'AuthModule::LDAP::AlwaysFilter'} = '(uid=*)';
    
    # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
    $Self->{'AuthModule::LDAP::Params'} = 
    {
         port    => 389,
        timeout => 120,
        async   => 0,
        version => 3,
    };
    # --------------------------------------------------- #
    # --------------------------------------------------- #
    #                                                                  #
    #                           LDAP Sync                        #
    #   						   #
    # --------------------------------------------------- #
    # --------------------------------------------------- #
    
    # This is an configuration for an LDAP auth sync. backend.
    # (take care that Net::LDAP is installed!)
    $Self->{AuthSyncModule} = 'Kernel::System::Auth::Sync::LDAP';
    $Self->{'AuthSyncModule::LDAP::Host'} = $LDAP_Host;
    $Self->{'AuthSyncModule::LDAP::BaseDN'} = $LDAP_BaseDN;
    $Self->{'AuthSyncModule::LDAP::UID'} = $LDAP_UID;

    # The following is valid but would only be necessary if the
    # anonymous user do NOT have permission to read from the LDAP tree
    $Self->{'AuthSyncModule::LDAP::SearchUserDN'} = $LDAP_SearchUserDN;
    $Self->{'AuthSyncModule::LDAP::SearchUserPw'} = $LDAP_SearchUserPw;
    
    # in case you want to add always one filter to each ldap query, use
    # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
    $Self->{'AuthSyncModule::LDAP::AlwaysFilter'} = '(uid=*)';
    
    # AuthSyncModule::LDAP::UserSyncMap
    # (map if agent should create/synced from LDAP to DB after successful login)
    $Self->{'AuthSyncModule::LDAP::UserSyncMap'} = 
    {
        # DB -> LDAP
        UserFirstname => 'Name',
        UserLastname  => 'name',
        UserEmail     => 'mail',
    };
    
    # AuthSyncModule::LDAP::UserSyncInitialGroups
    # (sync following group with rw permission after initial create of first agent
    # login)
    $Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'} = 
    [
        'users',
    ];
    
    # UserTable
    $Self->{DatabaseUserTable}       = 'users';
    $Self->{DatabaseUserTableUserID} = 'id';
    $Self->{DatabaseUserTableUserPW} = 'pw';
    $Self->{DatabaseUserTableUser}   = 'login';
    
    # --------------------------------------------------- #
    # --------------------------------------------------- #
    #                                                                  #
    #         LDAP Authentifizierung Kunde               #
    #  					             #
    # --------------------------------------------------- #
    # --------------------------------------------------- #
    
    # CustomerUser
    # (customer user database backend and settings)
    $Self->{CustomerUser} = 
     {
         Name   => 'Database Backend',
         Module => 'Kernel::System::CustomerUser::DB',
         Params => 
       {
            Table => 'customer_user',
            DestCharset => 'utf-8',
            SourceCharset => 'utf-8',
        },
        # customer uniq id
        CustomerKey => 'login',

        # customer #
        CustomerID             => 'customer_id',
        CustomerValid          => 'valid_id',
        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 => 1000,
        CustomerUserPostMasterSearchFields => ['email'],
        CustomerUserNameFields => [ 'first_name', 'last_name' ],
        
	
        ReadOnly => 1,
        Map => [

           # note: Login, Email and CustomerID needed!
           # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target
           # [ 'UserSalutation', 'Salutation', 'salutation', 1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  'Firstname',  'first_name',     1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'last_name',      1, 1, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'login',          1, 1, 'var', '', 0 ],
           # [ 'UserPassword',   'Password',   'pw',            1, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email',      'email',          1, 1, 'var', '', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'customer_id',    0, 1, 'var', '', 0 ],
            [ 'UserPhone','Phone',      'phone',                1, 0,'var', 'click2dial.pl?agent=$Env{"UserComment"}&customer=$Data{"UserPhone"}', 0 ],
            [ 'UserMobile',      'Mobile',      'mobile',       1, 0,'var', 'click2dial.pl?agent=$Env{"UserComment"}&customer=$Data{"UserMobile"}', 0 ],
          # [ 'UserEmail',      'Email', 'email',1, 1, 'var', '$Env{"CGIHandle"}?Action=AgentTicketCompose&ResponseID=1&TicketID=$Data{"TicketID"}&ArticleID=$Data{"ArticleID"}', 0 ],
          # [ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var', '', 0 ],
          # [ 'UserComment', 'Comment', 'comments', 1, 0, 'var', '', 0 ],
          # [ 'ValidID',     'Valid',   'valid_id', 0, 1, 'int', '', 0 ],
        ],

    };
    
   
    $Self->{CustomerUser1} = 
    {
        Name => 'LDAP Backend',
        Module => 'Kernel::System::CustomerUser::LDAP',
        Params => {
            Host => $LDAP_Host,
            BaseDN => $LDAP_BaseDN,
            SSCOPE => 'sub',
            UserDN => $LDAP_SearchUserDN,
            UserPw => $LDAP_SearchUserPw,
            AlwaysFilter =>  '(uid=*)',
            DestCharset => 'utf-8',
            SourceCharset => 'utf-8',
            Params => {
                port =>398,
                timeout => 10,
                async => 0,
                version => 3,
            },
        },
        CustomerKey => 'uid',
        CustomerID => 'mail',
        CustomerUserListFields => ['name', 'mail'],
        CustomerUserSearchFields => ['uid', 'name', 'mail'],
        CustomerUserSearchListLimit => 250,
        CustomerUserPostMasterSearchFields => ['mail'],
        CustomerUserNameFields => ['name', 'name'],
        CustomerUserExcludePrimaryCustomerID => 0,
        AdminSetPreferences => 0,
        Map => [
             [ 'title',      'Title',      'title',           1, 0, 'var', '', 0 ],
             [ 'name',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
             [ 'name',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
             [ 'name',      'Username',   'uid',             1, 1, 'var', '', 0 ],
             [ 'mail',      'Email',      'mail',            1, 1, 'var', '', 0 ],
             [ 'uid', 'CustomerID', 'mail',            0, 1, 'var', '', 0 ],
        ],
    };




    $Self->{'AuthModule1'}  = 'Kernel::System::Auth::DB';
    $Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
    $Self->{'AuthModule::LDAP::Host'} = $LDAP_Host,
    $Self->{'AuthModule::LDAP::BaseDN'} = $LDAP_BaseDN,
   # ----------------------------------------------------------------------------
   # -> see internal Asamer - LDAP settings
    $Self->{'AuthModule::LDAP::UID'} = $LDAP_UID,
    $Self->{'AuthModule::LDAP::AccessAttr'} = 'member';
#<--
    # The following is valid but would only be necessary if the
    # anonymous user do NOT have permission to read from the LDAP tree
    # -------------------------------------------------------------------------------------------------------------------------
    # we have our own search-user defined for LDAP sync. functionality
    # -------------------------------------------------------------------------------------------------------------------------
# -->
    $Self->{'AuthModule::LDAP::SearchUserDN'} = $LDAP_SearchUserDN,
    $Self->{'AuthModule::LDAP::SearchUserPw'} = $LDAP_SearchUserPw,
#<--
    # -------------------------------------------------------------------------------------------------------------------------
    # in case you want to add always one filter to each ldap query, use
    # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
# -->
    $Self->{'AuthModule::LDAP::AlwaysFilter'} = '(uid=*)';
# <--
    # -------------------------------------------------------------------------------------------------------------------------
    # in case you want to add a suffix to each login name, then
    # you can use this option. e. g. user just want to use user but
    # in your ldap directory exists user@domain.
    # $Self->{'AuthModule::LDAP::UserSuffix'} = '@domain.com';

    # In case you want to convert all given usernames to lower letters you
    # should activate this option. It might be helpfull if databases are
    # in use that do not distinguish selects for upper and lower case letters
    # (Oracle, postgresql). User might be synched twice, if this option
    # is not in use.
    #  $Self->{'AuthModule::LDAP::UserLowerCase'} = 0;

    # In case you need to use OTRS in iso-charset, you can define this
    # by using this option (converts utf-8 data from LDAP to iso).
    $Self->{'AuthModule::LDAP::Charset'} = 'utf-8';

# --> activate LDAP
#    # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
    $Self->{'AuthModule::LDAP::Params'} = {
        port => 389,
       timeout => 10, 
       async => 0,
       version => 3,
    };
  
   
};
      
    
    

    # ---------------------------------------------------- #
    # ---------------------------------------------------- #
    #                                                      #
    #           End of your own config options!!!          #
    #                                                      #
    # ---------------------------------------------------- #
    # ---------------------------------------------------- #


# ---------------------------------------------------- #
# needed system stuff (don't edit this)                #
# ---------------------------------------------------- #
use strict;
use warnings;

use vars qw(@ISA $VERSION);
$VERSION = qw($Revision: 1.23 $)[1];

use Kernel::Config::Defaults;
push (@ISA, 'Kernel::Config::Defaults');

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

1;


PP.S: wenn Du deine Signatur ausfüllst mit System, .... dann wissen wir noch mehr ;)
Was steht da drin?
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

In der /opt/otrs/Kernel/System/CustomerAuth/ LDAP.pm

muss da bei den gazen Objektdefinitionen und Co "AuthModule" oder "CustomerAuthModule" stehen?
Wolfgangf
Znuny ninja
Posts: 1029
Joined: 13 Apr 2009, 12:26
Znuny Version: 6.0.13
Real Name: Wolfgang Fürtbauer
Company: PBS Logitek GmbH
Location: Pinsdorf

Re: LDAP Anbindung für den Kunden

Post by Wolfgangf »

nicht verändern in den Modulen!
Produktiv:
OTRS 6.0.13/ ITSM 6.0.13
OS: SUSE Linux (SLES 12, Leap), MySql 5.5.x, 5.6.x
Windows 2012 AD Integration (agents and customers), Nagios integration (incidents, CMDB), Survey, TimeAccounting
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

ok:)

Hast du schon eine Idee, wegen den anderen Problemen?
Wolfgangf
Znuny ninja
Posts: 1029
Joined: 13 Apr 2009, 12:26
Znuny Version: 6.0.13
Real Name: Wolfgang Fürtbauer
Company: PBS Logitek GmbH
Location: Pinsdorf

Re: LDAP Anbindung für den Kunden

Post by Wolfgangf »

Code: Select all

# --
# Kernel/Config.pm - Config file for OTRS kernel
# Copyright (C) 2001-2010 xxx, http://otrs.org/
# --
# $Id: Config.pm.dist,v 1.23 2010/01/13 22:25:00 martin Exp $
# --
# 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:
#
#  -->> OTRS does have a lot of config settings. For more settings
#       (Notifications, Ticket::ViewAccelerator, Ticket::NumberGenerator,
#       LDAP, PostMaster, Session, Preferences, ...) see
#       Kernel/Config/Defaults.pm and copy your wanted lines into "this"
#       config file. This file will not be changed on update!
#
# --

package Kernel::Config;

sub Load {
        my $Self = shift;
        # ---------------------------------------------------- #
        # ---------------------------------------------------- #
        #                                                      #
        #         Start of your own config options!!!          #
        #                                                      #
        # ---------------------------------------------------- #
        # ---------------------------------------------------- #

        # ---------------------------------------------------- #
        # database settings                                    #
        # ---------------------------------------------------- #
        # DatabaseHost
        # (The database host.)
        $Self->{'DatabaseHost'} = 'host';
        # Database
        # (The database name.)
        $Self->{'Database'} = 'otrs';
        # DatabaseUser
        # (The database user.)
        $Self->{'DatabaseUser'} = 'user';
        # DatabasePw
        # (The password of database user. You also can use bin/otrs.CryptPassword.pl
        # for crypted passwords.)
        $Self->{'DatabasePw'} = 'password';
        # DatabaseDSN
        # (The database DSN for MySQL ==> more: "man DBD::mysql")
        $Self->{DatabaseDSN} = "DBI:mysql:database=$Self->{Database};host=$Self->{DatabaseHost};";

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

        # ---------------------------------------------------- #
        # 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$
        $Self->{'DefaultCharset'} = 'utf-8';


    # Meine Daten
        my $LDAP_Host = 'ldap';
        my $LDAP_BaseDN = 'ou=***, o=***, c=***';
        # my $LDAP_UID = 'uid';
	my $LDAP_UID = 'sAMAccountName';
        my $LDAP_SearchUserDN= 'LDAPNM';
        my $LDAP_SearchUserPw = 'LDAPPW';
	####
        #### my $adfilter = '(&(objectCategory=person)(objectclass=user)(mail=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))';
	####

       # --------------------------------------------------- #
       # --------------------------------------------------- #
       #                                                                  #
       #         LDAP Authentifizierung Agent               #
       #                          #
       # --------------------------------------------------- #
       # --------------------------------------------------- #
       # This is the auth. module againt the otrs db
        # $Self->{AuthModule} = 'Kernel::System::Auth::DB';
        $Self->{'AuthModule1'}  = 'Kernel::System::Auth::DB';

        # This is an configuration for an LDAP auth. backend.
        # (take care that Net::LDAP is installed!)
        $Self->{AuthModule} = 'Kernel::System::Auth::LDAP';
        $Self->{'AuthModule::LDAP::Host'} = $LDAP_Host;
        $Self->{'AuthModule::LDAP::BaseDN'} = $LDAP_BaseDN;
        $Self->{'AuthModule::LDAP::UID'} = $LDAP_UID;
        $Self->{'AuthModule::LDAP::AccessAttr'} = 'member';

        # The following is valid but would only be necessary if the
        # anonymous user do NOT have permission to read from the LDAP tree
        $Self->{'AuthModule::LDAP::SearchUserDN'} = $LDAP_SearchUserDN;
        $Self->{'AuthModule::LDAP::SearchUserPw'} = $LDAP_SearchUserPw;

        # in case you want to add always one filter to each ldap query, use
        # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
        $Self->{'AuthModule::LDAP::AlwaysFilter'} = $adfilter;
    	$Self->{'AuthModule::LDAP::Charset'} = 'utf-8';
	
       
        # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
        $Self->{'AuthModule::LDAP::Params'} =
        {
           #  port    => 389,
             port    => 3268,
            timeout => 120,
            async   => 0,
            version => 3,
        };
        # --------------------------------------------------- #
        # --------------------------------------------------- #
        #                                                                  #
        #                           LDAP Sync                        #
        #                        #
        # --------------------------------------------------- #
        # --------------------------------------------------- #
       
        # This is an configuration for an LDAP auth sync. backend.
        # (take care that Net::LDAP is installed!)
        $Self->{AuthSyncModule} = 'Kernel::System::Auth::Sync::LDAP';
        $Self->{'AuthSyncModule::LDAP::Host'} = $LDAP_Host;
        $Self->{'AuthSyncModule::LDAP::BaseDN'} = $LDAP_BaseDN;
        $Self->{'AuthSyncModule::LDAP::UID'} = $LDAP_UID;

        # The following is valid but would only be necessary if the
        # anonymous user do NOT have permission to read from the LDAP tree
        $Self->{'AuthSyncModule::LDAP::SearchUserDN'} = $LDAP_SearchUserDN;
        $Self->{'AuthSyncModule::LDAP::SearchUserPw'} = $LDAP_SearchUserPw;
       
        # in case you want to add always one filter to each ldap query, use
        # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
    	$Self->{'AuthSyncModule::LDAP::AlwaysFilter'} = $adfilter;
       
        # AuthSyncModule::LDAP::UserSyncMap
        # (map if agent should create/synced from LDAP to DB after successful login)
        $Self->{'AuthSyncModule::LDAP::UserSyncMap'} =
    	$Self->{'AuthSyncModule::LDAP::UserSyncMap'} = {
        	UserFirstname => 'givenName',
        	UserLastname => 'sn',
        	UserEmail => 'mail',
        	Username => 'sAMAccountName',
    	};
    	$Self->{'AuthModule::LDAP::Die'} = 0;
       
        # AuthSyncModule::LDAP::UserSyncInitialGroups
        # (sync following group with rw permission after initial create of first agent
        # login)
        $Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'} =
        [
            'users',
        ];
    $Self->{UserSyncLDAPMap} = {
        # DB -> LDAP
        UserFirstname => 'givenName',
        UserLastname => 'sn',
        UserEmail => 'mail',
    };
    $Self->{UserSyncLDAPGroups} = ['user',];
       
        # UserTable
        $Self->{DatabaseUserTable}       = 'users';
        $Self->{DatabaseUserTableUserID} = 'id';
        $Self->{DatabaseUserTableUserPW} = 'pw';
        $Self->{DatabaseUserTableUser}   = 'login';
       
        # --------------------------------------------------- #
        # --------------------------------------------------- #
        #                                                                  #
        #         LDAP Authentifizierung Kunde               #
        #                              #
        # --------------------------------------------------- #
        # --------------------------------------------------- #
       
        # CustomerUser
        # (customer user database backend and settings)
        $Self->{CustomerUser} =
         {
             Name   => 'Database Backend',
             Module => 'Kernel::System::CustomerUser::DB',
             Params =>
           {
                Table => 'customer_user',
                DestCharset => 'utf-8',
                SourceCharset => 'utf-8',
            },
            # customer uniq id
            CustomerKey => 'login',

            # customer #
            CustomerID             => 'customer_id',
            CustomerValid          => 'valid_id',
            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 => 1000,
            CustomerUserPostMasterSearchFields => ['email'],
            CustomerUserNameFields => [ 'first_name', 'last_name' ],
           
       
            ReadOnly => 1,
            Map => [

               # note: Login, Email and CustomerID needed!
               # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target
               # [ 'UserSalutation', 'Salutation', 'salutation', 1, 0, 'var', '', 0 ],
                [ 'UserFirstname',  'Firstname',  'first_name',     1, 1, 'var', '', 0 ],
                [ 'UserLastname',   'Lastname',   'last_name',      1, 1, 'var', '', 0 ],
                [ 'UserLogin',      'Username',   'login',          1, 1, 'var', '', 0 ],
               # [ 'UserPassword',   'Password',   'pw',            1, 1, 'var', '', 0 ],
                [ 'UserEmail',      'Email',      'email',          1, 1, 'var', '', 0 ],
                [ 'UserCustomerID', 'CustomerID', 'customer_id',    0, 1, 'var', '', 0 ],
                [ 'UserPhone','Phone',      'phone',                1, 0,'var', '', 0 ],
                [ 'UserMobile',      'Mobile',      'mobile',       1, 0,'var', '', 0 ],
              # [ 'UserEmail',      'Email', 'email',1, 1, 'var', '$Env{"CGIHandle"}?Action=AgentTicketCompose&ResponseID=1&TicketID=$Data{"TicketID"}&ArticleID=$Data{"ArticleID"}', 0 ],
              # [ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var', '', 0 ],
              # [ 'UserComment', 'Comment', 'comments', 1, 0, 'var', '', 0 ],
              # [ 'ValidID',     'Valid',   'valid_id', 0, 1, 'int', '', 0 ],
            ],

        };
       
       
        $Self->{CustomerUser1} =
        {
            Name => 'LDAP Backend',
            Module => 'Kernel::System::CustomerUser::LDAP',
            Params => {
                Host => $LDAP_Host,
                BaseDN => $LDAP_BaseDN,
                SSCOPE => 'sub',
                UserDN => $LDAP_SearchUserDN,
                UserPw => $LDAP_SearchUserPw,
                # AlwaysFilter =>  '(uid=*)',
                AlwaysFilter =>  $adfilter,
                DestCharset => 'utf-8',
                SourceCharset => 'utf-8',
                Params => {
                    # port =>398,
                    port =>3268,
                    timeout => 10,
                    async => 0,
                    version => 3,
                },
            },
            CustomerID => 'mail',
            CustomerKey => $LDAP_UID, 
            CustomerUserListFields => ['cn', 'mail'],
            CustomerUserSearchFields => [$LDAP_UID, 'cn', 'name', 'mail'],
            CustomerUserSearchListLimit => 1000,
            CustomerUserPostMasterSearchFields => ['mail'],
            CustomerUserNameFields => ['givenname', 'sn'],
            CustomerUserExcludePrimaryCustomerID => 0,
            AdminSetPreferences => 0,
            Map => [
            [ '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 ],
           [ 'UserMobile',     'Mobile',      'mobile',         1, 0,'var', '',  0 ].
            ],
        };


        $Self->{'AuthModule::LDAP::UID'} = $LDAP_UID,
        $Self->{'AuthModule::LDAP::AccessAttr'} = 'member';

  # This is the auth. module against the otrs db
    $Self->{'Customer::AuthModule1'} = 'Kernel::System::CustomerAuth::DB';
    $Self->{'Customer::AuthModule::DB::Table1'} = 'customer_user';
    $Self->{'Customer::AuthModule::DB::CustomerKey1'} = 'login';
    $Self->{'Customer::AuthModule::DB::CustomerPassword1'} = 'pw';
  # This is the auth. module against LDAP
    $Self->{'Customer::AuthModule2'} = 'Kernel::System::CustomerAuth::LDAP';
    $Self->{'Customer::AuthModule::LDAP::Host2'} = $LDAP_Host;
    $Self->{'Customer::AuthModule::LDAP::BaseDN2'} = $LDAP_BaseDN;
    $Self->{'Customer::AuthModule::LDAP::UID2'} = $LDAP_UID;
    $Self->{'Customer::AuthModule::LDAP::SearchUserDN2'} = $LDAP_SearchUserDN;
    $Self->{'Customer::AuthModule::LDAP::SearchUserPw2'} = $LDAP_SearchUserPw;
    $Self->{'Customer::AuthModule::LDAP::AlwaysFilter2'} = $adfilter;
    $Self->{'Customer::AuthModule::LDAP::Params2'} = {
        port => 3268,
        timeout => 10,
        async => 0,
        version => 3,
    };
    #<--
        # The following is valid but would only be necessary if the
        # anonymous user do NOT have permission to read from the LDAP tree
        # -------------------------------------------------------------------------------------------------------------------------
        # we have our own search-user defined for LDAP sync. functionality
        # -------------------------------------------------------------------------------------------------------------------------
    # -->
        $Self->{'AuthModule::LDAP::SearchUserDN'} = $LDAP_SearchUserDN,
        $Self->{'AuthModule::LDAP::SearchUserPw'} = $LDAP_SearchUserPw,
    #<--
        # -------------------------------------------------------------------------------------------------------------------------
        # in case you want to add always one filter to each ldap query, use
        # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
    # -->
    # <--
        # -------------------------------------------------------------------------------------------------------------------------
        # in case you want to add a suffix to each login name, then
        # you can use this option. e. g. user just want to use user but
        # in your ldap directory exists user@domain.
        # $Self->{'AuthModule::LDAP::UserSuffix'} = '@domain.com';

        # In case you want to convert all given usernames to lower letters you
        # should activate this option. It might be helpfull if databases are
        # in use that do not distinguish selects for upper and lower case letters
        # (Oracle, postgresql). User might be synched twice, if this option
        # is not in use.
        #  $Self->{'AuthModule::LDAP::UserLowerCase'} = 0;

        # In case you need to use OTRS in iso-charset, you can define this
        # by using this option (converts utf-8 data from LDAP to iso).
        $Self->{'AuthModule::LDAP::Charset'} = 'utf-8';

    # --> activate LDAP
    #    # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
        $Self->{'AuthModule::LDAP::Params'} = {
            port => 389,
           timeout => 10,
           async => 0,
           version => 3,
        };
     
       
    };
         
       
       

        # ---------------------------------------------------- #
        # ---------------------------------------------------- #
        #                                                      #
        #           End of your own config options!!!          #
        #                                                      #
        # ---------------------------------------------------- #
        # ---------------------------------------------------- #


    # ---------------------------------------------------- #
    # needed system stuff (don't edit this)                #
    # ---------------------------------------------------- #
    use strict;
    use warnings;

    use vars qw(@ISA $VERSION);
    $VERSION = qw($Revision: 1.23 $)[1];

    use Kernel::Config::Defaults;
    push (@ISA, 'Kernel::Config::Defaults');

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

    1;


magst es mal mit dieser Version probieren?
LG
Produktiv:
OTRS 6.0.13/ ITSM 6.0.13
OS: SUSE Linux (SLES 12, Leap), MySql 5.5.x, 5.6.x
Windows 2012 AD Integration (agents and customers), Nagios integration (incidents, CMDB), Survey, TimeAccounting
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

Hallo,

habe das mit deinem Code versucht.
Leider kann ich mich nun mit gar keinem Nutzer mehr anmelden. Weder als Kunde noch als Agent.

Die error_log:

Code: Select all

[Tue Feb 14 13:45:06 2012] -e: Use of uninitialized value in concatenation (.) or string at /opt/otrs//Kernel/System/Log.pm line 161, <DATA> line 466.
ERROR: OTRS-CGI-10 Perl: 5.10.0 OS: linux Time: Tue Feb 14 13:45:06 2012

 Message: 0000208D: NameErr: DSID-031522C9, problem 2001 (NO_OBJECT), data 0, best match of:
	'O=***,C=***'
h (v1.50.2.1) Line: 181
   Module: Kernel::System::Web::InterfaceAgent::Run (v1.58.2.1) Line: 203
   Module: ModPerl::ROOT::ModPerl::Registry::opt_otrs_bin_cgi_2dbin_index_2epl::handler (unknown version) Line: 46
   Module: (eval) (v1.89.2.1) Line: 204
   Module: ModPerl::RegistryCooker::run (v1.89.2.1) Line: 204
   Module: ModPerl::RegistryCooker::default_handler (v1.89.2.1) Line: 170
   Module: ModPerl::Registry::handler (v1.99) Line: 31


whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

Wenn ich bei

Code: Select all

# Meine Daten
        my $LDAP_Host = 'ldap';
        my $LDAP_BaseDN = 'ou=***, o=***, c=***';
        # my $LDAP_UID = 'uid';
   my $LDAP_UID = 'sAMAccountName';
        my $LDAP_SearchUserDN= 'LDAPNM';
        my $LDAP_SearchUserPw = 'LDAPPW';

das sAMA.... auskommentiere und uid wieder ein, kann ich mich wieder ganz normal anmelden.
Es funktioniert soweit nun auch schon fast alles...
Das einzige ist noch, wenn der Kunde sich noch nicht angemeldet hat am System (also nicht in der OTRS Datenbank liegt), das er dann angelegt wird, sofern er im LDAP existiert.

Wenn das beim Agenten funktioniert, funktioniert es sicher doch auch beim Kunden?

Das heißt also, ich muss irgendwo sagen, dass er den noch nicht angelegten Kunden anlegen soll...
Noch jemand eine Idee???
jojo
Znuny guru
Posts: 15020
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Re: LDAP Anbindung für den Kunden

Post by jojo »

sag mal, liest Du eigentlich die ganzen Post die Wolfgang und ich geschrieben haben? Es werden keine Kunden in der Datenbank angelegt (gesynct).

Irgendetwas anderes stimmt nicht bei Deinem Setup. Dazu müsstest Du auch mal schauen was für Fehler im Log auftauchen.

Aber ich gebs auf... Kauf am besten Support und lass das System einrichten
"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
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

jojo wrote:sag mal, liest Du eigentlich die ganzen Post die Wolfgang und ich geschrieben haben? Es werden keine Kunden in der Datenbank angelegt (gesynct).
Ich lese selbstverständlich alles, was ihr schreibt...War nur ne Frage, da es beim Agenten so ist.
Eine Frage habe ich allerdings noch dazu, warum werden mir dann Kunden in der Datenbank angezeigt, wenn ich im MySQL die Tabelle CustomerUser öffne??
Da stehen 5 Kunden oder so drin, mit welchen auch die Anmeldung klappt...
Irgendetwas anderes stimmt nicht bei Deinem Setup. Dazu müsstest Du auch mal schauen was für Fehler im Log auftauchen.

Ich schaue mir auch die Fehler an, die im Log stehen, wenn ich nicht weiterkomme....
Aber ich gebs auf... Kauf am besten Support und lass das System einrichten
Ich kaufe mit 100%iger Sicherheit keinen Support, da ich das System nur teste und wir anschließend überlegen werden, ob wir das System verwenden in unserem Unternehmen.
Dafür muss es allerdings erst einmal richtig laufen.
Ich bin nun soweit gekommen und werde nicht aufgeben...
klar, viele Schritte bin ich weiter, dank eurer Hilfe, vieles habe ich auch schon hinbekommen...
Das ist das einzige Problem was ich momentan noch habe, was erstmal funktionieren muss...

Außerdem danke ich für die mithilfe....
Ich denke hier ist niemand verpflichtet zu antworten, wenn er nicht möchte...
Wolfgangf
Znuny ninja
Posts: 1029
Joined: 13 Apr 2009, 12:26
Znuny Version: 6.0.13
Real Name: Wolfgang Fürtbauer
Company: PBS Logitek GmbH
Location: Pinsdorf

Re: LDAP Anbindung für den Kunden

Post by Wolfgangf »

# Meine Daten
my $LDAP_Host = 'ldap';
my $LDAP_BaseDN = 'ou=***, o=***, c=***';
# my $LDAP_UID = 'uid';
my $LDAP_UID = 'sAMAccountName';
my $LDAP_SearchUserDN= 'LDAPNM';
my $LDAP_SearchUserPw = 'LDAPPW';
na, da bin ich davon ausgegangen, dass Du das absichtlich ausgesternt hast
und BTW: noch eine Annahme von mir: Du authentizierst gegen Active Directory, deshalb sAMAccountname

Du hast uns Dein Setup immer noch nicht veraten (zum Thema Signatur hier im Forum)
Wenn das beim Agenten funktioniert, funktioniert es sicher doch auch beim Kunden?

Das heißt also, ich muss irgendwo sagen, dass er den noch nicht angelegten Kunden anlegen soll...
Noch jemand eine Idee???
Wie jojo schon sagt: Nein, das ist nicht implementiert. Und wenn er das sagt, kannst du das getrost glauben ;)
Aber warum brauchst du das? Mit der LDAP Anbindung zieht er die relevanten Daten ja eh von dort her
Außerdem danke ich für die mithilfe....
Ich denke hier ist niemand verpflichtet zu antworten, wenn er nicht möchte...
Bitte, gerne
Produktiv:
OTRS 6.0.13/ ITSM 6.0.13
OS: SUSE Linux (SLES 12, Leap), MySql 5.5.x, 5.6.x
Windows 2012 AD Integration (agents and customers), Nagios integration (incidents, CMDB), Survey, TimeAccounting
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

Hallo,
Wolfgangf wrote:[quote
na, da bin ich davon ausgegangen, dass Du das absichtlich ausgesternt hast
und BTW: noch eine Annahme von mir: Du authentizierst gegen Active Directory, deshalb sAMAccountname
Ich hab es absichtlich ausgesternt, richtig. :)
Mit dem sAMAccountname klappt das bei uns nicht, ich habe meinen Kollege gefragt und der sagte mir das das in unserem Unternehmen keinerlei Verwendung findet, da wir unsere eigenen Parameter haben.
Diese habe ich aber in der Konfiguration angegeben in der Config.
Wie jojo schon sagt: Nein, das ist nicht implementiert. Und wenn er das sagt, kannst du das getrost glauben ;)
Aber warum brauchst du das? Mit der LDAP Anbindung zieht er die relevanten Daten ja eh von dort her
Ich denke das ich das brauche, damit unsere Nutzer sich als Kunden anmelden können. Denn ich verstehe die Fehlermeldung so, dass erkannt wird das dieser Nutzer im LDAP existiert, aber er nicht bestätigt werden kann, da er im OTRS selbst nicht angelegt ist.
Vielleicht habe ich auch an dieser Stelle einen Denkfehler, der mir das Genick bricht... :(

ICh weiß mittlerweile, dass ich Agenten und Kunden nicht miteinander vergleichen kann von der Konfiguration her, aber trotzdem würde ich es gern nochmal erwähnen:
Beim Agenten, habe ich die LDAP Anbindung wie in der Config.pm zusehen ist. Dann habe ich in der /opt/otrs/Kernel/System/auth/Snyc/LDAP.pm

für die E-Mail hinter den Parameter unsere Unternehmensemailadresse getragen. Also Nutzer@Firma.de

Code: Select all

# sync user
        if (%SyncUser) {
            my %UserData = $Self->{UserObject}->GetUserData( User => $Param{User} );
            if ( !%UserData ) {
                #Eigene Konfiguration
                $SyncUser{'UserEmail'}=$Param{User}.'@unternehmenbeispiel.de';
                my $UserID = $Self->{UserObject}->UserAdd(
                    UserLogin      => $Param{User},
                    %SyncUser,
                    UserType     => 'User',
                    ValidID      => 1,
                    ChangeUserID => 1,                );
                if ( !$UserID ) {
                    $Self->{LogObject}->Log(
                        Priority => 'error',
                        Message  => "Can't create user '$Param{User}' ($UserDN) in RDBMS!",                    );
                }
                else {
                    $Self->{LogObject}->Log(
                        Priority => 'notice',
                        Message  => "Initial data for '$Param{User}' ($UserDN) created in RDBMS.",
                    );
[...]
Damit habe ich dann bezweckt, das der Agent, sobald er sich am OTRS anmeldet in der Datenbank angelegt wird. Und da in dem Formular eine E-Mail Adresse gebraucht wird und unser DAP diese Information aber nicht ausgibt habe ich das dann so gemacht.
Nun ist es also so, wenn der Agent sich am System anmeldet, aber noch nicht in der Datenbank des OTRS liegt, dass er aus dem LDAP ausgelesen wird und angelegt wird.

Und so etwas ähnliches wollte ich nun auch mit den Kunden.
Aber ihr sagt ja, dass keinerlei Daten gespeichert werden in der Datenbank.
Leider sehe ich nun keine Lösung, wie der Nutzer sich nun anmelden kann, schließlich kann er sich nicht anmelden, wenn er nicht in der Datenbank/Tabelle CustomerUser abgelegt ist.

Vielleicht habe ich auch hier einen Denkfehler?
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

Hallo,

ich habe mal ein "otrs restart" gemacht und soweit hat alles geklappt, nur leider wurde ein Fehler ausgegeben, der anscheinend aber zum wieder neustarten nichts beeinflusst hat.

Code: Select all

ERROR: Customer::AuthModule::LDAP::AlwaysFilter2 not defined!
Wie muss ich den Filter definieren?
Wolfgangf
Znuny ninja
Posts: 1029
Joined: 13 Apr 2009, 12:26
Znuny Version: 6.0.13
Real Name: Wolfgang Fürtbauer
Company: PBS Logitek GmbH
Location: Pinsdorf

Re: LDAP Anbindung für den Kunden

Post by Wolfgangf »

mach doch einfach den gleichen wie bei den anderen rein
Produktiv:
OTRS 6.0.13/ ITSM 6.0.13
OS: SUSE Linux (SLES 12, Leap), MySql 5.5.x, 5.6.x
Windows 2012 AD Integration (agents and customers), Nagios integration (incidents, CMDB), Survey, TimeAccounting
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

ok danke, werde ich versuchen:)
root
Administrator
Posts: 4237
Joined: 18 Dec 2007, 12:23
Znuny Version: Znuny and Znuny LTS
Real Name: Roy Kaldung
Company: Znuny
Contact:

Re: LDAP Anbindung für den Kunden

Post by root »

whiteotrs wrote: Ich denke das ich das brauche, damit unsere Nutzer sich als Kunden anmelden können. Denn ich verstehe die Fehlermeldung so, dass erkannt wird das dieser Nutzer im LDAP existiert, aber er nicht bestätigt werden kann, da er im OTRS selbst nicht angelegt ist.
Vielleicht habe ich auch an dieser Stelle einen Denkfehler, der mir das Genick bricht... :(

ICh weiß mittlerweile, dass ich Agenten und Kunden nicht miteinander vergleichen kann von der Konfiguration her, aber trotzdem würde ich es gern nochmal erwähnen:
Beim Agenten, habe ich die LDAP Anbindung wie in der Config.pm zusehen ist. Dann habe ich in der /opt/otrs/Kernel/System/auth/Snyc/LDAP.pm

für die E-Mail hinter den Parameter unsere Unternehmensemailadresse getragen. Also Nutzer@Firma.de
Es gibt den Parameter UserSuffix bei Auth::LDAP, der sollte das gleiche bewirken. Damit muss man nicht mehr im Code rumfummeln.
Geht das nicht immer eine Kopie der Datei (mit dem komplettem Pfad) unter /opt/otrs/Custom anlegen und diese verändern.

whiteotrs wrote: Damit habe ich dann bezweckt, das der Agent, sobald er sich am OTRS anmeldet in der Datenbank angelegt wird. Und da in dem Formular eine E-Mail Adresse gebraucht wird und unser DAP diese Information aber nicht ausgibt habe ich das dann so gemacht.
Nun ist es also so, wenn der Agent sich am System anmeldet, aber noch nicht in der Datenbank des OTRS liegt, dass er aus dem LDAP ausgelesen wird und angelegt wird.
Das hast Du richtig verstanden und so auchmachbar, aber bitte /opt/otrs/Custome nutzen.
whiteotrs wrote: Und so etwas ähnliches wollte ich nun auch mit den Kunden.
Aber ihr sagt ja, dass keinerlei Daten gespeichert werden in der Datenbank.
Leider sehe ich nun keine Lösung, wie der Nutzer sich nun anmelden kann, schließlich kann er sich nicht anmelden, wenn er nicht in der Datenbank/Tabelle CustomerUser abgelegt ist.

Vielleicht habe ich auch hier einen Denkfehler?
Ja, den hast Du. Customer werden nicht gesynct. Punkt. Period. Aus. Schluss. Ende. ;-) Die (mitgelieferte) Tabelle ist nur da, damit man schon einmal etwas hat um Kunden anzulegen.
Ich nutze zum Beispiel die Tabeller CustomerUser nur fuer wenige, spezielle Kunden. Dann habe ich ein Active Directory wo ich unterschiedliche OUs mit verschiedenen Mappings via LDAP angebunden hab und zu guter letzt ein CRM mit vielen weiteren Kunden. Dabei gilt folgendes:

- Kunden werden in der Reihenfolge der Konfiguration gesucht: CustomerUser, CustomerUser1, CustomerUser2. Der erste Treffer siegt, was das Login-Merkmal angeht.
- Beim Authentifizieren ist es genau so. CustomerAuth, CustomerAuth1, ... Und auch hier wieder: First Match
- Du benötigst nicht bei jedem CustomerUser auch das CustomerAuth als Gegenstück. Nur bei denen die das Kundenfrontend nutzen dürfen/sollen, Du könntest auch etwas ganz anderes zum authentifizieren nutzen, oder wie bei mir die drei LDAP Konfig aus einem AD beim Auth wieder als ein Ganzes behandeln.

Als Beispiel mal meine Konfig:

CustomerUser: OTRS Tabelle CustomerUser (PostgreSQL)
CustomerUser1: LDAP (AD 2k8R2), OU #1
CustomerUser2: LDAP (AD 2k8R2), OU #2
CustomerUser3: LDAP (AD 2k8R2), OU #3
CustomerUser4: CRM via DBI::Oracle

CustomerAuth: OTRS Tabelle CustomerUser (PostgreSQL)
CustomerAuth1: LDAP (AD 2k8R2)
CustomerAuth2: CRM via DBI::Oracle

Ich hoffe mal damit ein wenig Licht in die Sache gebracht zu haben.
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 ?
kitzingmarko
Znuny newbie
Posts: 17
Joined: 18 Jan 2012, 15:07
Znuny Version: 3.1.0
Real Name: Marko Kitzing
Company: Idealo Internet GmbH

Re: LDAP Anbindung für den Kunden

Post by kitzingmarko »

whiteotrs wrote:ok danke, werde ich versuchen:)
Ich habe den Thread nur überflogen. Daher kann ich nur raten, ob nicht vielleicht folgndes Dein Problem wenigstens teilweise löst: http://www.otrs.com/de/produkte/otrs-he ... ttributes/. Das ist allerdings nicht kostenlos, sondern im Rahmen einer Subscription zu erwerben.
Produktives OTRS:
  • OTRS 3.0.11
  • Support 1.2.8
Test OTRS:
  • OTRS 3.1.1
  • ITSM 3.1.1
  • FAQ 2.1.1
  • Support 1.3.2
whiteotrs
Znuny newbie
Posts: 84
Joined: 10 Feb 2012, 15:12
Znuny Version: 3.0.11

Re: LDAP Anbindung für den Kunden

Post by whiteotrs »

Hallo,

erst einmal vielen Dank für die vielen hilfreichen Tipps.
Es gibt den Parameter UserSuffix bei Auth::LDAP, der sollte das gleiche bewirken. Damit muss man nicht mehr im Code rumfummeln.
Geht das nicht immer eine Kopie der Datei (mit dem komplettem Pfad) unter /opt/otrs/Custom anlegen und diese verändern.
Den Parameter UserSuffix habe ich nun angepasst auf Name@Firma.de
Ist das richtig? Der Name ist der Parameter aus dem LDAP.
(Es funktioniert noch nicht, gleiches Problem wie vorher:
"Authentication succeeded, but no customer record is found in the customer backend. Please contact your administrator")
:-? :(
Eine andere Frage zu der Sachen, wenn es nicht funktioniert, dann sollte ich in dem Verzeichnis /opt/otrs einen Ordner "Custom" erstellen? Und was soll ich darin sichern?
Dem konnte ich leider nicht so wirklich folgen.
Locked