Nehmen wir an, ich möchte das Authentifizierungsschema eines armen Mannes für einen einfachen Netzwerkdienst einrichten.
Ich möchte mich nicht mit der Authentifizierung mit Benutzername / Passwort herumärgern, der Einfachheit halber möchte ich nur eine Liste öffentlicher Schlüssel in meiner Anwendung haben und jeder, der nachweisen kann, dass er der Besitzer dieses Schlüssels ist, kann meinen Dienst nutzen.
Für die Zwecke meiner Anwendung würde dies den Authentifizierungsprozess erheblich vereinfachen, da sich alle meine Benutzer im lokalen Netzwerk befinden und sie alle Unix verwenden. Immer wenn ich einen neuen Benutzer an Bord habe, kann ich sie einfach nach ihrem öffentlichen ssh-Schlüssel fragen.
Gibt es eine einfache Möglichkeit, den Mechanismus, der bei der Authentifizierung mit ssh Public Key in einer nicht-ssh-Anwendung verwendet wird, wiederzuverwenden? Diese Frage soll sprachunabhängig sein.
Wenn Sie nur eine Liste von Benutzern haben, die Ihre Anwendung verwenden können und Sie nicht sehen müssen, wer was getan hat.
Sie können Ihren Server so einrichten, dass er nur auf localhost (127.1) und nicht auf 0.0.0.0 hört und ein eingeschränktes sshd bereitstellt, das den Port weiterleitet, der für die Verbindung mit der Anwendung erforderlich ist
~/.ssh/authorized_keys
liefert eine Liste der autorisierten Schlüssel, die verwendet werden können.
Für eine grundlegende Einrichtung und Hilfe bei der Konfiguration Ihres sshd, lesen Sie diese Antwort: Ссылка
Hinweis: Seien Sie gewarnt, dass jeder Benutzer vollen Shell-Zugriff auf Ihre Box hat, auf der sich der Computer befindet, wenn Sie ihn nicht sperren.
Ein schmutziger Hack von der Spitze meines Kopfes: Könnten Sie die Anwendung so verpacken, dass sie einen tatsächlichen SSH-Tunnel von localhost zu Ihrem Server erstellt, und diesen für?
verwendenAngenommen, Sie sprechen von einer webbasierten Anwendung. Was Sie wirklich suchen, sind X.509-Client-Zertifikate (1.3.6.1.5.5.7.3.2). Dadurch können Sie einen Benutzer individuell für Ihre Anwendung identifizieren.
Diese haben die gleichen Probleme, mit denen man sich normalerweise bei der Schlüsselverteilung konfrontiert sieht. Das wird allgemein als ein schweres Problem angesehen.
Wenn Sie diesen Weg hier hinunter gehen wollten, müssen Sie das tun.
Auf der Serverseite müssten Sie das Zertifikat als Teil des Webservers verarbeiten (nginx oder apache sollten dafür Module haben) und dann den Namen als Headerfeld an Ihre Anwendung übergeben, das Sie dann verarbeiten können intern.
Dies ist eine viel bessere Sicherheitslösung als Benutzernamen und Kennwörter, ist jedoch wegen des Schlüsselverteilungsproblems komplex. Die meisten Leute würden sich nicht darum kümmern, da es in den meisten Anwendungen einfach ist, Logins mit LDAP oder Radius zu integrieren.
Tags und Links authentication unix ssh-keys