Wiosenne bezpieczeństwo - Spring Security
| Deweloper (y) | 4 |
|---|---|
| Wersja stabilna | 5.2.1 / 4 listopada 2019 r . |
| Napisane w | Jawa |
| System operacyjny | Wieloplatformowy |
| Rodzaj | bezpieczeństwo struktury aplikacji internetowych |
| Licencja | Licencja Apache 2.0 |
| Stronie internetowej | projekty |
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 Nazwa zapobieganie konfliktom) Ben Alex wraz z nim publicznie udostępniany na licencji Apache w marcu 2004. następnie Acegi została włączona do wiosennego portfelu jako wiosennym Bezpieczeństwa oficjalnego wiosennym podprojektu. Pierwszym publicznym wydaniem pod nową nazwą było Spring Security 2.0.0 w kwietniu 2008 roku, z komercyjnym wsparciem i szkoleniami dostępnymi w SpringSource .
Przepływ uwierzytelniania
Diagram 1 przedstawia podstawowy przepływ żądania uwierzytelnienia za pomocą systemu Spring Security. Pokazuje różne filtry i ich interakcję od początkowego żądania przeglądarki do pomyślnego uwierzytelnienia lub błędu HTTP 403.
| Przeglądarka przesyła „ dane uwierzytelniające ” | |
| „ Mechanizm uwierzytelniania ” zbiera szczegółowe informacje | |
| „ Żądanie uwierzytelnienia ” obiekt jest zbudowany | |
| Żądanie uwierzytelnienia wysłane do AuthenticationManager | |
| AuthenticationManager (jest odpowiedzialny za przekazywanie żądań przez łańcuch AuthenticationProviders ') | |
| „ Dostawca uwierzytelniania ” poprosi usługę UserDetailsService o udostępnienie obiektu UserDetails | |
| Wynikowy obiekt UserDetails (który zawiera również GrantedAuthority [] s ) zostanie użyty do zbudowania w pełni wypełnionego obiektu uwierzytelniania . | |
| Jeśli „ mechanizm uwierzytelniania ” otrzyma z powrotem w pełni wypełniony obiekt uwierzytelniania , uzna żądanie za prawidłowe, umieści uwierzytelnienie w SecurityContextHolder ; i spowodować ponowienie pierwotnego żądania. Jeśli z drugiej strony AuthenticationProvider odrzucił żądanie, mechanizm uwierzytelniania poprosi agenta użytkownika o ponowienie. |
|
| AbstractSecurityInterceptor autoryzuje ponownie wygenerowane żądanie i zgłasza wyjątki Java. (Prosi 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 został uwierzytelniony i dlatego po prostu nie ma wystarczającego dostępu Uruchom AuthenticationEntryPoint - jeśli podmiot nie został uwierzytelniony, co jest mechanizmem uwierzytelniania |
|
Kluczowe funkcje uwierzytelniania
- LDAP (przy użyciu strategii opartej na powiązaniach i strategii porównywania haseł) do centralizacji informacji uwierzytelniających.
- Funkcje pojedynczego logowania przy użyciu popularnej usługi centralnego uwierzytelniania .
- Java Authentication and Authorization Service (JAAS) LoginModule, oparta na standardach metoda uwierzytelniania używana w języku Java. Zwróć uwagę, że ta funkcja jest tylko delegowaniem do modułu logowania JAAS.
- Podstawowe uwierzytelnianie dostępu zgodnie z definicją zawartą w RFC 1945 .
- Uwierzytelnianie dostępu Digest zdefiniowane w RFC 2617 i RFC 2069 .
- Prezentacja certyfikatu klienta X.509 w standardzie Secure Sockets Layer .
- CA, Inc SiteMinder do uwierzytelniania (popularny komercyjny produkt do zarządzania dostępem).
- Obsługa podobna do Su (Unix) do przełączania tożsamości podmiotu głównego za pośrednictwem połączenia HTTP lub HTTPS .
- Wymiana run-as, która umożliwia operacji przyjęcie innej tożsamości zabezpieczeń.
- Uwierzytelnianie anonimowe, co oznacza, że nawet nieuwierzytelnionym podmiotom głównym przydzielana jest tożsamość zabezpieczeń.
- Obsługa adaptera kontenera (obszar niestandardowy) dla Apache Tomcat , Resin , JBoss i Jetty (serwer sieciowy) .
- Windows NTLM, aby włączyć integrację z przeglądarką (eksperymentalne).
- Uwierzytelnianie za pomocą formularzy WWW , podobne do specyfikacji kontenera serwletów .
- Obsługa funkcji „Zapamiętaj mnie” za pośrednictwem plików cookie HTTP .
- Obsługa sesji współbieżnych, która ogranicza liczbę jednoczesnych logowań dozwolonych przez jednostkę główną.
- 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ń internetowych przy użyciu wybranych ścieżek Apache Ant lub wyrażeń regularnych .
Funkcje zabezpieczeń 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 .
- Funkcje autoryzacji służą do wymuszania zasad przed i po wywołaniach metod.
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 dotykających bazy danych.
- Publikowanie komunikatów w celu ułatwienia programowania sterowanego zdarzeniami .
- Wsparcie dla wykonywania testów integracyjnych za pośrednictwem JUnit .
- Sam Spring Security posiada kompleksowe testy izolacji JUnit .
- Kilka przykładowych aplikacji, szczegółowe dokumenty JavaDocs i przewodnik referencyjny.
- Niezależność ram internetowych.
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 r.)
- 4.2.0 (10 listopada 2016 r.)
- 3.2.10, 4.1.4, 4.2.1 (22 grudnia 2016)
- 4.2.2 (2 marca 2017 r.)
- 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)
- 5.1.1, 5.0.9, 4.2.9 (16 października 2018)
- 5.1.2, 5.0.10, 4.2.10 (29 listopada 2018)
- 5.1.3, 5.0.11, 4.2.11 (11 stycznia 2019)
- 5.1.4 (14 lutego 2019)
- 5.1.5, 5.0.12, 4.2.12 (3 kwietnia 2019)