Frühling Sicherheit (3.0.x) und Benutzer Identitätswechsel

8

In meiner Webanwendung gibt es Zeiten, in denen ein authentifizierter Administrator die Identität eines anderen gültigen Benutzers eines Systems annehmen möchte, ohne das Passwort dieses Benutzers zu kennen.

Wie kann ich Spring Security verwenden, um Administratoren die Möglichkeit zu geben, sich als normale (Nicht-Admin-) Benutzer des Systems auszugeben?

Die Spring Security-Dokumentation sagt nichts dazu und ich kann nirgendwo etwas finden. Sicherlich muss jemand das gelöst haben.

Danke!

    
Erik 14.06.2011, 00:16
quelle

3 Antworten

5

Es befindet sich in der Spring Security 3 und Spring Security 4 Dokumente mit dem treffenden Namen "Run-As Authentication Replacement".

  

Der AbstractSecurityInterceptor kann das Authentication-Objekt in SecurityContext und SecurityContextHolder während der Rückrufaktion für gesicherte Objekte vorübergehend ersetzen.

    
Andrew White 14.06.2011 01:21
quelle
3

Ich glaube, die empfohlene Vorgehensweise in Spring Security ist die Domänenzugriffssteuerungsliste, siehe GrantedAuthoritySid @

Ссылка

Wenn jedoch die Identität eines anderen Benutzers mehr ist als nur eine "Delegatenidentität", sollten Sie auch die Auswirkungen auf die Protokollierung berücksichtigen:

  • Möchten Sie, dass Ihre Protokollierung als ursprünglicher Benutzer oder als imitierter Benutzer (oder beides?) angezeigt wird
  • Soll der "Identitätswechsel" nur anzeigen, was der imitierte Benutzer oder die Obermenge der Berechtigungen des ursprünglichen Benutzers und des imitierten Benutzers sieht?

Eine weitere Möglichkeit besteht darin, ein "Anmelden als" -Feature zu erstellen, das im Wesentlichen die Hauptidentität der aktuellen Sitzung ändert - oder eine neue Sitzung mit der Identität der Identität beginnt.

In all dem oben genannten können Sie unbeabsichtigt ein Sicherheitsproblem öffnen - ich denke, das ist der Grund, warum impersonate-style features nicht so üblich sind. Der Trend geht vielmehr zur rollenbasierten Zugriffssteuerung (RBAC) oder zur attributbasierten Zugriffssteuerung (ABAC). Mit RBAC / ABAC können Sie eine Delegat-Stil-Funktion erstellen, in der Sie Delegat-Attribute / Rollen erstellen. In besonderen Fällen, in denen Sie die Quelle / das Ziel der Delegation anzeigen müssen (z. B. für Audit-Protokolle), behandeln Sie diese als Eckfälle .

    
Al Baker 14.06.2011 01:18
quelle
0

Wenn ein Administratorbenutzer in der Lage sein soll, sich als ein anderer Benutzer auszugeben (z. B. für QA / Testzwecke), werfen Sie einen Blick auf den SwitchUserFilter

Ein anständiges Beispiel für die XML-Konfiguration, die Sie benötigen, ist hier

    
ashario 24.04.2014 07:28
quelle