Wiosenna ochrona
Deweloperzy | 4 |
---|---|
Wersja stabilna | 5.2.1 / 4 listopada 2019 r.
|
Napisane w | Jawa |
System operacyjny | Międzyplatformowe |
Typ | bezpieczeństwo ram aplikacji internetowych |
Licencja | Licencja Apache 2.0 |
Strona internetowa |
Spring Security to platforma Java / Java EE , która zapewnia uwierzytelnianie , autoryzację i inne funkcje bezpieczeństwa dla aplikacji korporacyjnych. Projekt rozpoczął się pod koniec 2003 roku jako „Acegi Security” (wymawiane Ah-see-gee / ɑː s iː dʒ iː / , którego litery to pierwszy, trzeci, piąty, siódmy i dziewiąty znak alfabetu angielskiego), aby zapobiegać konfliktom nazw) autorstwa Bena Alexa, który został udostępniony publicznie na licencji Apache w marcu 2004. Następnie Acegi zostało włączone do portfolio Spring jako Spring Security, oficjalny podprojekt Spring. Pierwszym publicznym wydaniem pod nową nazwą było Spring Security 2.0.0 w kwietniu 2008 r., z komercyjnym wsparciem i szkoleniami dostępnymi od SpringSource .
Przepływ uwierzytelniania
Diagram 1 przedstawia podstawowy przebieg żądania uwierzytelnienia przy użyciu systemu Spring Security. Pokazuje różne filtry i ich interakcje od początkowego żądania przeglądarki do pomyślnego uwierzytelnienia lub błędu HTTP 403.
Przeglądarka wysyła " poświadczenia uwierzytelniające " | |
" Mechanizm uwierzytelniania " zbiera szczegóły | |
Obiekt " żądania uwierzytelnienia " jest tworzony Żądanie | |
uwierzytelnienia wysyłane do menedżera uwierzytelniania | |
Menedżer uwierzytelniania (odpowiada za przekazywanie żądań przez łańcuch dostawców uwierzytelniania) | |
" Dostawca uwierzytelniania " zapyta usługę UserDetails zapewnić Obiekt UserDetails
|
|
Wynikowy obiekt UserDetails (który zawiera również GrantedAuthority[]s ) zostanie użyty do zbudowania w pełni wypełnionego obiektu Authentication . |
|
Jeśli „ mechanizm uwierzytelniania ” otrzyma z powrotem w pełni wypełniony obiekt uwierzytelnienia , uzna żądanie za ważne, umieść uwierzytelnienie w SecurityContextHolder ; i spowodować ponowienie pierwotnego żądania. Jeżeli z drugiej strony AuthenticationProvider odrzucił żądanie, mechanizm uwierzytelniania poprosi agenta użytkownika o ponowienie próby. |
|
AbstractSecurityInterceptor autoryzuje zregenerowane żądanie i zgłasza wyjątki Java. (Pytuje AccessDecisionManager o decyzję.) |
|
ExceptionTranslationFilter tłumaczy wyjątki zgłaszane przez AbstractSecurityInterceptor na kody błędów związane z HTTP |
|
Kod błędu 403 – jeśli podmiot zabezpieczeń został uwierzytelniony i dlatego po prostu nie ma wystarczającego dostępu Uruchom AuthenticationEntryPoint – jeśli zleceniodawca nie został uwierzytelniony, co jest mechanizmem uwierzytelniającym |
Kluczowe funkcje uwierzytelniania
- LDAP (wykorzystujący zarówno strategie oparte na powiązaniach, jak i strategie porównywania haseł) do centralizacji informacji uwierzytelniających.
- pojedynczego logowania przy użyciu popularnej centralnej usługi uwierzytelniania .
- Java Authentication and Authorization Service (JAAS) LoginModule, oparta na standardach metoda uwierzytelniania używana w Javie. Uwaga: ta funkcja jest tylko delegacją do modułu logowania JAAS.
- Uwierzytelnianie podstawowego dostępu zgodnie z definicją zawartą w RFC 1945.
- Uwierzytelnianie dostępu szyfrowanego zgodnie z definicją zawartą w dokumentach RFC 2617 i RFC 2069.
- certyfikatu klienta X.509 w standardzie Secure Sockets Layer .
- CA, Inc SiteMinder do uwierzytelniania (popularny komercyjny produkt do zarządzania dostępem).
- Su (Unix) do przełączania głównej tożsamości przez połączenie HTTP lub HTTPS .
- Zastąpienie typu Uruchom jako, które umożliwia operacji przyjęcie innej tożsamości zabezpieczeń.
- Uwierzytelnianie anonimowe, co oznacza, że nawet nieuwierzytelnionym podmiotom zabezpieczeń przydzielana jest tożsamość zabezpieczeń.
- Obsługa adaptera kontenera (obszar niestandardowy) dla Apache Tomcat , Resin , JBoss i Jetty (serwer WWW) .
- Windows NTLM , aby umożliwić integrację z przeglądarką (eksperymentalnie).
- Uwierzytelnianie za pomocą formularza internetowego, podobne do specyfikacji kontenera serwletów .
- Obsługa funkcji „Zapamiętaj mnie” za pośrednictwem plików cookie HTTP .
- Obsługa sesji równoległych, która ogranicza liczbę jednoczesnych logowań dozwolonych przez zleceniodawcę.
- Pełna obsługa dostosowywania i podłączania niestandardowych implementacji uwierzytelniania.
Kluczowe funkcje autoryzacji
- Autoryzacja wywołania metody AspectJ .
- Autoryzacja HTTP adresów URL żądań sieciowych przy użyciu wybranych ścieżek Apache Ant lub wyrażeń regularnych .
Funkcje bezpieczeństwa oparte na instancjach
- Służy do określania list kontroli dostępu mających zastosowanie do obiektów domeny .
- Spring Security oferuje repozytorium do przechowywania, pobierania i modyfikowania list ACL w bazie danych .
- Dostępne są funkcje autoryzacji w celu wymuszenia zasad przed i po wywołaniu metody.
Inne funkcje
- Lokalizacja oprogramowania , dzięki czemu komunikaty interfejsu użytkownika mogą być w dowolnym języku.
- Bezpieczeństwo kanału, aby automatycznie przełączać się między HTTP i HTTPS po spełnieniu określonych reguł.
- Buforowanie we wszystkich obszarach frameworka mających kontakt z bazą danych.
- Publikowanie komunikatów w celu ułatwienia programowania sterowanego zdarzeniami .
- Wsparcie dla wykonywania testów integracyjnych za pośrednictwem JUnit .
- Sam Spring Security ma kompleksowe testy izolacji JUnit .
- Kilka przykładowych aplikacji, szczegółowe dokumenty JavaDoc i przewodnik referencyjny.
- Niezależność ram sieciowych.
Wydania
- 2.0.0 (kwiecień 2008)
- 3.0.0 (grudzień 2009)
- 3.1.0 (7 grudnia 2011)
- 3.1.2 (10 sierpnia 2012)
- 3.2.0 (16 grudnia 2013)
- 4.0.0 (26 marca 2015)
- 4.1.3 (24 sierpnia 2016)
- 4.2.0 (10 listopada 2016)
- 3.2.10, 4.1.4, 4.2.1 (22 grudnia 2016 r.)
- 4.2.2 (2 marca 2017)
- 4.2.3 (8 czerwca 2017)
- 5.0.0 (28 listopada 2017)
- 5.0.8, 4.2.8 (11 września 2018)
- 5.1.0 GA (27 września 2018 r.)
- 5.1.1, 5.0.9, 4.2.9 (16 października 2018 r.)
- 5.1.2, 5.0.10, 4.2.10 (29 listopada 2018 r.)
- 5.1.3, 5.0.11, 4.2.11 (11 stycznia 2019 r.)
- 5.1.4 (14 lutego 2019)
- 5.1.5, 5.0.12, 4.2.12 (3 kwietnia 2019 r.)