PDF: Implementacja mechanizmów bezpieczeństwa w

Transkrypt

PDF: Implementacja mechanizmów bezpieczeństwa w
Kod szkolenia:
Tytuł szkolenia:
Dni:
SPRSEC
Implementacja mechanizmów bezpieczeństwa w aplikacjach
webowych z wykorzystaniem Spring Security, Apache Shiro,
JBoss Picketlink
3
Opis:
Adresaci szkolenia
Szkolenie adresowane jest do programistów chcących w szybkim czasie poznać i zrozumieć
zasady funkcjonowania Spring Security 3 jak również zapoznać się (ogólnie) z alternatywnymi
możliwościami implementacji mechanizmów bezpieczeństwa w aplikacjach webowych oraz w
świecie JEE
Cel szkolenia
Celem szkolenia jest praktyczne poznanie technik programistycznych oraz konfiguracyjnych
umożliwiających implementację mechanizmów bezpieczeństwa w aplikacjach webowych przy
wykorzystaniu Spring Security 3.
Szkolenie w wyjściowej formule szczegółowo omawia możliwości Spring Security 3. Pozostałe
rozwiązania przedstawione są czysto teoretycznie w celach porównawczych. Na życzenie
możliwe jest dostosowanie programu w taki sposób aby technologią szczegółowo omawianą
było np. Apache Shiro a reszta zagadnień (tj. Spring Security 3, JBoss Picketlink) stanowiła
uzupełnienie.
Bezpieczeństwo w świecie JEE
Bezpieczeństwo aplikacji JEE a bezpieczeństwo aplikacji webowych
Omówienie zasad działania Spring Security z dużym naciskiem położonym na
architekturę tego rozwiązania i wzajemne zależności pomiędzy jego komponentami
(obiekty, usługi) – niezbędne do zrozumienia tego rozwiązania
Praktyczne wykorzystanie mechanizmów Spring Security dostarczanych „na dzień
dobry”
Rozszerzenie dostępnych mechanizmów Spring Security w celu implementacji
własnych wymagań
Jak można przyspieszyć proces testowania implementowanych mechanizmów
bezpieczeństwa poprzez testy z pominięciem kontenera?
Mocne strony szkolenia
Spring Security jest uznawane za jedno z najlepszych rozwiązań umożliwiających
implementację mechanizmów bezpieczeństwa w aplikacjach webowych. Z drugiej jednak
strony wiele osób uważa to rozwiązanie za zbyt skomplikowane, gdyż wymaga ono
przeznaczenia stosunkowo dużej ilości czasu na zrozumienie zasad jakimi się ono rządzi.
Niniejsze szkolenie wychodzi naprzeciw tym problemom i dostarcza konkretnych informacji
umożliwiających szybkie odnalezienie się w świecie Spring Security 3. Szkolenie rozpoczyna
się od wstępu teoretycznego podczas którego omawiane są kluczowe koncepcje i zależności
jakie należy poznać aby móc „kontrolować” to rozwiązanie. Omawiane są najważniejsze
obiekty oraz usługi wraz z wzajemnymi zależnościami. Sama teoria to jednak nie wszystko, w
dalszych częściach szkolenia zagadnienia zasygnalizowane w części teoretycznej będą
wykorzystywane w praktyce. Dzięki temu, w stosunkowo krótkim czasie uczestnik będzie w
stanie zdobyć wiedzę, która w trybie nauki samodzielnej jest w zasadzie nieosiągalna do
zdobycia w analogicznym czasie.
Wymagania:
Od uczestników szkolenia wymagana jest umiejętność programowania w języku Java (do
poznania na kursie J/JP), znajomość podstawowych zagadnień związanych z frameworkiem
Spring (do poznania na kursie J/SPRING) oraz podstawowych koncepcji związanych z
programowaniem aplikacji webowych (do poznania na kursie J/WEB2b).
Parametry szkolenia
3*8 godzin (3*7 godzin netto) wykładów i warsztatów (z wyraźną przewagą warsztatów).
Wielkość grupy: maks. 8-10 osób.
Program szkolenia:
1. Bezpieczeństwo aplikacji JEE a bezpieczeństwo aplikacji webowych - wstęp
I. Bezpieczeństwo z punktu widzenia standardu JEE (uwierzytelnienie,
autoryzacja, integralność danych, bezpieczeństwo przesyłania danych)
II. Podstawowe pojęcia (credentials, principal, realm, sesja itp.)
III. Omówienie dostępnych mechanizmów uwierzytelnienia w modułach
webowych
i. HTTP Basic Authentication: BASIC
ii. Digest Authentication: DIGEST
iii. HTTPS Client Authentication: CLIENT-CERT
iv. Form-Based Authentication: FORM
IV. Bezpieczeństwo przesyłania danych (transport security)
i. 2 dostępne poziomy: Confidential oraz Integral
V. Autoryzacja:
i. Deklaratywna: wykorzystanie dostępnych adnotacji (np.
@RolesAllowed, @PermitAll , @DeclareRoles, @RunAs , @DenyAll,
@ServletSecurity)
ii. Programistyczna: wykorzystanie metod (getRemoteUser(),
isUserInRole(), getUserPrincipal(), getAuthType() , login(), logout(),
getScheme())
VI. Omówienie specyfiki ochrony modułów EJB
i. Uwierzytelnienie oraz Autoryzacja w obszarze beanów sesyjnych oraz
encji
ii. Deskryptory wdrożenia (EJB Deployment Descriptors) i zależność od
wybranego serwera aplikacyjnego
2. Przegląd dostępnych technik/rozwiązań umożliwiających zaprogramowanie
mechanizmów bezpieczeństwa w aplikacji JEE:
I. Bezpieczeństwo oparte o mechanizmy serwera aplikacyjnego
II. Omijanie serwera aplikacyjnego przy implementacji mechanizmów
bezpieczeństwa
III. JAAS
IV. Spring Security
V. Apache Shiro
VI. PicketBox
3. Spring Security - omówienie kluczowych koncepcji i ich wzajemnych zależności
I. SecurityContextHolder, SecurityContext
II. Authentication, AuthenticationEntryPoint, UserDetailsService, UserDetails,
Principal, Credentials, GrantedAuthority
III. Dostępne na "dzień dobry" implementacje UserDetailsService np.
InMemoryDaoImpl, JdbcDaoImpl
IV. AuthenticationManager, UsernamePasswordAuthenticationToken,
ProviderManager
V. AuthenticationProviders wraz z dostępnymi implementacjami np.
DaoAuthenticationProvider, LdapAuthenticationProvider,
CasAuthenticationProvider
VI. Password Encoders (hash, salt)
VII. AOP a mechanizmy autoryzacji
VIII. AccessDecisionManager, Secure Objects, AccessDecisionVoter (np.
RoleVoter), RunAsManager, AfterInvocationManager,
AbstractSecurityInterceptor
IX. Filtry w procesie zapewnienia bezpieczeństwa np. DelegatingFilterProxy,
FilterChainProxy, BasicAuthenticationFilter,
UsernamePasswordAuthenticationFilter, RememberMeAuthenticationFilter,
FormLoginFilter, ExceptionTranslationFilter, ConcurrentSessionFilter,
SecurityContextPersistenceFilter
i. Omijanie łańcucha filtrów (filters = "none")
ii. Wpływ kolejności w jakiej filtry zostały zadeklarowane na proces
uwierzytelnienia oraz autoryzacji
iii. Własne filtry
X. Konfiguracja z wykorzystaniem przestrzeni nazw
i. Korzyści z konfiguracji deklaratywnej
ii. Omówienie elementów przestrzeni nazw które wpływają na
konfigurację (Web/HTTP, Authentication Manager, Authentication
Providers, UserDetailsService, AccessDecisionManager,
4.
5.
6.
7.
BusinessObject)
iii. Atrybut auto-config, form-login, logout
XI. Model wyjątków w Spring Security 3
i. AuthenticationException i dostępne podklasy np.
BadCredentialsException, UsernameNotFoundException
ii. AccountStatusException jako podklasa AuthenticationException ale
również jako jedna z ważniejszych klas wspierających obsługę
„nieważnych” kont użytkowników. (Podklasy np.
AccountExpiredException, LockedException, DisabledException czy
CredentialsExpiredException)
iii. AccessDeniedException wraz z podklasą
AuthorizationServiceException
Uwierzytelnienie w praktyce
I. Implementacja prostego mechanizmu uwierzytelnienia z wykorzystaniem
mechanizmów konfiguracyjnych przestrzeni nazw (namespace configuration)
II. Implementacja prostego mechanizmu uwierzytelnienia w trybie „in-memory” z
wykorzystaniem dostępnych w Spring Security 3 mechanizmów ( np.
InMemoryDaoImpl)
III. Standardowy, predefiniowany model danych reprezentujący konta
użytkowników i ich role
IV. Implementacja prostego mechanizmu uwierzytelnienia w trybie „jdbc” z
wykorzystaniem dostępnych w Spring Security 3 mechanizmów (np.
JdbcDaoImpl) oraz predefiniowanego modelu danych
V. Uwierzytelnienie w trybie „Remember-me”
Autoryzacja w praktyce
I. Autoryzacja z wykorzystaniem RoleVoter oraz AuthenticationVoter
II. Ochrona wywołań metod biznesowych
III. Wykorzystanie wyrażeń (expressions) w kontroli dostępu (np. hasRole,
principal, isAuthenticated, isFullyAuthenticated )
IV. Adnotacje @PreAuthorize, @PreFilter, @PostAuthorize oraz @PostFilter
Spring Security – zagadnienia zaawansowane
I. Testowanie poza kontenerem – jak przyspieszyć proces testowania
implementowanych rozwiązań ?
II. Implementacja własnego modelu danych oraz logiki, które będą wspierać
niestandardowe (czyt. nie mające predefiniowanej implementacji w Spring
Security) wymagania w zakresie uwierzytelnienia oraz autoryzacji
użytkowników
III. Wykorzystanie ACL (Access Control List) w praktyce
IV. Wykorzystanie SSL
V. Zarządzanie sesjami użytkowników
VI. Kontrola zawartości stron webowych poprzez dostępną bibliotekę znaczników
(tagi: authorize, authentication, accesscontrollist)
O czym jeszcze warto wiedzieć (teoretyczny zarys)
I. LDAP Authentication
II. JAAS Provider
III. CAS Authentication
IV. X.509 Authentication
V. Wsparcie OpenID
VI. Projekty rozszerzające możliwości Spring Security
i. Moduł Spring Crypto i jego wsparcie dla szyfrowania (symetrycznego),
generowania kluczy czy kodowania haseł
ii. Projekt Spring Security Extension i jego wsparcie dla SSO, integracji z
Kerberos-em oraz SAML2
iii. Projekt OAuth for Spring Security i jego wsparcie dla OAuth
8. Podsumowanie
Powered by TCPDF (www.tcpdf.org)

Podobne dokumenty