Hallo,
ich möchte einem angemeldeten DB-User die Möglichkeit geben, sein Passwort zu ändern. Dabei soll das alte Passwort abgefragt und verglichen werden.
Wie kann man im postgres das Passwort des aktuellen Users abfragen, ohne Superuser zu sein ?
Gibt es eine Lösung für mein Problem ?
Jens
PostgreSQL: Documentation: Manuals: PostgreSQL 8.2: ALTER ROLE
ein superuser darf sofern er CREATEROLE permissions besitzt natuerlich andere (Login-)Rollen, also User, erzeugen und Änderungen durchführen - so auch das Pwd.
Ein "normaler" User kann sein eigenes Passwort natürlich ändern. Mit dem gleichen Kommando ALTER ROLE ich_selbst SET PASSWORD = ....
Zu beachten ist, dass das Pwd der Form entsprechen muss wie es PG erwartet - also crypt, md5 oder weiss der Teufel noch.
Abfragen macht spätestens dann, wenn das Pwd gecrypted ist garkeinen Sinn mehr. Sollte auch nicht möglich sein - ich hoffe mal, dass das auch so ist![]()
Vielen Dank für die Hilfe,
aber das löst noch nicht mein Problem, dass ich für den angemeldeten User sein Passwort aus der DB erfragen möchte.
Jens
Du kannst Dir eine function schreiben und diese als db-admin installieren mit security definer, welche das Feld passwd aus pg_shadow für den current_user ausliest. Hab ich jetzt aber nicht getestet, weil dies insofern sinnfrei ist, weil dort das Passwort zwar steht, aber halt verschlüsselt.
Eines der hier verwendeten Passwörter ist z.B. "md528fd038dce151a6a302b997e8c0b7dc4".
Hilft Dir das nun weiter?
Andreas, an sich zweifelnd...
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
und aus diesem MD5 laesst sich auch das Passwort nicht rekonstruieren .. das ist ja gerade der Witz an der Geschichte.
Naja .. er könnte dann höchstens selbst via MD5(passwordtext + loginname) den md5-hash erzeugen und diesen ausgelesenen vergleichen, wenn es darum geht das alte pwd zu bestaetigen ..
Ich werde die Funktion mal ausprobieren.
Ich denke aber, dass ich als angemeldeter Nicht-Superuser die Sicht pg_shadow nicht abfragen darf.
Ich habe versucht als normaler User die Sicht pg_shadow abzufragen, was zu einem Berechtigungsproblem führte.
Muss eigentlich bei der Berechnung des MD5-Wertes der loginname mit reingenommen werden ?
Jens
Geändert von Jens (24.06.2008 um 15:06 Uhr)
Deswegen schrieb ich auch security definer.
PostgreSQL: Documentation: Manuals: PostgreSQL 8.3: CREATE FUNCTION
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
ak schrieb
wenn ich das richtig interpretiere, wird die funktion dann mit jenen rechten ausgefuehrt, die der DEFINER hatte, als er sie erzeugte - die funktion. D.g. du musst die funktion mit einem user erzeugen, der die ersehnte tabelle / view anfassen darfDu kannst Dir eine function schreiben und diese als db-admin installieren mit SECURITY DEFINER ...,
gruss
Großen Dank für den Hinweis mit security definer.
Das ist ein Feature, welches mir noch völlig unbekannt war.
Ich habe es schon ausprobiert und es funktioniert.
Jens
Wie groß ist das Sicherheitsproblem, wenn eine Funktion mit security definer erstellt wird ?
Jens
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen