# Benutzer (Agenten)

Dieses Kapitel wird Ihnen mehr Details über die Systembenutzer (Agenten) zeigen.

## Wie es funktioniert

Sie benötigen Agenten, die sich um all die Tickets kümmern.

### Admin-Interface

Editieren Sie Ihre Agenten über das Admin-Interface.

## Benutzer-Backend

Es gibt kein existierendes Benutzer-Backend. Im Moment muss sich der OTRS Agent in der otrs-Datenbank befinden.

Benutzer-Backends (für DB und LDAP) sind für OTRS 2.0 geplant.

## Benutzer-Authentifizierung-Backend

### Datenbank (Standard)

Das standardmäßige Benutzer-Authentifizierung-Backend ist die otrs-Datenbank.

        [Kernel/Config.pm]
        # This is the auth. module againt the otrs db
        $Self->{'AuthModule'} = 'Kernel::System::Auth::DB';
        [...]

### LDAP

Falls ein LDAP-Verzeichnis verfügbar ist, können Sie das LDAP-Authentifizierung-Backend benutzen. Dieses Modul ist nur-lesend (d.h. es kann nicht in Ihr LDAP-Verzeichnis schreiben - dies sollte nur für Ihren Verzeichnis-Manager möglich sein), so dass Sie keine Benutzer via Admin-Interface erstellen oder aktualisieren können.

        [Kernel/Config.pm]
        # This is an example configuration for an LDAP auth. backend.
        # (take care that Net::LDAP is installed!)
        $Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
        $Self->{'AuthModule::LDAP::Host'} = 'ldap.example.com';
        $Self->{'AuthModule::LDAP::BaseDN'} = 'dc=example,dc=com';
        $Self->{'AuthModule::LDAP::UID'} = 'uid';

        # Check if the user is allowed to auth in a posixGroup
        # (e. g. user needs to be in a group xyz to use otrs)
    #    $Self->{'AuthModule::LDAP::GroupDN'} = 'cn=otrsallow,ou=posixGroups,dc=example,dc=com';
    #    $Self->{'AuthModule::LDAP::AccessAttr'} = 'memberUid';

        # 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'} = '';
        $Self->{'AuthModule::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'} = '';

        # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
    #    $Self->{'AuthModule::LDAP::Params'} = {
    #        port => 389,
    #        version => 3,
    #    };
        [...]

LDAP-Einträge sollen konform zum PosixAccount und inetOrgPerson Schema sein. Ein Beispiel-Eintrag könnte folgendermaßen aussehen:

        dn: uid=lester,ou=user,dc=example,dc=com
        objectClass: top
        objectClass: account
        objectClass: posixAccount
        objectClass: organizationalPerson
        objectClass: inetOrgPerson
        objectClass: officePerson
        uid: lester
        cn: Lester Adamas
        userPassword: {crypt}X5/DBrWPOQQaI
        gecos: Lester
        loginShell: /bin/csh
        uidNumber: 10
        gidNumber: 10
        homeDirectory: /home/lester
        sn: Adams
        givenName: Lester
        mail: lester@example.com
        preferredLanguage: fr
        comment: technical support

Bitte beachten Sie, dass Sie in Version 1.x einen DB-Eintrag für den LDAP-Benutzer anlegen müssen. Dies wird in den Versionen < 1.1.x automatisch beim ersten Login erledigt.

TODO: soll es wirklich ein Kleiner-Zeichen sein?

Dies sind die Standard-Konfigurations-Optionen, um die LDAP-Attribute auf die Datenbank zu mappen:

        # UserSyncLDAPMap
        # (map if agent should create/synced from LDAP to DB after login)
        $Self->{UserSyncLDAPMap} = {
            # DB -> LDAP
            Firstname => 'givenName',
            Lastname => 'sn',
            Email => 'mail',
        };

### HTTPBasicAuth

Falls Sie eine "single sign on"-Lösung benutzen, benutzen Sie http basic authentication (für alle Ihre Systeme) und benutzen Sie das HTTPBasicAuth Modul (kein OTRS-Login benötigt!).

        [Kernel/Config.pm]
        # This is the auth. module againt $ENV{REMOTE_USER} (apache
        # http-basic-auth)
        $Self->{'AuthModule'} = 'Kernel::System::Auth::HTTPBasicAuth';
        # Note:
        # If you use this module, you should use as fallback the following
        # config settings if user isn't login through apache ($ENV{REMOTE_USER})
        $Self->{LoginURL} = 'http://host.example.com/not-authorised-for-otrs.html';
        $Self->{LogoutURL} = 'http://host.example.com/thanks-for-using-otrs.html';
        [...]