Vårsäkerhet - Spring Security
| Utvecklare | 4 |
|---|---|
| Stabil frisättning | 5.2.1 / 4 november 2019 |
| Skrivet i | Java |
| Operativ system | Tvärplattform |
| Typ | säkerhet för webbapplikationsramverk |
| Licens | Apache-licens 2.0 |
| Hemsida | projekt |
Spring Security är ett Java / Java EE- ramverk som ger autentisering , auktorisering och andra säkerhetsfunktioner för företagsapplikationer. Projektet startades i slutet av 2003 som "Acegi Security" (uttalad Ah-see-gee / ɑː s iː dʒ iː / , vars bokstäver är de första, tredje, femte, sjunde och nionde tecknen från det engelska alfabetet, för att förhindra namnkonflikter) av Ben Alex, med det är offentligt släppt under Apache License i mars 2004. Därefter Acegi införlivas i Spring portföljen Spring Security, en officiell Spring delprojekt. Den första offentliga utgåvan under det nya namnet var Spring Security 2.0.0 i april 2008, med kommersiellt stöd och utbildning tillgänglig från SpringSource .
Autentiseringsflöde
Diagram 1 visar det grundläggande flödet för en autentiseringsförfrågan med Spring Security-systemet. Den visar de olika filtren och hur de interagerar från den ursprungliga webbläsarförfrågan till antingen en lyckad autentisering eller ett HTTP 403-fel.
| Webbläsare lämnar " inloggningsuppgifter " | |
| " Autentiseringsmekanism " samlar in detaljerna | |
| Ett " autentiseringsbegäran " -objekt byggs | |
| Autentiseringsbegäran skickas till en AuthenticationManager | |
| AuthenticationManager (detta är ansvarigt för att skicka förfrågningar genom en kedja av AuthenticationProviders ') | |
| " Autentiseringsleverantör " kommer att be en UserDetailsService att tillhandahålla ett UserDetails- objekt | |
| Det resulterande UserDetails- objektet (som också innehåller GrantedAuthority [] ) kommer att användas för att bygga det fullbefolkade autentiseringsobjektet . | |
| Om " Autentiseringsmekanism " tar emot det fullständigt fyllda autentiseringsobjektet , kommer det att betrakta begäran som giltig, sätt autentiseringen i SecurityContextHolder ; och få den ursprungliga begäran att prövas på nytt. Om å andra sidan AuthenticationProvider avvisade begäran kommer autentiseringsmekanismen att fråga användaragenten att försöka igen. |
|
| AbstractSecurityInterceptor godkänner den regenererade begäran och kastar Java-undantag. ( Frågar AccessDecisionManager för beslut.) | |
| ExceptionTranslationFilter översätter undantagen från 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 vilket är en autentiseringsmekanism |
|
Viktiga autentiseringsfunktioner
- LDAP (med både bindningsbaserade och lösenordsjämförelsestrategier) för centralisering av autentiseringsinformation.
- Enkel inloggningsfunktion med den populära Central Authentication Service .
- Java Authentication and Authorization Service (JAAS) LoginModule, en standardbaserad metod för autentisering som används inom Java. Observera att den här funktionen endast är en delegation till en JAAS-inloggningsmodul.
- Grundläggande åtkomstautentisering enligt definitionen i RFC 1945 .
- Sammanfatta åtkomstautentisering enligt definitionen i RFC 2617 och RFC 2069 .
- X.509 klientcertifikatpresentation över Secure Sockets Layer- standarden.
- CA, Inc SiteMinder för autentisering (en populär kommersiell åtkomsthanteringsprodukt).
- Su (Unix) -likt stöd för att byta huvudidentitet över en HTTP- eller HTTPS- anslutning.
- Kör som ersättning, vilket gör det möjligt för en operation att anta en annan säkerhetsidentitet.
- Anonym autentisering, vilket innebär att även obehöriga rektorer tilldelas en säkerhetsidentitet.
- Containeradapter (anpassad sfär) stöd för Apache Tomcat , Resin , JBoss och Jetty (webbserver) .
- Windows NTLM för att aktivera webbläsarintegration (experimentell).
- Verifiering av webbformulär , liknande servlets behållarspecifikation .
- Support för "Kom ihåg mig" via HTTP-kakor .
- Stöd för samtidig session, vilket begränsar antalet samtidiga inloggningar som en huvudansvarig tillåter.
- Fullt stöd för anpassning och anslutning av anpassade autentiseringsimplementeringar.
Viktiga funktioner för auktorisering
- AspectJ- metod anropsbehörighet.
- HTTP- auktorisering av webbförfrågan- URL: er med val av Apache Ant- sökvägar eller reguljära uttryck .
Instansbaserade säkerhetsfunktioner
- Används för att specificera åtkomstkontrollistor som är tillämpliga på domänobjekt .
- Spring Security erbjuder ett arkiv för lagring, hämtning och modifiering av ACL: er i en databas .
- Auktoriseringsfunktioner tillhandahålls för att genomdriva policyer före och efter metodinrop.
Andra funktioner
- Programlokalisering så att användargränssnittsmeddelanden kan vara på vilket språk som helst.
- Kanalsäkerhet, för att automatiskt växla mellan HTTP och HTTPS när du uppfyller vissa regler.
- Cachning i alla ramar som berör databasen.
- Publicering av meddelanden för att underlätta händelsestyrd programmering .
- Stöd för att utföra integrationstester via JUnit .
- Spring Security själv har omfattande JUnit- isoleringstester.
- Flera exempelapplikationer , detaljerade JavaDocs och en referensguide.
- Webbramens oberoende.
Släpp
- 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)