Hauptmenü

Unterstützung von Ldap v3 für eDirectory

Begonnen von Sebi, 30.07.2018 14:52:02

⏪ vorheriges - nächstes ⏩

Sebi

Bei uns gibt es 2 verschiedene Nutzerquellen. Einmal ein OpenLdap (externe User) der als CustomerID die "entryUUID" ( https://ldapwiki.com/wiki/EntryUUID ) benutzt und einmal eine eDirectory (interne User) die die "GUID" ( https://ldapwiki.com/wiki/GUID ) als CustomerID verwendet.

Beide Quellen sind über einen LdapProxy zusammen geführt, sodass man das Kix nur an diesen anbinden muss.

Bei allen Nutzern aus der eDirectory wird die "GUID/CustomerID" als "ˆ+^ð|G‚ˆ+^ð" angezeigt. Das ist natürlich Blödsinn.
Bei Nutzern aus dem OpenLdap hingegen, wird die "entryUUID/CustomerID" korrekt als "49df056e-ed39-1037-8a08-0756ca67dfd8" angezeigt.
Beide Attribute sind ein octet String (Binärobjekt) nach RFC 4122 und werden in allen getesteten Ldap Browsern und auf der Kommandozeile korrekt als hex ausgegeben.
Nur das Kix scheint die GUID falsch zu interpretieren und Nutzer mit der GUID können sich nicht am KIX anmelden:

[Error][Kernel::System::AuthSession::DB::CreateSessionID][300] ERROR:  invalid byte sequence for encoding "UTF8": 0x80, SQL: 'INSERT INTO sessions (session_id, data_key, data_value, serialized) VALUES (?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?)'


Unsere Vermutung ist ein zusammenhang wie hier:
https://github.com/cannatag/ldap3/issues/482

# string representation, big endian
'{e1e2e3e4-e5e6-e7e8-e9ea-ebecedeeefff}'
# packet representation, little endian
'e4e3e2e1e6e5e8e7e9eaebecedeeefff'
# ldap byte representation, little endian
'\\e4\\e3\\e2\\e1\\e6\\e5\\e8\\e7\\e9\\ea\\eb\\ec\\ed\\ee\\ef\\ff'


Da es wohl diese 3 Darstellungsformen des octet Strings gibt, wird kix wohl die variante der eDirectory nicht verstehen.

Wie hoch sind die Chancen auf einen Fix?

Sebi

#1
Wir haben ein perl-Script, dass die GUID korrekt anzeigt. dies sollte ebenso für ein AD mit der ObjectGUID klappen.
unter Ubuntu wird diese Funktion von libdata-guid-perl bereitgestellt.



use Net::LDAP;
use Data::Dumper;
use Data::GUID;


my $user = shift;
my $attr = shift;




$ldap = Net::LDAP->new( 'ldapserver' ) or die "$@";


$mesg = $ldap->start_tls( verify => 'allow' );


$mesg = $ldap->bind( 'cn=Admin,o=BASE', password => 'password' );




$res = $ldap->search( base => 'o=BASE', filter => '(&(objectClass=inetOrgPerson)(cn='.$user.'))', typesonly => 0, attrs => [ $attr ] ); #, raw => qr/(?:^GUID|;binary)/ );


print "$res->{entries}[0]->{asn}->{attributes}[0]->{vals}[0]\n";


my $guid_string = Data::GUID->best_guess($res->{entries}[0]->{asn}->{attributes}[0]->{vals}[0])->as_string;


print $guid_string;


[/size]
Könnt ihr das an die Entwickler weitergeben?[/size]

Sebi

Gibt es ein Statement dazu, ob und wann ein Fix/Hotfix möglich ist?

Richard Leis

Hallo Sebi,

ich habe dein Problem an unsere Entwicklung weitergegeben und wir haben den Punkt als Feature Request aufgenommen.

Einen genauen Termin für die Veröffentlichung kann ich Dir jetzt allerdings noch nicht nennen.

Viele Grüße

Richard