Archiv verlassen und diese Seite im Standarddesign anzeigen : Modul PAM LDAP
Hallo miteinander,
ich bin gerade dabei ein eigenes C-Programm zuschreiben um mich über PAM auf einen LDAP Server zu authentifizieren.
Dieses Programm soll mir PAM_SUCCESS zurückliefern wenn ich mich authentifizieren kann.
Ich habe mir mal die PAM-API angeschaut und bin jetzt so weit das mein Programm nachschaut ob der User im LDAP-Server enthalten ist --> pam_start(). Liefert mir auch PAM_SUCCESS zurück.
Ich finde jetzt nur nicht wie ich PAM jetzt mein eingegebenes Passwort übergebe zu diesem User und er mir dann auch zurück gibt ob dass das richtige Passwort ist.
Habe mir schon den Code von sudo oder ssh angeschaut, aber finde dort nicht wie die das machen.
Schon mal Danke für eure Hilfe im voraus.
Mfg Sascha
Es gibt doch fertige LDAP Module für PAM:
http://www.google.de/search?hl=de&q=pam+ldap&btnG=Google-Suche&meta=
Warum willst Du ein eigenes schreiben?
mfg
cane
Also folgendes,
hab eine Applikation an der man sich authentifizieren muss um sie zubenutzen, diese liefet über eine Plugin, den eingegeben Username und das eingegebene Passwort, jetzt will ich auf meinem Ldap-Server nachschauen ob diese dort übereinstimmen.
Ich habe jetzt keine Ahnung, welchem Modul ich jetzt mein Username und Passwort übergebe das er es überprüft.
Deswegen eigenes.
Ungefähr wollte ich mich an folgendes Beispiel halten :
http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam_appl-8.html
--> da fehlt aber die Passwortüberprüfung.
mfg Sascha
ist die applikation "pam-aware"?
greez
Also kurz:
ich will nur das Passwort über PAM an LDAP geben und es soll mir richtig oder falsch zurück geben.
Wäre echt klasse, wenn jemand weiß wie das geht
wenn deine applikation nicht pam-aware ist, kannst du dein pam-modul schreiben, wie du willst ;)
greez
Okay, ich mach Fortschritte, jetzt wird das passwort abgefragt, wenn ich mein Programm ausführe.
Jetzt müsste ich nur wissen wann diese Abfrage gestellt wird, also wann gibt er den Prompt "Password:" aus und wann ließt er mein eingegebenes Passwort ein so das ich dort mein eigenes Passwort direkt hingebe.
Das ist ja nun komplett anders zu sudo bzw. ssh, weil dort gebe ich ja das passwort immer in die kommandozeile ein.
__________________________________________________ _____________________
Achso habe noch ein anderes Problem, er erkennt nicht bei pam_start(); meine service "check_user" bzw "sudo". Aber er kann trotzdem die authentifizierung über ldap vornehmen, gibt es in /etc/pam.d ein default service, welche bei nicht erkennen des Service aufgerufen wird.
Würde mich über jeden noch so kleinen Hinweis freuen.
MfG Sascha
wenn deine applikation nicht pam-aware ist, kannst du dein pam-modul schreiben, wie du willst ;)
??? Ah okay ???
Das hilft mir gerade nicht weiter, wie würdest du es machen??
ist denn deine datenbank nun in der lage, mit pam zu sprechen, oder nicht? oben hast du nein geschrieben
wenn sie pam "kann", dann nimm pam_ldap.so
greez
Also wie gesagt, die Datenbank liefert in mein C-Programm den eingegeben Username und Passwort (mit den er sich an der DB authentifizieren will).
Also wenn ich nur gegen PAM programmiere und es manuell starte in der Shell, dann sagt er ja den Benutzer gibt es und fragt mich nach meinem Passwort.
--> Dieses PW bekomme ich aus meiner DB, nur jetzt will ich das PW nicht nochmal in der Shell eingeben, sondern es soll von meiner DB direkt an PAM --> LDAP übergeben werden.
Ach vllt habe ich den Titel des Topics falsch gewählt:
Streiche Modul. --> pam_ldap.so benutze ich eh als Modul.
ok, klingt gut dein projekt
leider bin ich nicht der coder, deshalb steige ich hier aus
wenn du es geschafft hast, kannst du dennoch mal die lösung und die eingesetzte software posten
ps: was ist das für eine DB, die nicht pam spricht?
gab es nicht auch eine art pam-wrapper?
greez
GOIL, es funzt.
Also für die es interessiert.
In der Funktion pam_start(const char *service, const char *user,
const struct pam_conv *pam_conv, pam_handle_t **pamh);
sollte man pam_conv bearbeiten.
Dort solte man nicht mit Standartfunktion, pam_misc arbeiten. Man kann diese umschreiben so das sie das Passwort nicht aus der Shell einliest sondern ihr übergeben wird.
:cool: GOIL, wenn man sich die Fragen selbst beantworten kann :cool:
Achso kann mir jemand hier helfen:
In der Funktion pam_start(const char *service, const char *user,
const struct pam_conv *pam_conv, pam_handle_t **pamh);
erkennt er trotz das ich mich über LDAP authentifiziere obwohl mein eigener service, nicht in /etc/pam.d enthalten ist. Gibt es einen Service den er als default-service benutzt. Aber eigentlich habe ich nur im service sshd
auth sufficient pam_ldap.so
eingestellt. Geht er dann alle Services durch und nimmt dann einen passenden oder was tut er.
Er gibt mir auch in /var/log/messages aus, das er den service nicht findet.
Danke im Voraus
BedriddenTech
12.08.05, 13:57
/etc/pam.d/other ist das `fallback', wenn es keine Datei für den Service gibt.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.