[Gelöst] SSO + LDAP Anbindung und Umlaute im sAMAccountName

Hilfe zu OTRS Problemen aller Art
Post Reply
juergenbarth
Znuny newbie
Posts: 11
Joined: 04 Nov 2017, 11:29
Znuny Version: 5.0.16
Real Name: Jürgen Barth
Company: mbi GmbH

[Gelöst] SSO + LDAP Anbindung und Umlaute im sAMAccountName

Post by juergenbarth »

Hallo,
ich versuche in Version 6.4.3 die LDAP Anbindung für die Agents einzurichten.

Ich habe das nach den bekannten Anleitungen vorgenommen. Das funktioniert auch sehr gut, auch nicht registrierte Agenten können sich über eine OTRS_allow Gruppe nun anmelden.

Es wird ein Agent Konto angelegt und alles ist gut (soweit).
Lediglich bei Nutzern mit Umlauten (ä,ö,ü) klappt das nicht.

Der Benutzer wird im OTRS angelegt.
Vorname, Nachname und Login enthalten die Sonderzeichen, auch die email Adresse wird sauber aus dem LDAP ausgelesen.

Aber der CN Eintrag wird falsch interpretiert.

Im Log steht dann folgendes

Initial data for 'Jürgen' (CN=Jürgen,OU=OTRS,DC=local,DC=de) created in RDBMS.
User: 'Jürgen' changed password successfully!
User: 'Jürgen' ID: '15' created successfully (1)!

Wo liegt hier der Fehler?

Ich hab einen Auszug aus der Config.pm mal unten angehängt.

Danke schon mal für Infos

Gruß

Jürgen

