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)