Authentifizieren Sie die Unix-Anmeldeinformationen des Benutzers über den Webbrowser

289
clifgray

Kann mir jemand Tipps geben, wie man die Unix-Anmeldeinformationen eines Benutzers über den Browser authentifiziert?

Grundsätzlich gebe ich Zugriff auf einige Dateien, und ich möchte sicherstellen, dass die Benutzer authentifiziert sind, aber nicht ein ganzes zusätzliches Passwort und einen Benutzernamen erstellen möchten, den sie sich merken müssen.

1
Fragen Sie den Benutzer nach Benutzername / Passwort, berechnen Sie den Hash des Passworts und vergleichen Sie ihn mit / etc / shadow. Problem ist, dass die Schattendatei nur für root sichtbar ist jet vor 9 Jahren 0
wäre es eine sehr schlechte Praxis, wenn die webapp root ein Skript ausführen sollte, um den versuchten Passwort-Hash mit dem / etc / shadow-Hash zu vergleichen? clifgray vor 9 Jahren 1
@clifgray Sehr schlechte Praxis. JakeGould vor 9 Jahren 0
Gibt es Alternativen oder Werkzeuge, die es mir ermöglichen, ein versuchtes Passwort mit dem Unix-Kennwort außerhalb des Unix-Login selbst zu vergleichen? clifgray vor 9 Jahren 0

1 Antwort auf die Frage

1
grawity

Leider gibt es dafür nur wenige transparente Methoden.

  • In einem zentral verwalteten Netzwerk können Sie Kerberos möglicherweise mit mod_auth_gssapi oder mod_auth_kerb auf der Webserver-Seite (auch als "HTTP Negotiate" bezeichnet) verwenden. Kerberos ist sehr sicher, kann jedoch für die Verwendung im Web schwierig zu konfigurieren sein (nicht alle Browser unterstützen es und nur einige erlauben es standardmäßig).

  • Wenn alle Computer vertrauenswürdig sind (dh es wird garantiert, dass Benutzer keine Root-Software installieren), ist das Ident-Protokoll (RFC 1413) eine Möglichkeit, die Authentifizierung ist jedoch sehr schwach.

In den meisten Fällen besteht die einzige Möglichkeit darin, nach einem Kennwort zu fragen.

  • Wenn die Benutzer über Konten verfügen /etc/passwd, wie in Ihrem Kommentar erwähnt, ist das Ausführen eines privilegierten Programms leider die einzige Möglichkeit, ein erhaltenes Kennwort zu überprüfen /etc/shadow.

    Wenn Sie dies tun, schreiben Sie nicht Ihre eigenen Skripts durch sudo, da Sie wird der Eingabevalidierung falsch beim ersten Mal, und weil es bereits ein gelöstes Problem. Wähle etwas Bekanntes aus, zum Beispiel Cyrus saslauthd(das im -a pamModus laufen kann); Auf diese Weise benötigt Ihre Website keine anderen Berechtigungen als die Verbindung zum saslauthdSocket.