Vårsäkerhet
Utvecklare | 4 |
---|---|
Stabil frisättning | 5.2.1 / 4 november 2019
|
Skrivet i | Java |
Operativ system | Cross-plattform |
Typ | säkerhet för webbapplikationsramverk |
Licens | Apache-licens 2.0 |
Hemsida |
Spring Security är ett Java / Java EE- ramverk som tillhandahåller autentisering , auktorisering och andra säkerhetsfunktioner för företagsapplikationer. Projektet startades i slutet av 2003 som "Acegi Security" (uttalas Ah-see-gee / ɑː s iː dʒ iː / , vars bokstäver är det första, tredje, femte, sjunde och nionde tecknet från det engelska alfabetet, för att förhindra namnkonflikter) av Ben Alex, och den släpptes offentligt under Apache-licensen i mars 2004. Därefter införlivades Acegi i Spring -portföljen som Spring Security, ett officiellt Spring-underprojekt. Den första offentliga utgåvan under det nya namnet var Spring Security 2.0.0 i april 2008, med kommersiell support och utbildning tillgänglig från SpringSource .
Autentiseringsflöde
Diagram 1 visar det grundläggande flödet för en autentiseringsbegäran som använder Spring Security-systemet. Den visar de olika filtren och hur de interagerar från den första webbläsarförfrågan, till antingen en lyckad autentisering eller ett HTTP 403-fel.
Webbläsaren skickar " autentiseringsuppgifter " | |
" Autentiseringsmekanism " samlar in detaljerna | |
Ett objekt " autentiseringsbegäran " byggs | |
Autentiseringsbegäran skickas till en AuthenticationManager | |
AuthenticationManager " " Authentication provider för att tillhandahålla ett UserDetails- objekt |
|
( detta är ansvarig för att skicka förfrågningar genom en kedja av AuthenticationProviders) | |
Det resulterande UserDetails- objektet (som också innehåller GrantedAuthority[]s ) kommer att användas för att bygga det fullt ifyllda Authentication -objektet. |
|
Om " Autentiseringsmekanism " tar emot det fullständigt ifyllda Authentication- objektet, kommer den att anse att begäran är giltig, lägga in Authentication i SecurityContextHolder ; och få den ursprungliga begäran att prövas igen. Om, å andra sidan, AuthenticationProvider avvisade begäran, kommer autentiseringsmekanismen att be användaragenten att försöka igen. |
|
AbstractSecurityInterceptor auktoriserar den regenererade begäran och kastar Java-undantag. (Frågar AccessDecisionManager om beslut.) |
|
ExceptionTranslationFilter översätter undantagen som slängs av AbstractSecurityInterceptor till HTTP-relaterade felkoder |
|
Felkod 403 – om huvudmannen har autentiserats och därför helt enkelt saknar tillräcklig åtkomst Starta en AuthenticationEntryPoint – om huvudmannen inte har autentiserats mekanism |
Viktiga autentiseringsfunktioner
- LDAP (med användning av både bindningsbaserade och lösenordsjämförelsestrategier) för centralisering av autentiseringsinformation.
- för enkel inloggning med den populära centrala autentiseringstjänsten .
- Java Authentication and Authorization Service (JAAS) LoginModule, en standardbaserad metod för autentisering som används inom Java. Observera att denna funktion endast är en delegering till en JAAS-inloggningsmodul.
- Grundläggande åtkomstautentisering enligt definitionen genom RFC 1945.
- Sammanfattningsåtkomstautentisering enligt definitionen genom RFC 2617 och RFC 2069.
- X.509 klientcertifikatpresentation över Secure Sockets Layer- standarden.
- CA, Inc SiteMinder för autentisering (en populär produkt för kommersiell åtkomsthantering).
- Su (Unix) -liknande stöd för att byta huvudidentitet över en HTTP- eller HTTPS -anslutning.
- Kör som ersättning, vilket gör att en operation kan anta en annan säkerhetsidentitet.
- Anonym autentisering, vilket innebär att även oautentiserade huvudmän tilldelas en säkerhetsidentitet.
- Stöd för containeradapter (anpassad sfär) för Apache Tomcat , Resin , JBoss och Jetty (webbserver) .
- Windows NTLM för att möjliggöra webbläsarintegration (experimentell).
- Webbformulärautentisering, liknande specifikationen för servletbehållaren .
- "Kom ihåg-mig"-stöd via HTTP-cookies .
- Support för samtidiga sessioner, vilket begränsar antalet samtidiga inloggningar som en huvudman tillåter.
- Fullständigt stöd för anpassning och inkoppling av anpassade autentiseringsimplementeringar.
Viktiga auktoriseringsfunktioner
- AspectJ metod anropsbehörighet.
- HTTP- auktorisering av webbadresser för webbförfrågningar med ett urval av Apache Ant- sökvägar eller reguljära uttryck .
Instansbaserade säkerhetsfunktioner
- Används för att ange åtkomstkontrollistor som är tillämpliga på domänobjekt .
- Spring Security erbjuder ett arkiv för att lagra, hämta och ändra ACL:er i en databas .
- Auktoriseringsfunktioner tillhandahålls för att upprätthålla policyer före och efter metodanrop.
Andra funktioner
- Programvarulokalisering så att meddelanden i användargränssnittet kan vara på vilket språk som helst.
- Kanalsäkerhet, för att automatiskt växla mellan HTTP och HTTPS när särskilda regler uppfylls.
- Cachning i alla databasberörande områden i ramverket.
- Publicering av meddelanden för att underlätta händelsestyrd programmering .
- Stöd för att utföra integrationstestning via JUnit .
- Spring Security har självt omfattande JUnit- isoleringstester.
- Flera exempelapplikationer, detaljerade JavaDocs och en referensguide.
- Oberoende av webbramverk.
Släpps
- 2.0.0 (april 2008)
- 3.0.0 (december 2009)
- 3.1.0 (7 december 2011)
- 3.1.2 (10 augusti 2012)
- 3.2.0 (16 december 2013)
- 4.0.0 (26 mars 2015)
- 4.1.3 (24 augusti 2016)
- 4.2.0 (10 november 2016)
- 3.2.10, 4.1.4, 4.2.1 (22 december 2016)
- 4.2.2 (2 mars 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)