<?xml version="1.0" encoding="ISO-8859-1"?>
<chapter id="user">
  <title>Benutzer (Agenten)</title>

  <para>Dieses Kapitel wird Ihnen mehr Details über die Systembenutzer
  (Agenten) zeigen.</para>

  <section id="user-howto">
    <title>Wie es funktioniert</title>

    <para>Sie benötigen Agenten, die sich um all die Tickets kümmern.</para>

    <section>
      <title>Admin-Interface</title>

      <para>Editieren Sie Ihre Agenten über das Admin-Interface.</para>
    </section>
  </section>

  <section id="user-backend">
    <title>Benutzer-Backend</title>

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

    <para>Benutzer-Backends (für DB und LDAP) sind für OTRS 2.0 geplant.</para>
  </section>

  <section id="user-auth-backend">
    <title>Benutzer-Authentifizierung-Backend</title>

    <section id="user-auth-backend-db">
      <title>Datenbank (Standard)</title>

      <para>Das standardmäßige Benutzer-Authentifizierung-Backend ist die
      otrs-Datenbank.</para>

      <para><programlisting>
    [Kernel/Config.pm]
    # This is the auth. module againt the otrs db
    $Self-&#62;{&#39;AuthModule&#39;} = &#39;Kernel::System::Auth::DB&#39;;
    [...]
</programlisting></para>
    </section>

    <section id="user-auth-backend-ldap">
      <title>LDAP</title>

      <para>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.</para>

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

    # 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-&#62;{&#39;AuthModule::LDAP::GroupDN&#39;} = &#39;cn=otrsallow,ou=posixGroups,dc=example,dc=com&#39;;
#    $Self-&#62;{&#39;AuthModule::LDAP::AccessAttr&#39;} = &#39;memberUid&#39;;

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

    # 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'} = '';

    # 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';

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

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

      <para><programlisting>
    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
</programlisting></para>

      <para>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 &#62; 1.1.x
      automatisch beim ersten Login erledigt.</para>

      <para>TODO: soll es wirklich ein Kleiner-Zeichen sein?</para>

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

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

    <section id="user-auth-backend-httpauth">
      <title>HTTPBasicAuth</title>

      <para>Falls Sie eine &#34;single sign on&#34;-Lösung benutzen, benutzen
      Sie http basic authentication (für alle Ihre Systeme) und benutzen Sie
      das HTTPBasicAuth Modul (kein OTRS-Login benötigt!).</para>

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

<section id="user-auth-backend-radius">
<title>Radius</title>
<para>
Authentifizierug gegen einen Radius-Server.
<programlisting>
    [Kernel/Config.pm]
    # This is example configuration to auth. agents against a radius server
    $Self->{'AuthModule'} = 'Kernel::System::Auth::Radius';
    $Self->{'AuthModule::Radius::Host'} = 'radiushost';
    $Self->{'AuthModule::Radius::Password'} = 'radiussecret';
    [...]
</programlisting>
</para>
</section>


  </section>
</chapter>
