LDAP Nested Group Support

Hilfe zu Znuny Problemen aller Art
Post Reply
lk27
Znuny newbie
Posts: 15
Joined: 28 Feb 2022, 10:37
Znuny Version: 6.2.2
Real Name: Lukas

LDAP Nested Group Support

Post by lk27 »

Hallo zusammen,

auf einem System mit Znuny 6.5.4 auf Ubuntu 22 habe ich ein Active Directory angebunden, um Nutzerauthentifizierung und Rollenzuweisung umzusetzen.
Dabei möchte ich auch das neue Feature "LDAP Nested Group Support" verwenden, um die Rollen zuzuweisen, doch leider scheint das nicht zu funktionieren wie erwartet.

Ein Nutzer befindet sich in der AD Gruppe (z.B. Test1) und durch die Verschachtelung von Gruppen auch in "Test2".
Um auch sicherzugehen, dass die Verschachtelung richtig eingerichtet ist, wurde per PowerShellbefehl geprüft, dass der Nutzer durch die Rekursion auch als Gruppenmitglied der Gruppe "Test2" zählt.

Beim Login (sei es per SSO oder "manuell" per LDAP) bekomme ich im Syslog jedoch angezeigt, dass der Nutzer nicht Teil der Gruppe Test2 ist und bekommt somit keine Rolle in Znuny zugewiesen. Füge ich den Nutzer der Gruppe Test2 direkt hinzu, funktioniert die Rollenzuweisung jedoch.

Daher scheint noch irgendwas mit der Konfiguration nicht zu stimmen oder die Einstellung scheint nicht so zu funktionieren wie erwartet.
Gibt es hier vielleicht ein Rekursionslimit bei der Verschachtelung oder verwende ich die Funktion generell falsch?

Code: Select all

$Self->{'AuthSyncModule::LDAP::NestedGroupSearch'} = 1;
$Self->{'AuthSyncModule::LDAP::UserSyncRolesDefinition'} = {
      'cn=Test2,ou=xx,dc=xx,dc=xx' => {
          'R_Admin' => 1,
      },
};
Viele Grüße
Lukas
root
Administrator
Posts: 4246
Joined: 18 Dec 2007, 12:23
Znuny Version: Znuny and Znuny LTS
Real Name: Roy Kaldung
Company: Znuny
Contact:

Re: LDAP Nested Group Support

Post by root »

Hallo,

das ist jetzt sehr wenig Konfiguration für ein AuthSync. Da fehlen mir noch UID, UserAttr, etc.

- Roy
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 ?
lk27
Znuny newbie
Posts: 15
Joined: 28 Feb 2022, 10:37
Znuny Version: 6.2.2
Real Name: Lukas

Re: LDAP Nested Group Support

Post by lk27 »

Hallo Roy,

anbei noch die restliche LDAP-Konfiguration. Hier habe ich alles beim Standard belassen und nur die Logindaten und Domaincontroller-Adressen hinzugefügt.

Code: Select all

$Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host'} = 'ldaps://XXXX';
$Self->{'AuthModule::LDAP::BaseDN'} = 'ou=XXXX,dc=XXXX,dc=XXXX';
$Self->{'AuthModule::LDAP::UID'} = 'sAMAccountName';
$Self->{'AuthModule::LDAP::AccessAttr'} = 'member';
$Self->{'AuthModule::LDAP::UserAttr'} = '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::SearchUserDN'} = 'CN=XXXX,OU=XXXX,DC=XXXX,DC=XXXX';
$Self->{'AuthModule::LDAP::SearchUserPw'} = 'XXXX';

# 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'} = '(&(objectCategory=Person)(sAMAccountName=*)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))';

$Self->{'AuthModule::LDAP::Params'} = {
  port    => 636,
  timeout => 120,
  async   => 0,
  version => 3,
};
$Self->{'AuthModule::UseSyncBackend'} = 'AuthSyncBackend';

# agent data sync against ldap
$Self->{'AuthSyncModule'} = 'Kernel::System::Auth::Sync::LDAP';
$Self->{'AuthSyncModule::LDAP::Host'} = 'ldaps://XXXX';
$Self->{'AuthSyncModule::LDAP::BaseDN'} = 'XXXX';
$Self->{'AuthSyncModule::LDAP::UID'} = 'sAMAccountName';
$Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'CN=XXXX,OU=XXXX,DC=XXXX,DC=XXXX';
$Self->{'AuthSyncModule::LDAP::SearchUserPw'} = 'XXXX';
$Self->{'AuthSyncModule::LDAP::AlwaysFilter'} = '(objectclass=user)';
$Self->{'AuthSyncModule::LDAP::AccessAttr'} = 'member';
$Self->{'AuthSyncModule::LDAP::UserAttr'} = 'DN';

$Self->{'AuthSyncModule::LDAP::UserSyncMap'} = {
  # 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::UserSyncInitialGroups'} = [
  'users',
];

Viele Grüße
Lukas
lk27
Znuny newbie
Posts: 15
Joined: 28 Feb 2022, 10:37
Znuny Version: 6.2.2
Real Name: Lukas

Re: LDAP Nested Group Support

Post by lk27 »

Ich habe mal ein wenig im Quellcode geschaut (https://github.com/znuny/Znuny/blob/512 ... AP.pm#L901), normalerweise müssten dann ja bei einem Login des Users auch im Debug-Log Meldungen erscheinen. Das ist bei mir nicht der Fall.

https://github.com/znuny/Znuny/blob/512 ... AP.pm#L908

Was bei meiner LDAP-Config fehlt ist aber die Definition des GroupDN. Könnte es vielleicht daran liegen, dass dann auch kein nested group search stattfindet?

Viele Grüße
Lukas
root
Administrator
Posts: 4246
Joined: 18 Dec 2007, 12:23
Znuny Version: Znuny and Znuny LTS
Real Name: Roy Kaldung
Company: Znuny
Contact:

Re: LDAP Nested Group Support

Post by root »

Hi,

das Nested LDAP feature funktioniert nicht bei Active Directory da die Attribute anders benannt sind. Das ist aber kein Problem, das das AD das schon seit Jahren mit dem LDAP_MATCHING_RULE_IN_CHAIN Feature kann. Mehr Details dazu im MSDN

- Roy
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 ?
lk27
Znuny newbie
Posts: 15
Joined: 28 Feb 2022, 10:37
Znuny Version: 6.2.2
Real Name: Lukas

Re: LDAP Nested Group Support

Post by lk27 »

Hallo Roy,

danke für deine Rückmeldung, mir war nicht bewusst, dass die Funktion für Microsoft ADs gedacht ist.

Mit den Parametern

Code: Select all

$Self->{'AuthModule::LDAP::UserAttr'} = 'member:1.2.840.113556.1.4.1941:';
$Self->{'AuthModule::LDAP::UserAttr'} = 'DN';
läuft es jetzt wie gewünscht.

Viele Grüße
Lukas
Post Reply