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
    1. Bezpieczeństwo z punktu widzenia standardu JEE (uwierzytelnienie, autoryzacja, integralność danych, bezpieczeństwo przesyłania danych)
    2. Podstawowe pojęcia (credentials, principal, realm, sesja itp.)
    3. Omówienie dostępnych mechanizmów uwierzytelnienia w modułach webowych
      1. HTTP Basic Authentication: BASIC
      2. Digest Authentication: DIGEST
      3. HTTPS Client Authentication: CLIENT-CERT
      4. Form-Based Authentication: FORM
    4. Bezpieczeństwo przesyłania danych (transport security)
      1. 2 dostępne poziomy: Confidential oraz Integral
    5. Autoryzacja:
      1. Deklaratywna: wykorzystanie dostępnych adnotacji (np. @RolesAllowed, @PermitAll , @DeclareRoles, @RunAs , @DenyAll, @ServletSecurity)
      2. Programistyczna: wykorzystanie metod (getRemoteUser(), isUserInRole(), getUserPrincipal(), getAuthType() , login(), logout(), getScheme())
    6. Omówienie specyfiki ochrony modułów EJB
      1. Uwierzytelnienie oraz Autoryzacja w obszarze beanów sesyjnych oraz encji
      2. 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:
    1. Bezpieczeństwo oparte o mechanizmy serwera aplikacyjnego
    2. Omijanie serwera aplikacyjnego przy implementacji mechanizmów bezpieczeństwa
    3. JAAS
    4. Spring Security
    5. Apache Shiro
    6. PicketBox
  3. Spring Security - omówienie kluczowych koncepcji i ich wzajemnych zależności
    1. SecurityContextHolder, SecurityContext
    2. Authentication, AuthenticationEntryPoint, UserDetailsService, UserDetails, Principal, Credentials, GrantedAuthority
    3. Dostępne na "dzień dobry" implementacje UserDetailsService np. InMemoryDaoImpl, JdbcDaoImpl
    4. AuthenticationManager, UsernamePasswordAuthenticationToken, ProviderManager
    5. AuthenticationProviders wraz z dostępnymi implementacjami np. DaoAuthenticationProvider, LdapAuthenticationProvider, CasAuthenticationProvider
    6. Password Encoders (hash, salt)
    7. AOP a mechanizmy autoryzacji
    8. AccessDecisionManager, Secure Objects, AccessDecisionVoter (np. RoleVoter), RunAsManager, AfterInvocationManager, AbstractSecurityInterceptor
    9. Filtry w procesie zapewnienia bezpieczeństwa np. DelegatingFilterProxy, FilterChainProxy, BasicAuthenticationFilter, UsernamePasswordAuthenticationFilter, RememberMeAuthenticationFilter, FormLoginFilter, ExceptionTranslationFilter, ConcurrentSessionFilter, SecurityContextPersistenceFilter
      1. Omijanie łańcucha filtrów (filters = "none")
      2. Wpływ kolejności w jakiej filtry zostały zadeklarowane na proces uwierzytelnienia oraz autoryzacji
      3. Własne filtry
    10. Konfiguracja z wykorzystaniem przestrzeni nazw
      1. Korzyści z konfiguracji deklaratywnej
      2. Omówienie elementów przestrzeni nazw które wpływają na konfigurację (Web/HTTP, Authentication Manager, Authentication Providers, UserDetailsService, AccessDecisionManager, BusinessObject)
      3. Atrybut auto-config, form-login, logout
    11. Model wyjątków w Spring Security 3
      1. AuthenticationException i dostępne podklasy np. BadCredentialsException, UsernameNotFoundException
      2. 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)
      3. AccessDeniedException wraz z podklasą AuthorizationServiceException
  4. Uwierzytelnienie w praktyce
    1. Implementacja prostego mechanizmu uwierzytelnienia z wykorzystaniem mechanizmów konfiguracyjnych przestrzeni nazw (namespace configuration)
    2. Implementacja prostego mechanizmu uwierzytelnienia w trybie „in-memory” z wykorzystaniem dostępnych w Spring Security 3 mechanizmów ( np. InMemoryDaoImpl)
    3. Standardowy, predefiniowany model danych reprezentujący konta użytkowników i ich role
    4. Implementacja prostego mechanizmu uwierzytelnienia w trybie „jdbc” z wykorzystaniem dostępnych w Spring Security 3 mechanizmów (np. JdbcDaoImpl) oraz predefiniowanego modelu danych
    5. Uwierzytelnienie w trybie „Remember-me”
  5. Autoryzacja w praktyce
    1. Autoryzacja z wykorzystaniem RoleVoter oraz AuthenticationVoter
    2. Ochrona wywołań metod biznesowych
    3. Wykorzystanie wyrażeń (expressions) w kontroli dostępu (np. hasRole, principal, isAuthenticated, isFullyAuthenticated )
    4. Adnotacje @PreAuthorize, @PreFilter, @PostAuthorize oraz @PostFilter
  6. Spring Security – zagadnienia zaawansowane
    1. Testowanie poza kontenerem – jak przyspieszyć proces testowania implementowanych rozwiązań ?
    2. 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
    3. Wykorzystanie ACL (Access Control List) w praktyce
    4. Wykorzystanie SSL
    5. Zarządzanie sesjami użytkowników
    6. Kontrola zawartości stron webowych poprzez dostępną bibliotekę znaczników (tagi: authorize, authentication, accesscontrollist)
  7. O czym jeszcze warto wiedzieć (teoretyczny zarys)
    1. LDAP Authentication
    2. JAAS Provider
    3. CAS Authentication
    4. X.509 Authentication
    5. Wsparcie OpenID
    6. Projekty rozszerzające możliwości Spring Security
      1. Moduł Spring Crypto i jego wsparcie dla szyfrowania (symetrycznego), generowania kluczy czy kodowania haseł
      2. Projekt Spring Security Extension i jego wsparcie dla SSO, integracji z Kerberos-em oraz SAML2
      3. Projekt OAuth for Spring Security i jego wsparcie dla OAuth
  8. Podsumowanie

Pytania?

* Wymagane.
** Szczegóły promocji w Regulaminie.


Konsultant on-line
Skorzystaj z usług naszego konsultanta on-line.
Naciśnij przycisk ‘Skorzystaj’ aby przejść do okienka czatu
Kontakt
ul. Nowogrodzka 62c
02-002 Warszawa
Telefon +48 22 2035600
Fax +48 22 2035601
Email