Frühlingssicherheit - Spring Security
| Entwickler | 4 |
|---|---|
| Stabile Version | 5.2.1 / 4. November 2019 |
| Geschrieben in | Java |
| Betriebssystem | Plattformübergreifend |
| Art | Sicherheit des Webanwendungs-Frameworks |
| Lizenz | Apache License 2.0 |
| Webseite | projekte |
Spring Security ist ein Java / Java EE- Framework, das Authentifizierung , Autorisierung und andere Sicherheitsfunktionen für Unternehmensanwendungen bietet. Das Projekt wurde Ende 2003 als 'Acegi Security' (ausgesprochen Ah-see-gee / ɑː s iː dʒ iː /) gestartet , dessen Buchstaben das erste, dritte, fünfte, siebte und neunte Zeichen des englischen Alphabets sind, um verhindern Namenskonflikte) von Ben Alex, der im März 2004 unter der Apache-Lizenz veröffentlicht wurde. Anschließend wurde Acegi als Spring Security, ein offizielles Spring-Teilprojekt, in das Spring- Portfolio aufgenommen. Die erste Veröffentlichung unter dem neuen Namen war Spring Security 2.0.0 im April 2008, mit kommerzieller Unterstützung und Schulung von SpringSource .
Authentifizierungsablauf
Abbildung 1 zeigt den grundlegenden Ablauf einer Authentifizierungsanforderung unter Verwendung des Spring Security-Systems. Es zeigt die verschiedenen Filter und wie sie von der ersten Browseranforderung bis zu einer erfolgreichen Authentifizierung oder einem HTTP 403-Fehler interagieren.
| Browser sendet " Authentifizierungsdaten " | |
| " Authentifizierungsmechanismus " sammelt die Details | |
| Ein " Authentifizierungsanforderungs " -Objekt wird erstellt | |
| Authentifizierungsanforderung an einen AuthenticationManager gesendet | |
| AuthenticationManager (dies ist für die Weiterleitung von Anforderungen über eine Kette von AuthenticationProvidern verantwortlich) | |
| " Authentifizierungsanbieter " fordert einen UserDetailsService auf, ein UserDetails- Objekt bereitzustellen | |
| Das resultierende UserDetails- Objekt (das auch die GrantedAuthority [] enthält ) wird zum Erstellen des vollständig ausgefüllten Authentifizierungsobjekts verwendet . | |
| Wenn „ Authentifizierungsmechanismus “ empfängt die Rückseite voll bestückt Authentication Objekt, wird die Anforderung gültig erachten, legte die Authentifizierung in die SecurityContextHolder ; und veranlassen, dass die ursprüngliche Anforderung erneut versucht wird. Wenn andererseits der AuthenticationProvider die Anforderung abgelehnt hat, fordert der Authentifizierungsmechanismus den Benutzeragenten auf, es erneut zu versuchen. |
|
| AbstractSecurityInterceptor autorisiert die neu generierte Anforderung und löst Java-Ausnahmen aus. ( Fordert AccessDecisionManager zur Entscheidung auf.) | |
| ExceptionTranslationFilter übersetzt die von AbstractSecurityInterceptor ausgelösten Ausnahmen in HTTP-bezogene Fehlercodes | |
| Fehlercode 403 - wenn der Principal authentifiziert wurde und daher einfach keinen ausreichenden Zugriff hat Starten Sie einen AuthenticationEntryPoint - wenn der Principal nicht authentifiziert wurde, was ein Authentifizierungsmechanismus ist |
|
Wichtige Authentifizierungsfunktionen
- LDAP (unter Verwendung von bindbasierten und Kennwortvergleichsstrategien) zur Zentralisierung von Authentifizierungsinformationen.
- Single Sign-On- Funktionen mit dem beliebten zentralen Authentifizierungsdienst .
- Java Authentication and Authorization Service (JAAS) LoginModule, eine standardbasierte Authentifizierungsmethode, die in Java verwendet wird. Beachten Sie, dass diese Funktion nur eine Delegierung an ein JAAS-Anmeldemodul ist.
- Grundlegende Zugriffsauthentifizierung gemäß RFC 1945 .
- Digest-Zugriffsauthentifizierung gemäß RFC 2617 und RFC 2069 .
- Präsentation des X.509- Clientzertifikats über den Secure Sockets Layer- Standard.
- CA, Inc SiteMinder zur Authentifizierung (ein beliebtes kommerzielles Zugriffsverwaltungsprodukt).
- Su (Unix) -ähnliche Unterstützung für das Umschalten der Hauptidentität über eine HTTP- oder HTTPS- Verbindung.
- Run-as-Ersatz, der es einem Vorgang ermöglicht, eine andere Sicherheitsidentität anzunehmen.
- Anonyme Authentifizierung, dh selbst nicht authentifizierten Principals wird eine Sicherheitsidentität zugewiesen.
- Unterstützung für Containeradapter (benutzerdefinierter Bereich) für Apache Tomcat , Resin , JBoss und Jetty (Webserver) .
- Windows NTLM zum Aktivieren der Browser-Integration (experimentell).
- Webformularauthentifizierung , ähnlich der Servlet-Container- Spezifikation.
- "Remember-me" -Unterstützung über HTTP-Cookies .
- Unterstützung für gleichzeitige Sitzungen, wodurch die Anzahl der von einem Principal zugelassenen gleichzeitigen Anmeldungen begrenzt wird.
- Volle Unterstützung für die Anpassung und das Einstecken von benutzerdefinierten Authentifizierungsimplementierungen.
Wichtige Autorisierungsfunktionen
- Berechtigung zum Aufrufen der AspectJ- Methode.
- HTTP- Autorisierung von Webanforderungs- URLs mithilfe einer Auswahl von Apache Ant- Pfaden oder regulären Ausdrücken .
Instanzbasierte Sicherheitsfunktionen
- Dient zur Angabe von Zugriffskontrolllisten für Domänenobjekte .
- Spring Security bietet ein Repository zum Speichern, Abrufen und Ändern von ACLs in einer Datenbank .
- Es werden Autorisierungsfunktionen bereitgestellt, um Richtlinien vor und nach Methodenaufrufen durchzusetzen.
Andere Eigenschaften
- Softwarelokalisierung, sodass Benutzeroberflächenmeldungen in jeder Sprache vorliegen können.
- Kanalsicherheit, um automatisch zwischen HTTP und HTTPS zu wechseln, wenn bestimmte Regeln eingehalten werden.
- Caching in allen datenbankberührenden Bereichen des Frameworks.
- Veröffentlichung von Nachrichten zur Erleichterung der ereignisgesteuerten Programmierung .
- Unterstützung für die Durchführung von Integrationstests über JUnit .
- Spring Security selbst verfügt über umfassende JUnit- Isolationstests.
- Mehrere Beispielanwendungen, detaillierte JavaDocs und ein Referenzhandbuch.
- Unabhängigkeit des Webframeworks.
Veröffentlichungen
- 2.0.0 (April 2008)
- 3.0.0 (Dezember 2009)
- 3.1.0 (7. Dezember 2011)
- 3.1.2 (10. August 2012)
- 3.2.0 (16. Dezember 2013)
- 4.0.0 (26. März 2015)
- 4.1.3 (24. August 2016)
- 4.2.0 (10. November 2016)
- 3.2.10, 4.1.4, 4.2.1 (22. Dezember 2016)
- 4.2.2 (2. März 2017)
- 4.2.3 (8. Juni 2017)
- 5.0.0 (28. November 2017)
- 5.0.8, 4.2.8 (11. September 2018)
- 5.1.0 GA (27. September 2018)
- 5.1.1, 5.0.9, 4.2.9 (16. Oktober 2018)
- 5.1.2, 5.0.10, 4.2.10 (29. November 2018)
- 5.1.3, 5.0.11, 4.2.11 (11. Januar 2019)
- 5.1.4 (14. Februar 2019)
- 5.1.5, 5.0.12, 4.2.12 (3. April 2019)