Authentification Agent - LDAP - Specifique AD Group

Post Reply
pdejong
Znuny newbie
Posts: 3
Joined: 24 Jun 2013, 10:15
Znuny Version: 3.4.2
Real Name: Pierre
Company: Collignon Eng

Authentification Agent - LDAP - Specifique AD Group

Post by pdejong »

Bonjour,

Je souhaiterais pouvoir authentifier les agents OTRS suivant un groupe spécifique de mon active directory.

L'authentification "active directory" semble fonctionner, mais j'ai du mal quand au fait de "limite" les agents a un groupe. En gros, un utilisateur, qui est dans le group AD "OTRS-ALLOW-A" entre son login/pass, otrs me dit que l'authentification a fonctionner, mais qu'il ne trouve pas d'info concernant ce user: il s'agirait de la "syncronisation" du user AD dans la DB local d'OTRS.

Voiçi quelques infos:

- Version d'OTRS: Fonction assurée par OTRS 3.2.8
- Serveur Debian 7.1 (x86)
- Utilisateur Active directory pour l'authentification: OTRS (with password: otrs1$) --> 'CN=OTRS,OU=Prestataires-Services,OU=Special,OU=Sites,DC=domain,DC=priv'
- Groupe Active Directory qui dont le user devrait être membre pour pouvoir être agent: OTRS-ALLOW-A --> 'CN=OTRS-ALLOW-A,OU=groups,OU=Sites,DC=domain,DC=priv'

La partie de code que j'ai ajouter dans mon "Config.pm"

Si quelqu'un a une idée, je suis preneur.

Bonne journée à vous, et d'avance merci pour toutes aide

Code: Select all

#--------------------------------------------------------#
#                                                        #
#                                                        #
#    Here Starts Config For ADUC Agent and Customer      #
#                                                        #
#                                                        #
#--------------------------------------------------------#    
            # This is an example configuration for an LDAP auth. backend.
    # (take care that Net::LDAP is installed!)
   $Self->{AuthModule1} = 'Kernel::System::Auth::LDAP';
   $Self->{'AuthModule::LDAP::Host1'} = 'server.domain.priv';
   $Self->{'AuthModule::LDAP::BaseDN1'} = 'dc=domain,dc=priv';
   $Self->{'AuthModule::LDAP::UID1'} = 'sAMAccountName';

   # 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::GroupDN1'} = 'CN=OTRS-ALLOW-A,OU=groups,OU=Sites,DC=domain,DC=priv';
    $Self->{'AuthModule::LDAP::AccessAttr1'} = 'member';
    # for ldap posixGroups objectclass (just uid)
   $Self->{'AuthModule::LDAP::UserAttr1'} = 'DN';
    # for non ldap posixGroups objectclass (with full user dn)
 #  $Self->{'AuthModule::LDAP::UserAttr1'} = 'DN';
   
   
   
    # 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::SearchUserDN1'} = 'CN=OTRS,OU=Prestataires-Services,OU=Special,OU=Sites,DC=domain,DC=priv';
   $Self->{'AuthModule::LDAP::SearchUserPw1'} = 'otrs1$';

     # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
   $Self->{'AuthModule::LDAP::Params1'} = {
       port    => 389,
       timeout => 120,
       async   => 0,
       version => 3,
   };
      # --------------------------------------------------- #
    # authentication sync settings                        #
    # (enable agent data sync. after succsessful          #
    # authentication)                                     #
    # --------------------------------------------------- #
    # This is an example configuration for an LDAP auth sync. backend.
    # (take care that Net::LDAP is installed!)
   $Self->{AuthSyncModule1} = 'Kernel::System::Auth::Sync::LDAP';
   $Self->{'AuthSyncModule::LDAP::Host1'} = 'server.domain.priv';
   $Self->{'AuthSyncModule::LDAP::BaseDN1'} = 'dc=domain,dc=priv';
   $Self->{'AuthSyncModule::LDAP::UID1'} = 'sAMAccountName';

    # 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::SearchUserDN1'} = 'CN=OTRS,OU=Prestataires-Services,OU=Special,OU=Sites,DC=domain,DC=priv';
   $Self->{'AuthSyncModule::LDAP::SearchUserPw1'} = 'otrs1$';

     # 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::GroupDN1'} = 'CN=OTRS-ALLOW-A,OU=groups,OU=Sites,DC=domain,DC=priv';
    $Self->{'AuthModule::LDAP::AccessAttr1'} = 'member';
    # for ldap posixGroups objectclass (just uid)
   $Self->{'AuthModule::LDAP::UserAttr1'} = 'DN';
    # for non ldap posixGroups objectclass (with full user dn)
 #  $Self->{'AuthModule::LDAP::UserAttr1'} = 'DN';
   
    # AuthSyncModule::LDAP::UserSyncMap
    # (map if agent should create/synced from LDAP to DB after successful login)
   $Self->{'AuthSyncModule::LDAP::UserSyncMap1'} = {
       # DB -> LDAP
       UserFirstname => 'givenName',
       UserLastname  => 'sn',
       UserEmail     => 'mail',
   };

    # AuthSyncModule::LDAP::UserSyncInitialGroups
    # (sync following group with rw permission after initial create of first agent
    # login)
   $Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups1'} = [
       'users',
   ];
   
    # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
