Hoi,
Ich hab das Problem, dass ich einen ejabberd mit einem LDAP backend zum Laufen bekommen will. Ejabberd kann das ja prinzipiell schon, nur verwende ich weitgehend den SASL Mech EXTERNAL.
Da die Software das einbinden externer Auth Skripte zulässt habe ich mir halt aus verschiedensten Ecken was zusammengeklaut und in ein perl Skript gepflanzt.
Lange Rede, kurzer Sinn, der Bind funktioniert, ich bekomme über
$res = $ldap->search (
base => "$ldapBase",
filter => "(&($fieldUser=$user))"
auch was zurückgeliefert.
Jetzt die große Frage, die ja eher theoretischer Natur ist:
Aus dem ejabberd Stream erhalte ich einen Usernamen, eine Domäne und ein Passwort. Die Sachen werden über TLS plain übertragen.
Jetzt müsste ich ja eigentlich das erhaltene Passwort irgendwie hashen und salzen, dann mit dem Hash, den der Search Query ausgibt vergleichen und eine Return Value setzen.
Im LDAP sind die Passwörter als SSHA gespeichert, und bei einem ldapsearch werden sie, wie mir scheint, nochmal base64 codiert.
Das Problem: Soweit ich gesehen habe, ermittelt slappasswd einen völlig zufälligen salt, den Ich nicht kenne.
Oder doch?
Hat schon jemand Erfahrung damit gesammelt? Gibt es vielleicht einen völlig sinnlos einfachen Weg, den ich einschlagen sollte, um die Userauth hinzubekommen?