Wechsel von LDAP auf Microsoft Azure SAML Authentifizierung

Hilfe zu OTRS Problemen aller Art
Post Reply
GustavG
Znuny expert
Posts: 282
Joined: 26 Nov 2014, 15:56
Znuny Version: Znuny 6.3.4
Real Name: Gerlach

Wechsel von LDAP auf Microsoft Azure SAML Authentifizierung

Post by GustavG »

Hallo,

wir nutzen aktuell Znuny 6.3.4 unter Debian Linux mit einer OpenLDAP Anbindung für Agenten und Customer (Config.pm unten). Wir wollen von OpenLDAP zu Microsoft Azure SAML wechseln (Agenten und Customer), hat das schon mal jemand gemacht? Ist das überhaupt möglich? Natürlich sollten die Berechtigungen und Zuordnungen der LDAP-Agenten/Customer erhalten bleiben. Login mit Microsoft SAML wäre dann auch mit einer eMail-Adresse, mit der man im Browser bereits eingeloggt ist.

Code: Select all

###########################################################
# LDAP Agent
###########################################################

# This is an example configuration for an LDAP auth. backend.
# (Make sure Net::LDAP is installed!)
$Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host'} = 'ldaps://example.org';
$Self->{'AuthModule::LDAP::BaseDN'} = 'dc=example,dc=de';
$Self->{'AuthModule::LDAP::UID'} = 'employeeNumber';

# 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'} = 'ou=people,dc=example,dc=de';
$Self->{'AuthModule::LDAP::AccessAttr'} = 'employeeNumber';
# for ldap posixGroups objectclass (just uid)
$Self->{'AuthModule::LDAP::UserAttr'} = 'employeeNumber';
# for non ldap posixGroups objectclass (with full user dn)
# $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'} = '';
$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'} = '(memberOf=cn=otrs-example-agenten,ou=programme,ou=groups,dc=example,dc=de)';

# Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
$Self->{'AuthModule::LDAP::Params'} = {
    port => 636,
    timeout => 120,
    async => 0,
    version => 3,
    SourceCharset => 'utf8',
    #DestCharset => 'iso-8859-1',
};


###########################################################
## LDAP Customer
###########################################################

#Enable LDAP authentication for Customers / Users
  $Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::LDAP';
  $Self->{'Customer::AuthModule::LDAP::Host'} = 'ldaps://example.org';
  $Self->{'Customer::AuthModule::LDAP::BaseDN'} = 'ou=people,dc=example,dc=de';
  $Self->{'Customer::AuthModule::LDAP::UID'} = 'employeeNumber';

#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::SearchUserDN'} = 'anonymous';
  $Self->{'Customer::AuthModule::LDAP::SearchUserPw'} = '';

#CustomerUser
#(customer user database backend and settings)
    $Self->{CustomerUser} = {
      Name => 'LDAP Data Source',
      Module => 'Kernel::System::CustomerUser::LDAP',
      Params => {
      Host => 'ldaps://example.org',
     BaseDN => 'ou=people,dc=example,dc=de',
      SSCOPE => 'sub',
      UserDN =>'anonymous',
      UserPw => '',
      SourceCharset => 'utf-8',
      #DestCharset => 'iso-8859-1',
      AlwaysFilter => '(memberOf=cn=otrs-example-customer,ou=programme,ou=groups,dc=example,dc=de)',
    },
# customer unique id
    CustomerKey => 'employeeNumber',
    # customer #
    CustomerID => 'businessCategory',
    #CustomerUserListFields => ['uid', 'cn', 'mail'],
    CustomerUserListFields => ['cn', 'mail'],
    #CustomerUserSearchFields => ['employeeNumber', 'cn', 'mail'],
    CustomerUserSearchFields => ['sn', 'givenName', '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',        'employeeNumber',       1, 1, 'var' ],
      [ 'UserEmail',            'Email',        'mail',                 0, 1, 'var' ],
      [ 'UserCustomerID',       'CustomerID',   'businessCategory',     0, 1, 'var' ],
      [ 'UserPhone',            'Phone',        'telephoneNumber',      1, 0, 'var' ],
      #[ 'UserAddress',         'Address',      'postaladdress',        1, 0, 'var' ],
      #[ 'UserComment',         'Comment',      'description',          1, 0, 'var' ],
    ],
  };

Last edited by GustavG on 05 Jun 2023, 11:16, edited 2 times in total.
root
Administrator
Posts: 3960
Joined: 18 Dec 2007, 12:23
Znuny Version: Znuny and Znuny LTS
Real Name: Roy Kaldung
Company: Znuny
Contact:

Re: Wechsel von LDAP auf Microsoft SSO Authentifizierung

Post by root »

Hallo,

ich vermutet mal mit Microsoft SSO meinst Du SAML-Authentifizierung gegen ein ADFS bzw. Azure? Das macht man dann am einfachsten mit dem Apache-Modul mod_auth_mellon.

Da du ja die employeeNumber als UID gewählt hast musst Du dann am IdP den Identifier festlegen, dann sollte es auch keine Probleme bei der Zuordnung geben.

- 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 ?
GustavG
Znuny expert
Posts: 282
Joined: 26 Nov 2014, 15:56
Znuny Version: Znuny 6.3.4
Real Name: Gerlach

Re: Wechsel von LDAP auf Microsoft Azure SAML Authentifizierung

Post by GustavG »

Hallo Roy,

danke für deine Antwort und den Tipp mit Mellon. Das habe ich anhand dieses Tutorials:

