Wie unterstützen Sie eine Web-App mit verschlüsselten oder verschlüsselten Passwörtern?

8

Wenn Sie eine neue Webanwendung in einer Unternehmensumgebung unterstützen, müssen Sie sich oft als ein bestimmter Benutzer anmelden, um ein echtes oder wahrgenommenes Problem zu diagnostizieren. Zwei gegensätzliche Probleme gelten hier:

  1. Bewährte Methode ist die Verwendung von Hash-Passwörtern oder verschlüsselten Passwörtern , nicht von Text. Manchmal befindet sich ein SSO (Single Sign-On) von Drittanbietern in der Mitte. Es gibt keine Möglichkeit, das Passwort des Benutzers abzurufen. Sofern der Benutzer es nicht zur Verfügung stellt (nicht unterstützt), gibt es keine Möglichkeit, sich als dieser Benutzer anzumelden.

  2. Viele Web-Apps haben Personalisierung und komplexe Autorisierung . Verschiedene Benutzer haben unterschiedliche Rollen (Admin, Manager, Benutzer) mit unterschiedlichen Berechtigungen. Manchmal können Benutzer nur ihre Daten sehen - ihre Kunden oder Aufgaben. Einige Benutzer haben nur Lesezugriff, andere können sie bearbeiten. Daher ist die Ansicht jedes Benutzers auf die Web-App eindeutig.

Nehmen wir an, dass es in einer Unternehmensumgebung nicht möglich ist, zum Schreibtisch des Benutzers zu gehen oder sich direkt mit seinem Computer zu verbinden.

Wie gehen Sie mit dieser Situation um?

Edit: Ich möchte wiederholen, dass es in einem großen Finanzinstitut oder einem typischen Fortune-500-Unternehmen mit Hunderttausenden von Mitarbeitern im ganzen Land und auf der ganzen Welt nicht möglich ist, dass ein Entwickler in irgendeiner IT-Einheit arbeitet kann direkt auf den Computer eines Benutzers zugreifen. Einige davon sind öffentlich zugängliche Web-Apps, die von Kunden verwendet werden (z. B. Online-Banking und Aktienhandel). Und viele dieser Intranetanwendungen basieren auf Active Directory oder einem SSO, was bedeutet, dass die Benutzeranmeldeinformationen für viele Anwendungen gleich sind. Ich danke Ihnen allen für Ihre Vorschläge; einige können in anderen Umgebungen sehr nützlich sein.

    
DOK 04.11.2008, 20:46
quelle

7 Antworten

19

Eine Anzahl dieser Ideen belästigt den Benutzer, indem er sie zwingt, ihr Passwort zu ändern oder indem sie ihren Desktop für die Debugging-Sitzung einnimmt.

Die Idee von Markc ist die beste: Erweitern Sie Ihre Authentifizierungslogik, damit Superuser sich als bestimmter Benutzer anmelden können, indem Sie nicht die Anmeldeinformationen des Benutzers, sondern den Namen des Benutzers und seine Superuser-Anmeldeinformationen angeben.

Ich habe es in der Vergangenheit so gemacht (pseudo-ish python):

%Vor%

Mit anderen Worten, wenn der Benutzername und das Passwort nicht authentifiziert werden, wenn das Passwort einen Doppelpunkt hat, dann ist es eigentlich der Admin-Benutzername und das Admin-Passwort, verbunden mit einem Doppelpunkt, also loggen Sie sich als Benutzername ein, wenn sie der richtige Admin-Benutzername sind und Passwort.

Dies bedeutet, dass Sie sich als Benutzer anmelden können, ohne ihre Geheimnisse zu kennen und ohne sie zu stören.

    
Ned Batchelder 04.11.2008, 21:28
quelle
5

Für unsere Webanwendungen verwenden wir einen Prozess, der mangels eines besseren Begriffs als "Entführung" eines Benutzerkontos definiert wird.

Grundsätzlich können Administratoren das Konto eines Benutzers mit einem einfachen Knopfklick "entführen". Im Code verwenden Sie einfach eine eindeutige Kennung (die Benutzer-ID arbeitet in einer weniger sicheren Umgebung), die dann die erforderlichen Anmeldeinformationen in der Sitzung erstellt, sodass sie dann im Profil dieses Benutzers arbeiten können. Für eine sicherere Umgebung können Sie einen eindeutigen Hash für jeden Benutzer verwenden.