Code: Select all

    $Self->{AuthModule1} = 'Kernel::System::Auth::LDAP';
    $Self->{'AuthModule::LDAP::Host1'} = 'dc.local.de';
    $Self->{'AuthModule::LDAP::BaseDN1'} = 'DC=local,DC=de';
    $Self->{'AuthModule::LDAP::UID1'} = 'sAMAccountName';
    $Self->{'AuthModule::LDAP::GroupDN1'} = 'CN=OTRS_allow,CN=Users,DC=local,DC=de';
    $Self->{'AuthModule::LDAP::AccessAttr1'} = 'member';
    $Self->{'AuthModule::LDAP::UserAttr1'} = 'DN';
    $Self->{'AuthModule::LDAP::SearchUserDN1'} = 'CN=OTRS_sync,CN=Users,DC=local,DC=de';
    $Self->{'AuthModule::LDAP::SearchUserPw1'} = '*******';
    $Self->{'AuthModule::LDAP::AlwaysFilter1'} = '';
    $Self->{'AuthModule::LDAP::Charset1'} = 'utf-8';
    $Self->{'AuthModule::LDAP::Params1'} = {
        port    => 389,
        timeout => 120,
        async   => 0,
        version => 3,
    };

    $Self->{AuthSyncModule1} = 'Kernel::System::Auth::Sync::LDAP';
    $Self->{'AuthSyncModule::LDAP::Host1'} = 'dc.local.de';
    $Self->{'AuthSyncModule::LDAP::BaseDN1'} = 'DC=local,DC=de';
    $Self->{'AuthSyncModule::LDAP::UID1'} = 'sAMAccountName';
    $Self->{'AuthSyncModule::LDAP::AccessAttr1'} = 'member:1.2.840.113556.1.4.1941:';
    $Self->{'AuthSyncModule::LDAP::SearchUserDN1'} = 'CN=OTRS_sync,CN=Users,DC=local,DC=de';
    $Self->{'AuthSyncModule::LDAP::SearchUserPw1'} = '*******';
    $Self->{'AuthSyncModule::LDAP::UserSyncMap1'} = {
        UserFirstname => 'givenName',
        UserLastname  => 'sn',
        UserEmail     => 'mail',
    };
    $Self->{'AuthSyncModule::LDAP::Charset1'} = 'utf-8';
    $Self->{'AuthSyncModule::LDAP::Params1'} = {
        port    => 389,
        timeout => 120,
        async   => 0,
        version => 3,
    };


   $Self->{'CustomerUser1'} = {
    Name => 'LDAP Data Source',
    Module => 'Kernel::System::CustomerUser::LDAP',
    Params => {
        Host => 'dc.local.de',
        BaseDN => 'DC=local,DC=de',
        SSCOPE => 'sub',
        UserDN =>'CN=OTRS_sync,CN=Users,DC=local,DC=de',
        UserPw => '********',
        SourceCharset => 'utf-8',
        DestCharset => 'utf-8',
    },
    CustomerKey => 'sAMAccountName',
    CustomerID => 'company',
    CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'],
    CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
    CustomerUserSearchPrefix => '',
    CustomerUserSearchSuffix => '*',
    CustomerUserSearchListLimit => 10000,
    CustomerUserPostMasterSearchFields => ['mail'],
    CustomerUserNameFields => ['givenname', 'sn'],
    CustomerUserExcludePrimaryCustomerID => 0,
    AdminSetPreferences => 0,
    Map => [
        # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target, link class(es)
        [ 'UserTitle',      'Title',      'title',           1, 0, 'var', '', 0 ],
        [ 'UserFirstname',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
        [ 'UserLastname',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
        [ 'UserLogin',      'Login',   'sAMAccountname',     1, 1, 'var', '', 0 ],
        [ 'UserEmail',      'Email',      'mail',            1, 1, 'var', '', 0 ],
        [ 'UserCustomerID', 'CustomerID', 'company',            0, 1, 'var', '', 0 ],
        [ 'UserPhone',      'Phone',      'telephonenumber', 1, 0, 'var', '', 0 ],
        [ 'UserAddress',    'Address',    'postaladdress',   1, 0, 'var', '', 0 ],
        [ 'UserComment',    'Comment',    'description',     1, 0, 'var', '', 0 ],
    ],
};
Last edited by juergenbarth on 19 Dec 2022, 16:31, edited 2 times in total.
Scheffold
Znuny newbie
Posts: 13
Joined: 13 Aug 2015, 15:53
Znuny Version: 6.4.3
Real Name: Markus Scheffold
Company: Häussler Technische Orthopädie GmbH
Contact:

Re: LDAP Anbindung und Umlaute im sAMAccountName

Post by Scheffold »

Hallo,

ich vermute das liegt an dem

$Self->{'AuthModule::LDAP::Charset1'} = 'utf-8';

ich denke nicht das dein ??? Windows Active Directory ??? eine UTF-8 Codierung verwendet.
juergenbarth
Znuny newbie
Posts: 11
Joined: 04 Nov 2017, 11:29
Znuny Version: 5.0.16
Real Name: Jürgen Barth
Company: mbi GmbH

Re: LDAP Anbindung und Umlaute im sAMAccountName

Post by juergenbarth »

Guten Morgen,

ich hatte am Freitag unter Linux mit ldapsearch abfragen getestet.
Bei den Usern mit ä,ö,ü musste ich eine BASE64 decodierung dranhängen.

ldapsearch **** | grep "Name" | perl -MMIME::Base64 -n -00 -e 's/\n +//g;s/(?<=:: )(\S+)/decode_base64($1)/eg;print'

Mit der Änderung in

Code: Select all

$Self->{'AuthModule::LDAP::Charset1'} = 'iso-8859-1';
kommt nur dieser Fehler...

Code: Select all

User: Jürgen Barth authentication failed, no LDAP group entry foundGroupDN='CN=OTRS_allow,CN=Users,DC=local,DC=de', Filter='(member=CN=Jürgen Barth,....DC=de)'! (REMOTE_ADDR: 192.168.0.13).
In den anderen Optionen habe ich dann weiter mal iso-8859-1 eingetragen, wird dann aber auch nix.

Dann kommt ein Meldung mit ? statt ü ...

Code: Select all

User: J?rgen Barth 
juergenbarth
Znuny newbie
Posts: 11
Joined: 04 Nov 2017, 11:29
Znuny Version: 5.0.16
Real Name: Jürgen Barth
Company: mbi GmbH

Re: [Gelöst] LDAP Anbindung und Umlaute im sAMAccountName

Post by juergenbarth »

Hab´s dann hinbekommen...

Der Trick ist die Umlaute beim LDAP request binär zu dekodieren ...
wurzel
Znuny guru
Posts: 3224
Joined: 08 Jul 2010, 22:25
Znuny Version: x.x.x
Real Name: Florian

Re: [Gelöst] LDAP Anbindung und Umlaute im sAMAccountName

Post by wurzel »

Hi,

und wie geht das?

Flo
OTRS 8 SILVER (Prod)
OTRS 8 auf Debian 11 (Test)
Znuny 7.x latest version testing auf Debian 11

-- Ich beantworte keine Forums-Fragen PN - No PN please

I won't answer to unfriendly users any more. A greeting and regards are just polite.
juergenbarth
Znuny newbie
Posts: 11
Joined: 04 Nov 2017, 11:29
Znuny Version: 5.0.16
Real Name: Jürgen Barth
Company: mbi GmbH

Re: [Gelöst] LDAP Anbindung und Umlaute im sAMAccountName

Post by juergenbarth »

Hi,

ich hab / hatte 2 Probleme.

Die LDAP Authentifizierung mit unserem Active Directory hat die Nutzer mit Umlauten (ä,ö,ü) nicht eingebunden.
Warum auch immer, ich hab viel probiert. Bitte kommt jetzt keiner mit Charset und utf-8 oder sonstigen, das klappte nicht.

Also habe ich das mit nem LDAP Query unter Linux getested, es ging nur mit einer Base64 Dekodierung.

Daher sind die Module in der Config.pm wie folgt angepasst worden.

Code: Select all

    $Self->{'AuthModule::LDAP::Params1'} = {
        port => 389,
        timeout => 120,
        async => 0,
        version => 3,
        raw => qr/(?i:^jpegPhoto|;binary)/,
   };
und

Code: Select all

    $Self->{'AuthSyncModule::LDAP::Params1'} = {
        port    => 389,
        timeout => 120,
        async   => 0,
        version => 3,
        raw => qr/(?i:^jpegPhoto|;binary)/,
Das bewirkt, das alles was vom AD Kommt Binary decodiert wird, außer eben wohl jpeg Daten...

Das klappt prima.

Aber als nächstes wollte ich SSO einrichten, hier komme ich nicht weiter.
ggfs. hat da jemand ne Idee.

Gruß

Jürgen
juergenbarth
Znuny newbie
Posts: 11
Joined: 04 Nov 2017, 11:29
Znuny Version: 5.0.16
Real Name: Jürgen Barth
Company: mbi GmbH

Re: [Gelöst] SSO + LDAP Anbindung und Umlaute im sAMAccountName

Post by juergenbarth »

Die Letzen notwendigen Änderungen hatte ich dann im Quellcode von OTRS gemacht.

Wie und wo kann man denn Änderungen am OTRS System an die Entwickler melden?
jojo
Znuny guru
Posts: 15019
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Re: [Gelöst] SSO + LDAP Anbindung und Umlaute im sAMAccountName

Post by jojo »

Normalerweise sind solche Änderungen nicht notwendig. Ich tippe auf ein gewaltiges Problem mit dem Zeichensatz deines AD. Des weiteren solltest Du nich den sAMAccountName sondern lieber dern UserPrincipalName nutzen.

"Melden" bzw. Vorschlagen kannst Du solche Änderungen beim Anbieter Deiner Version, vermutlich Znuny anhand der Versionsnummer
"Production": OTRS™ 8, OTRS™ 7, STORM powered by OTRS
"Testing": ((OTRS Community Edition)) and git Master

Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
juergenbarth
Znuny newbie
Posts: 11
Joined: 04 Nov 2017, 11:29
Znuny Version: 5.0.16
Real Name: Jürgen Barth
Company: mbi GmbH

Re: [Gelöst] SSO + LDAP Anbindung und Umlaute im sAMAccountName

Post by juergenbarth »

Der UPN wird als email adresse geliefert.
Wir wollen aber Vorname und Nachnahme nutzen.

Apache2 liefert mir den {REMOTE_USER} im SSO.
Aus dem ü wird UTF-8 (in literal) ein \xc3\xbc .
Das wird von Znuny aber als ü interpretiert.

Daher hab ich in der HTTPBasicAuth.pm folgende eingebaut

Code: Select all

   # get params
    my $User       = $ENV{REMOTE_USER} || $ENV{HTTP_REMOTE_USER};
    my $RemoteAddr = $ENV{REMOTE_ADDR} || 'Got no REMOTE_ADDR env!';

# neu #
utf8::decode($User);  # "\xc4\x80" becomes "\x{100}"
Znuny dekodiert also nur sauber das UTF-8 ...

Warum Apache2 das falsch liefert ist mir auch unklar.
Gibt es da einen anderen Ansatz?

ein ldapsearch liefert unter ubuntu einen Base64 Code.
Das macht das Windows AD sobald Sonderzeichen im Namen enthaltensind.

sAMAccountName:: SsO8cmdlbiBCYXJ0aA==
juergenbarth
Znuny newbie
Posts: 11
Joined: 04 Nov 2017, 11:29
Znuny Version: 5.0.16
Real Name: Jürgen Barth
Company: mbi GmbH

Re: [Gelöst] SSO + LDAP Anbindung und Umlaute im sAMAccountName

Post by juergenbarth »

jojo wrote: 19 Dec 2022, 18:05 Normalerweise sind solche Änderungen nicht notwendig. Ich tippe auf ein gewaltiges Problem mit dem Zeichensatz deines AD. Des weiteren solltest Du nich den sAMAccountName sondern lieber dern UserPrincipalName nutzen.

"Melden" bzw. Vorschlagen kannst Du solche Änderungen beim Anbieter Deiner Version, vermutlich Znuny anhand der Versionsnummer
Ich wollten nochmal auf die Antwort zurückkommen.

Wir würde ich denn ein SSO mit otrs/znuny und dem UserPrincipalName umsetzen?
Wie sag ich dem Apache2, das er den UPN zurückliefert?

Oder wo sag ich das dem otrs?
Post Reply