Bisher hatte ich nicht viel mit PAM zu tun. Für ein Projekt brauche ich eine einfache Authentifizierungslösung.
Kannst du bezüglich deines Anwendungsfalls noch etwas weiter ausholen? "Projekt" ist ein weites Feld. Davon würde auch eine konkrete Empfehlung abhängen, zumal gerade Authentifizierung und Authorisierung ein sehr übergreifendes Thema ist.
Mit PAM könnte ich aber Gruppen und Read/Write-Privileges einrichten, indem ich ein Modul schreibe, dass sich die Berechtigungen aus einer SQLite holt.
Das klingt gefährlich danach, als würdest du dir gerade dein eigenes Authentifizierungs- und Authorisierungs-Framework schreiben. Das ist ein ähnliches Minenfeld wie ein eigenes Verschlüsselungs-, Web-, Logging- oder
ORM-Framework mit krassen Fallstricken, in die man früher oder später - eher früher - stolpert.
Normalerweise würde ich hier fertige Open-Source-Software wie
Keycloak (und/oder
Gatekeeper) oder ähnliches samt der dazugehörigen Standards (siehe unten) empfehlen - das hängt aber wieder ganz von deinen Rahmenbedinungen ab. Dafür gibt es meist auch reichlich fertige Lösungen, i.d.R. auch als fertiges PAM, wobei PAM seine ganz eigenen Probleme mit sich bringt (siehe unten).
Hat jemand schon mit PAM gearbeitet?
Ja, leider.
Sollte man das noch nutzen?
Wie üblich gilt die Antwort: kommt darauf an.
Hintergrund: PAM bringt eine Reihe von
Eigenheiten/Problemen mit sich, derer man sich bewusst sein sollte und die Einsatzmöglichkeiten enorm einschränken. Wenn es was ein fertiges PAM gibt, was genau deinen Anwendungszweck erfüllt - probiere es aus und nutze es. Ansonsten würde ich eher die Finger davon lassen.
Sicher, ich könnte auch LDAP, Kerberos oder Shibboleth nehmen, aber das scheint mir alles riesiger Aufwand zu sein.
Bitte im Jahre 2020 kein Kerberos mehr einsetzen,
dass hat zuviele Probleme. Es gibt
OAuth 2.0 bzw. OIDC, das du im Hintergrund auch mit einfacheren Lösungen als LDAP befeuern kannst.
Ich frage auch, weil PAM nun schon 25 Jahre alt ist.
Es ist an vielen Stellen aus der Zeit gefallen und erfüllt viele moderne Anforderungen schlecht bis unzureichend. Manchmal ist es trotzdem die am wenigsten schlechte Lösung für die jeweilige Anforderung.