#    $Self->{'AuthSyncModule::LDAP::Params'} = {
#        port    => 389,
#        timeout => 120,
#        async   => 0,
#        version => 3,
#    };

    # Die if backend can't work, e. g. can't connect to server.
#    $Self->{'AuthSyncModule::LDAP::Die'} = 1;
   
   
    # Die if backend can't work, e. g. can't connect to server.
#    $Self->{'AuthModule::LDAP::Die'} = 1;

       # This is an example configuration for an LDAP auth. backend.
    # (take care that Net::LDAP is installed!)
   $Self->{'Customer::AuthModule1'} = 'Kernel::System::CustomerAuth::LDAP';
   $Self->{'Customer::AuthModule::LDAP::Host1'} = 'server.domain.priv';
   $Self->{'Customer::AuthModule::LDAP::BaseDN1'} = 'dc=domain,dc=priv';
   $Self->{'Customer::AuthModule::LDAP::UID1'} = 'sAMAccountName';

    # The following is valid but would only be necessary if the
    # anonymous user do NOT have permission to read from the LDAP tree
   $Self->{'Customer::AuthModule::LDAP::SearchUserDN1'} = 'CN=OTRS,OU=Prestataires-Services,OU=Special,OU=Sites,DC=domain,DC=priv';
   $Self->{'Customer::AuthModule::LDAP::SearchUserPw1'} = 'otrs1$';

 

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

    # Die if backend can't work, e. g. can't connect to server.
#    $Self->{'Customer::AuthModule::LDAP::Die'} = 1;


#CustomerUser
#(customer user database backend and settings)
    $Self->{CustomerUser} = {
      Module => 'Kernel::System::CustomerUser::LDAP',
      Params => {
      Host => 'server.domain.priv',
      BaseDN => 'dc=domain,dc=priv',
      SSCOPE => 'sub',
      UserDN =>'CN=OTRS,OU=Prestataires-Services,OU=Special,OU=Sites,DC=domain,DC=priv',
      UserPw => 'otrs1$',
    },
# customer unique id
    CustomerKey => 'sAMAccountName',
    # customer #
    CustomerID => 'mail',
    CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'],
    CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
    CustomerUserSearchPrefix => '',
    CustomerUserSearchSuffix => '*',
    CustomerUserSearchListLimit => 250,
    CustomerUserPostMasterSearchFields => ['mail'],
    CustomerUserNameFields => ['givenname', 'sn'],
    Map => [
      # note: Login, Email and CustomerID needed!
      # var, frontend, storage, shown, required, storage-type
      #[ 'UserSalutation', 'Title', 'title', 1, 0, 'var' ],
      [ 'UserFirstname', 'Firstname', 'givenname', 1, 1, 'var' ],
      [ 'UserLastname', 'Lastname', 'sn', 1, 1, 'var' ],
      [ 'UserLogin', 'Login', 'sAMAccountName', 1, 1, 'var' ],
      [ 'UserEmail', 'Email', 'mail', 1, 1, 'var' ],
      [ 'UserCustomerID', 'CustomerID', 'mail', 0, 1, 'var' ],
      [ 'UserPhone', 'Phone', 'telephonenumber', 1, 0, 'var' ],
      #[ 'UserAddress', 'Address', 'postaladdress', 1, 0, 'var' ],
      #[ 'UserComment', 'Comment', 'description', 1, 0, 'var' ],
    ],
  };
    
