Feder-Sicherheit: Autorisierung ohne Authentifizierung
Ich versuche zu integrieren, Spring Security in meine web-Anwendung. Es scheint ziemlich einfach zu tun, solange Sie integrieren den gesamten Prozess der Authentifizierung und Autorisierung.
Jedoch sowohl die Authentifizierung und Autorisierung scheinen so gekoppelt, dass es sehr zeitaufwendig für mich, zu verstehen, wie ich konnte, teilen diese Prozesse, und get-Authentifizierung unabhängig von der Autorisierung.
Den Authentifizierungsprozess externe an unser system (basierend auf single sign-on) und dies kann nicht geändert werden. Dennoch, sobald sich der Benutzer erfolgreich ist dieser Prozess, es ist geladen in die Sitzung, einschließlich der Rollen.
Was wir zu erreichen versuchen ist es, diese Informationen für die Autorisierung von Spring Security, das ist zu sagen, ihn mit Gewalt zu Holen Sie sich die Rollen aus der Benutzer-session statt, hob es durch den Authentifizierungs-provider.
Gibt es eine Möglichkeit, dies zu erreichen?
InformationsquelleAutor der Frage markitus82 | 2009-08-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Ihre Authentifizierung erfolgt bereits mit einem SSO-Dienst, dann sollten Sie mit einer Feder Sicherheit pre-authentication Filter. Dann können Sie eine UserDetails-Dienst (möglicherweise benutzerdefinierte) und verwenden die pre-authentifizierte Benutzer-Prinzip, zum Auffüllen der GrantedAuthority ist
SpringSecurity umfasst mehrere pre-authentication Filter einschließlich J2eePreAuthenticatedProcessingFilter und RequestHeaderPreAuthenticatedProcessingfilter. Wenn Sie nicht finden können, das für Sie arbeitet, es ist auch möglich und nicht schwer, eigene zu schreiben, vorausgesetzt, Sie wissen, wo in der Anfrage Ihre SSO-Implementierung stopft sich die Daten. (Das hängt von der Umsetzung natürlich.)
Einfach umzusetzen Filter - Schnittstelle und etwas tun, wie dies in der doFilter Methode:
InformationsquelleAutor der Antwort nont
Ja, es ist möglich. Spring Security (wie die meisten der rest des Frühlings) ist interface-getrieben, so dass Sie in Ihrem eigenen plug-Implementierungen, die selektiv für verschiedene Teile des Rahmenprogramms.
Update: Frühjahr die Autorisierung und Authentifizierung-Mechanismen arbeiten zusammen, die Authentifizierung-Mechanismus wird der Benutzer authentifiziert und legen Sie verschiedene
GrantedAuthority
Instanzen in den security-Kontext. Diese werden dann überprüft, indem die Zulassung von Maschinen zu erlauben/verbieten bestimmter Operationen.Verwenden, nont Antwort für die details, wie die Verwendung vorhandener Authentifizierung. Die details, wie Sie die Daten aus Ihrer Sitzung (z.B. Rollen ) wird, hängt natürlich von deinem konkreten setup. Aber wenn du in der
GrantedAuthority
Instanzen abgeleitet von den Rollen, die pre-besiedelten in Ihrer Sitzung von Ihrem SSO-system, werden Sie in der Lage sein, um Sie in Ihrer Zulassung Logik.Aus der Referenz-Dokumentation (leicht bearbeitet, mit meinem Schwerpunkt):
InformationsquelleAutor der Antwort Vinay Sajip
Server, der verarbeitet die Authentifizierung sollte leiten den Benutzer auf die Anwendung übergeben, um es irgendeine Art von Schlüssel (ein token in der CAS-SSO). Dann wird die Anwendung den Schlüssel verwenden, um Fragen zu dem Authentifizierungs-server den Benutzernamen und Rollen verbunden. Mit dieser info erstellen Sie eine Sicherheits-Kontext, wird an den Autorisierungs-manager. Dies ist eine sehr vereinfachte version eines SSO-login-Workflows.
Werfen Sie einen Blick auf CAS-SSO und CAS 2-Architektur.
Sagen Sie mir, wenn Sie weitere Informationen benötigen.
InformationsquelleAutor der Antwort rodrigoap
wir haben die gleiche Voraussetzung, wo wir hatten zu verwenden, spring security für Autorisierungs-Zwecke nur. Wir waren mit Siteminder für die Authentifizierung. Finden Sie weitere Informationen zur Verwendung der Autorisierung Teil von spring security Authentifizierung nicht hier bei http://codersatwork.wordpress.com/2010/02/13/use-spring-security-for-authorization-only-not-for-authentication/
Habe ich auch Hinzugefügt, Quellcode und Testfälle zu http://code.google.com/p/spring-security-with-authorization-only/source/browse/
InformationsquelleAutor der Antwort Saurabh
Ich versuche zu verstehen CAS-Authentifizierung mit unserer eigenen Berechtigung und war immer verwirrt, da das User-Objekt in der Spring Security-erwartet immer das Passwort ausgefüllt werden und uns nicht kümmern, dass in unserem Szenario. Nach der Lektüre Surabh post, es scheint, dass der trick ist die Rückgabe einer benutzerdefinierten Objekt, ohne das Passwort ausgefüllt. Ich werde versuchen, und sehen, ob es funktioniert in meinem Fall. Hoffentlich kein anderer code in der Kette ist, wird erwartet das Passwort in das User-Objekt.
InformationsquelleAutor der Antwort SinusRhythm
Ich die Genehmigung von:
Injizieren die Genehmigung im Zusammenhang Bohne in meine eigene bean:
Verwenden Sie diese bean:
InformationsquelleAutor der Antwort Aimar