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!
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.
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:
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 .
Tags und Links java spring spring-security impersonation