https://www.techsupportpk.com/2021/05/i ... ebian.html

erfolgreich eingerichtet. Die Test-Seite ist nach erfolgreicher Authentifizierung sichtbar. Dann habe ich versucht, Znuny 6.3.4 darauf einzurichten und habe erstmal in der Systemkonfiguration nach auth gesucht und nur den Eintrag Customer::AuthModule gefunden, aber keine Option für Agenten. Also habe ich in der Config.pm

$Self->{'AuthModule'} = 'Kernel::System::Auth::HTTPBasicAuth';

hinzugefügt. In der Apache2-Config habe ich die location von /protected auf / geändert. Ich habe zum Test mal in der Datenbank von meinem Benutzer unter users den Wert "login" von der employeeNumber auf die neue eMail-Adresse geändert, damit funktioniert der Login.

Frage 1.: Wie loggt man sich als root@localhost ein, wenn man direkt beim Aufruf der Seite zu Azure weitergeleitet wird?

Frage 2.: Aktuell bekommen wir von Azure quasi nur ein Cookie mit dem Inhalt "123435456...", wo bekommt Znuny die Nutzerdaten (Vorname, Nachname, eMail ..) her, wenn LDAP wegfällt? Ich habe https://github.com/znuny/Znuny/blob/dev ... ts.pm#L523 gefunden, aber wie läuft das mit Azure statt LDAP?

Wichtig ist auch, wie oben beschrieben loggen wir uns aktuell mit der employeeNumber aus LDAP ein. Außerdem haben die Benutzer aktuell eine andere eMail-Domain als in Azure.
root
Administrator
Posts: 3960
Joined: 18 Dec 2007, 12:23
Znuny Version: Znuny and Znuny LTS
Real Name: Roy Kaldung
Company: Znuny
Contact:

Re: Wechsel von LDAP auf Microsoft Azure SAML Authentifizierung

Post by root »

Hallo,

also AuthModule in der Kernel/Config.pm ist schon mal richtig. Nimm aber als protected location besser /otrs/index.pl, das ist für die Performance besser und reicht auch aus. Damit ist das Agenteninterface abgedeckt.

Zu deinen Fragen:

1.) Gar nicht, ausser Du legst Dir einen User mit dem Login in Azure an.
2.) Welcher Name als Identifier übergeben wird hängt von den SP-Metadaten und den Settings am IdP (Azure) ab. Den Loginnamen siehst Du auch im AccessLog. Das ist alles Authentifizierung. Ein AuthSync wie bei LDAP gibt es so nicht in Znuny. Wir haben für Supportkunden ein Paket gebaut das das kann.
3.) Das was matchen muss ist der Login in der Tabelle users. Die würde ich aber nicht anfassen, besser ist es die Konfiguration des SAML zu fixen.

- 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 ?
GustavG
Znuny expert
Posts: 282
Joined: 26 Nov 2014, 15:56
Znuny Version: Znuny 6.3.4
Real Name: Gerlach

Re: Wechsel von LDAP auf Microsoft Azure SAML Authentifizierung

Post by GustavG »

root wrote: 05 Jun 2023, 11:48 2.) Welcher Name als Identifier übergeben wird hängt von den SP-Metadaten und den Settings am IdP (Azure) ab. Den Loginnamen siehst Du auch im AccessLog. Das ist alles Authentifizierung. Ein AuthSync wie bei LDAP gibt es so nicht in Znuny. Wir haben für Supportkunden ein Paket gebaut das das kann.
Das ist natürlich der springende Punkt, wenn die Daten nicht auch aus Azure kommen können macht es wenig Sinn. Kann man das Modul eventuell auch einzeln kaufen? Gibt es zu dem Modul eine Seite?
root
Administrator
Posts: 3960
Joined: 18 Dec 2007, 12:23
Znuny Version: Znuny and Znuny LTS
Real Name: Roy Kaldung
Company: Znuny
Contact:

Re: Wechsel von LDAP auf Microsoft Azure SAML Authentifizierung

Post by root »

Hallo,

also anlegen kann man die Agenten ja vorher, nur halt nicht automatisch. Wenn Ihr also keine riesige Fluktuation habe sollte ja schon machbar sein.

- 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 ?
GustavG
Znuny expert
Posts: 282
Joined: 26 Nov 2014, 15:56
Znuny Version: Znuny 6.3.4
Real Name: Gerlach

Re: Wechsel von LDAP auf Microsoft Azure SAML Authentifizierung

Post by GustavG »

Danke, du hast Recht, das sollte nicht so viel Aufwand sein. Aber wie ändere ich, dass er als Username nicht die Mailadresse nimmt sondern die employeeNumber? In LDAP ist das:

Code: Select all

$Self->{'AuthModule::LDAP::AccessAttr'} = 'employeeNumber';
$Self->{'AuthModule::LDAP::UserAttr'} = 'employeeNumber';
Aber in Azure? Natürlich muss im Azure auch angepasst werden, dass er statt die Mailadresse die Personalnummer mitgeben muss. Dann müsste man nichts in der Datenbank ändern.
root wrote: 05 Jun 2023, 11:48 3.) Das was matchen muss ist der Login in der Tabelle users. Die würde ich aber nicht anfassen, besser ist es die Konfiguration des SAML zu fixen.
Aber warum sollte da etwas schief gehen, wenn ich zB. im Feld login der DB jeweils eine Zahl in eine eMail-Adresse ändere? Theoretisch dürfte da doch nichts schief gehen?
Post Reply