Um sicherzustellen, dass diese Hijack-Methode sicher ist, überprüft sie immer zuerst, ob die Anfrage von einem authentifizierten Administrator mit den entsprechenden Rechten gestellt wird. Aus diesem Grund ist es notwendig, entweder die Sitzung des Administrators zu entführen oder ihre Authentifizierungsdaten zu erfassen, damit jemand die Hijack-Funktion innerhalb der Anwendung ausnutzt.

    
Noah Goodrich 04.11.2008 21:03
quelle
2

Ich hatte 4 Ideen. Während ich tippte wurden 3 von ihnen bereits vorgeschlagen (also habe ich sie upvoted)

Variante zu Idee 3 - Identitätswechsel:

Um dies so "wie möglich" zu einer normalen Anmeldung mit minimalen Code-Änderungen zu machen, können Sie die Möglichkeit hinzufügen, sich bei der Anmeldung direkt auszugeben, indem Sie Admin-Anmeldeinformationen sowie einen alternativen Benutzernamen, z. Melden Sie sich als Admin an: user, adminpassword. Das System würde dies genau so behandeln, als würde es sich als Benutzer mit Benutzerkennwort anmelden.

Idee 4: Können Sie auf den Passwortspeicher zugreifen? Wenn dies der Fall ist, ersetzen Sie den Hash des Benutzers vorübergehend durch den Hash eines bekannten Passworts. (Die Passwörter werden oft online in einer Datenbank gespeichert. Ein SQL-Abfrage-Tool kann die Swaps durchführen)

    
Markc 04.11.2008 21:05
quelle
1

Ein Administrator sollte in der Lage sein, das Passwort eines Benutzers zu ändern. Ändern Sie das Passwort für den Benutzer in etwas, das Sie kennen. Sie können sich dann als dieser Benutzer anmelden.

Sagen Sie dem Benutzer, dass er sein Passwort zurücksetzen soll, nachdem Sie mit dem Debuggen fertig sind.

    
Matt Brunell 04.11.2008 20:50
quelle
1

Normalerweise durch irgendeine Art von Fernsteuerungssoftware, die verwendet werden kann, um ihren Desktop zu sehen. Wenn sie sich auf einem Windows Terminal Server befinden, können die eingebauten Admin Tools dafür verwendet werden. Ansonsten würde ich etwas wie VNC über ein internes Netzwerk oder einen externen Dienst wie LogMeIn ( Ссылка ) verwenden.

    
fwzgekg 04.11.2008 20:51
quelle
0
  1. Könnten Sie eine Testumgebung haben, in die regelmäßig Live-Daten kopiert werden (offensichtlich bereinigt, um Sicherheits- oder Datenschutzproblemen zu begegnen)? Ein Benutzer, der in der Konfiguration demjenigen ähnlich ist, der Probleme hat, könnte verwendet werden, um Fehler zu beheben, oder sogar der Benutzer, wenn dies erlaubt ist.

  2. Verwenden Sie einen Remote-Desktop-Client, wie in anderen Antworten erwähnt, aber auch dies ist für Sie möglicherweise nicht praktisch. Wenn Sie diese Rechte in der Domäne haben, habe ich von der Fehlerbehandlung gehört, sogar ein screenscrape zu machen und dieses in Protokolle einzubeziehen! aber das klingt ein bisschen seltsam für mich.

  3. Könnten Sie ein Admin-Tool haben, um einen Benutzer in ein Demo-Konto zu klonen?

dove 04.11.2008 21:02
quelle
0

Die Lösung, die wir in unseren Web-Apps verwendet haben, ist, dass die authN / authZ den gewünschten Benutzer als effektiven Benutzer zurückgibt. Wir tun das, indem wir eine Admin-Funktion haben, um eine Maskerade einzurichten, und dann, wenn wir nach dem aktuell angemeldeten Benutzer fragen (current_user), behandeln wir die Maskerade:

%Vor%     
Les Hill 15.05.2009 17:26
quelle