Lente beveiliging - Spring Security
| Ontwikkelaar (s) | 4 |
|---|---|
| Stabiele vrijlating | 5.2.1 / 4 november 2019 |
| Geschreven in | Java |
| Besturingssysteem | Cross-platform |
| Type | webapplicatie framework beveiliging |
| Licentie | Apache-licentie 2.0 |
| Website | projecten |
Spring Security is een Java / Java EE- framework dat authenticatie , autorisatie en andere beveiligingsfuncties biedt voor bedrijfstoepassingen. Het project werd eind 2003 gestart als 'Acegi Security' (uitgesproken als Ah-see-gee / ɑː s iː dʒ iː / , waarvan de letters de eerste, derde, vijfde, zevende en negende lettertekens zijn uit het Engelse alfabet, om naamconflicten voorkomen) door Ben Alex, waarna het in maart 2004 publiekelijk werd vrijgegeven onder de Apache-licentie . Vervolgens werd Acegi opgenomen in de Spring- portfolio als Spring Security, een officieel Spring-subproject. De eerste openbare uitgave onder de nieuwe naam was Spring Security 2.0.0 in april 2008, met commerciële ondersteuning en training beschikbaar via SpringSource .
Authenticatiestroom
Diagram 1 toont de basisstroom van een authenticatieverzoek met behulp van het Spring Security-systeem. Het toont de verschillende filters en hoe ze samenwerken vanaf het eerste browserverzoek tot een geslaagde authenticatie of een HTTP 403-fout.
| Browser dient " authenticatiegegevens " in | |
| | |
| Er wordt een " authenticatieverzoek " -object gebouwd | |
| Verificatieverzoek verzonden naar een AuthenticationManager | |
| AuthenticationManager (dit is verantwoordelijk voor het doorgeven van verzoeken via een keten van AuthenticationProviders ') | |
| | |
| Het resulterende UserDetails- object (dat ook de GrantedAuthority [] 's bevat ) zal worden gebruikt om het volledig gevulde Authentication- object te bouwen . | |
| Als " authenticatie mechanisme " ontvangt terug de volledig bevolkt Authentication object, zal het het verzoek achten geldig is, zet de Authentication in de SecurityContextHolder ; en ervoor zorgen dat het oorspronkelijke verzoek opnieuw wordt geprobeerd. Als, aan de andere kant, de AuthenticationProvider het verzoek heeft afgewezen, zal het authenticatiemechanisme de user-agent vragen om het opnieuw te proberen. |
|
| AbstractSecurityInterceptor autoriseert het opnieuw gegenereerde verzoek en genereert Java-uitzonderingen. (Vraagt AccessDecisionManager om een beslissing.) | |
| ExceptionTranslationFilter vertaalt de uitzonderingen gegenereerd door AbstractSecurityInterceptor in HTTP-gerelateerde foutcodes | |
| Foutcode 403 - als de principal is geauthenticeerd en daarom simpelweg onvoldoende toegang heeft Start een AuthenticationEntryPoint - als de principal niet is geauthenticeerd, wat een authenticatiemechanisme is |
|
Belangrijkste authenticatiefuncties
- LDAP (gebruikmakend van zowel bindgebaseerde als wachtwoordvergelijkingsstrategieën) voor centralisatie van authenticatiegegevens.
- Mogelijkheden voor eenmalige aanmelding met behulp van de populaire Central Authentication Service .
- Java Authentication and Authorization Service (JAAS) LoginModule, een op standaarden gebaseerde methode voor authenticatie die binnen Java wordt gebruikt. Merk op dat deze functie alleen een delegatie is naar een JAAS Loginmodule.
- Basistoegangsverificatie zoals gedefinieerd door middel van RFC 1945 .
- Digest-toegangsverificatie zoals gedefinieerd door middel van RFC 2617 en RFC 2069 .
- Presentatie van X.509- clientcertificaten over de Secure Sockets Layer- standaard.
- CA, Inc SiteMinder voor authenticatie (een populair commercieel product voor toegangsbeheer).
- Su (Unix) -achtige ondersteuning voor het wisselen van de hoofdidentiteit via een HTTP- of HTTPS- verbinding.
- Run-as-vervanging, waardoor een bewerking een andere beveiligingsidentiteit kan aannemen.
- Anonieme authenticatie, wat betekent dat zelfs niet-geverifieerde principals een beveiligingsidentiteit krijgen toegewezen.
- Containeradapter (aangepaste realm) ondersteuning voor Apache Tomcat , Resin , JBoss en Jetty (webserver) .
- Windows NTLM om browserintegratie mogelijk te maken (experimenteel).
- Webformulierverificatie , vergelijkbaar met de specificatie van de servletcontainer .
- "Remember-me" -ondersteuning via HTTP-cookies .
- Ondersteuning voor gelijktijdige sessies, waarmee het aantal gelijktijdige aanmeldingen dat door een principal is toegestaan, wordt beperkt.
- Volledige ondersteuning voor aanpassing en het inpluggen van aangepaste authenticatie-implementaties.
Belangrijkste autorisatiefuncties
- AspectJ- methode aanroepautorisatie.
- HTTP- autorisatie van webverzoek- URL's met behulp van een keuze uit Apache Ant- paden of reguliere expressies .
Op instanties gebaseerde beveiligingsfuncties
- Wordt gebruikt voor het specificeren van toegangscontrolelijsten die van toepassing zijn op domeinobjecten .
- Spring Security biedt een repository voor het opslaan, ophalen en wijzigen van ACL's in een database .
- Autorisatiefuncties worden geboden om beleid voor en na het aanroepen van methoden af te dwingen.
Andere mogelijkheden
- Softwarelokalisatie zodat berichten in de gebruikersinterface in elke taal kunnen zijn.
- Kanaalbeveiliging, om automatisch te schakelen tussen HTTP en HTTPS wanneer aan bepaalde regels wordt voldaan.
- Caching in alle databasegebieden van het framework.
- Publiceren van berichten om gebeurtenisgestuurde programmering te vergemakkelijken .
- Ondersteuning voor het uitvoeren van integratietests via JUnit .
- Spring Security heeft zelf uitgebreide JUnit- isolatietests.
- Diverse voorbeeldtoepassingen, gedetailleerde JavaDocs en een naslaggids.
- Onafhankelijkheid van webframes.
Releases
- 2.0.0 (april 2008)
- 3.0.0 (december 2009)
- 3.1.0 (7 december 2011)
- 3.1.2 (10 augustus 2012)
- 3.2.0 (16 december 2013)
- 4.0.0 (26 maart 2015)
- 4.1.3 (24 augustus 2016)
- 4.2.0 (10 november 2016)
- 3.2.10, 4.1.4, 4.2.1 (22 december 2016)
- 4.2.2 (2 maart 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 januari 2019)
- 5.1.4 (14 februari 2019)
- 5.1.5, 5.0.12, 4.2.12 (3 april 2019)