#--------------------------------------------------------#
#                                                        #
#                                                        #
#    Here Ends Config For ADUC Agent and Customer       #
#                                                        #
#                                                        #
#--------------------------------------------------------#
Merci pour votre aide

Bonne journée
pdejong
Znuny newbie
Posts: 3
Joined: 24 Jun 2013, 10:15
Znuny Version: 3.4.2
Real Name: Pierre
Company: Collignon Eng

Re: Authentification Agent - LDAP - Specifique AD Group

Post by pdejong »

Bon, ce compte ne parait pas trop mal du tout !!!!!

maintenant, je voudrais partager "POURQUOI" cela ne fonctionnait pas!


les USERS test que j'utilisais n'avaient pas d'adresse mail... hors, c'est cela que OTRS utilise comme userID ... donc, bardaf, cassage de figure...

Si vous avez le moindre commentaire: je vous écoutes!

:-)

Merci pour ceux qui me lisent
Merci pour votre aide

Bonne journée
gregorybel
Znuny newbie
Posts: 3
Joined: 19 Sep 2013, 17:51
Znuny Version: 3.2.7
Real Name: Greg
Company: La poste

Re: Authentification Agent - LDAP - Specifique AD Group

Post by gregorybel »

Bonjour,

Je me demandais si tu avais réussi à peupler tes agents via ldap?

En effet de mon coté j'arrive bien à peupler mes customers authentifier via AD selon un groupe spécifique, j'ai également réussi a configurer les agents pour qu'il utilise l'AD en revanche si je n'ai pas de user local à OTRS j'ai le message suivant:
Panic, user authenticated but no user data can be found in OTRS DB!! Perhaps the user is invalid.

Faut il obligatoirement créer le user localement ?

J'ai également un problème afin de lier les roles en fonction de groupe AD , as tu réussi a faire fonctionner cette partie:

$Self->{'AuthSyncModule::LDAP::UserSyncRolesDefinition'} = {
'CN=GS-OTRS-USERS-,OU=Groupes,OU=BU, DC=truc,DC=machin,DC=lan' => {
'users-paris' => 1,
},

Merci d('avance.
gregorybel
Znuny newbie
Posts: 3
Joined: 19 Sep 2013, 17:51
Znuny Version: 3.2.7
Real Name: Greg
Company: La poste

Re: Authentification Agent - LDAP - Specifique AD Group

Post by gregorybel »

Rectificatif, mon user de test à moi n'avais pas de nom de famille, une fois nommée la création de l'agent est effectivement automatique.

En revanche impossible d'associer les membres des groupes AD à un role défini dans OTRS.

$Self->{'AuthSyncModule::LDAP::UserSyncRolesDefinition'} = {
'CN=GS-OTRS-USERS,OU=Groupes,OU=BU,DC=truc,DC=machin,DC=lan' => {
'Role-Paris-Users' => 1,
},

J'imagine que normalement les membres du group GS-OTRS-USERS doivent obtenir le role paris users défini dans otrs non?
pdejong
Znuny newbie
Posts: 3
Joined: 24 Jun 2013, 10:15
Znuny Version: 3.4.2
Real Name: Pierre
Company: Collignon Eng

Re: Authentification Agent - LDAP - Specifique AD Group

Post by pdejong »

Bonjour

En effet, nous "en général", créons tous un user, TEST, avec un manque d'info...

Si mes souvenir sont bon (cela fait maintenant 2-3 mois que cela tourne et que je n'ai plus eu l'occasion d'aller y taper un oeil) il faut au minimum: NOM - PRENOM et E MAIL .... pour que le user puisse fonctionner.

(j'ai sécher la dessus moi-même un certain temps certain ! :-) )

Et je pense également me rappeler qu'en effet, il faut un user "local" pour que cela fonctionne... et même, à priori, un user local "admin".... (mais là, les souvenirs sont loin)

Concernant la partie que tu essayes de mettre en place, je n'ai pas essayer... (pour la simple raison que j'aurai, qqch comme... 5- 10 agents, tout au plus... )

Si tu as des infos, n'hésites pas à poster, cela serait impec d'avoir un topic "complet" ... (je pense que je pourrais d'ailleurs revenir un jour, et y placer mes fichiers de configs... en fait, ca pourrait aider d'autre...

N'hésites pas à me re-contacter...

Bonne journée et bon boulot
Merci pour votre aide

Bonne journée
Post Reply