Projektowanie warstwy serwera Acegi. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego.

Slides:



Advertisements
Podobne prezentacje
I część 1.
Advertisements

Programowanie obiektowe
Klasy i obiekty.
Bezpieczeństwo wyjątków w C++: OpenGL
Praca z plikami tekstowymi
Bezpieczeństwo aplikacji WWW
WinSCP - Konfiguracja Przystosowanie WinSCP do specyfiki środowiska
Prowadzący: dr inż. Antoni Izworski Programowanie warstwy sieciowej
Uwierzytelnianie i autoryzacja dostępu do portali
Model – View - Controler
KONKURS WIEDZY O SZTUCE
Doskonalenie zarządzania usługami publicznymi i rozwojem w jednostkach samorządu lokalnego Projekt współfinansowany ze środków Unii Europejskiej w ramach.
Ksantypa2: Architektura
Hibernate Klasy trwałe
Metody autoryzacji użytkowników wymaga integracji z systemem operacyjnym nie wymaga logowania mała pewność mechanizmu wymaga logowania duża pewność mechanizmu.
„Migracja środowisk Novell NDS/eDirectory oraz Novell Groupwise do środowiska Microsoft Active Directory oraz Microsoft Exchange przy użyciu narzędzi Quest.
.NET Remoting Łukasz Zawadzki.
Wzorce projektowe w J2EE
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.
181 JAVA – JSP Java EE training: JAVA SERVER PAGES PODSTAWY.

Zarządzanie stanem aplikacji Mechanizm Sesji
Projektowanie warstwy serwera Programowanie aspektowe.
Projektowanie warstwy serwera Współpraca z XML. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Odwzorowania relacyjno-obiektowe Hibernate Klasy trwałe.
Odwzorowania relacyjno-obiektowe Hibernate zapytania.
Spring MVC.
Projektowanie warstwy serwera DisplayTag. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Projektowanie warstwy serwera Spring MVC - uzupełnienie.
Hibernate relacje.
Spring podstawy.
Projektowanie warstwy serwera Znaczniki jsp. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Hibernate uzupełnienie
Projektowanie warstwy serwera Wprowadzenie. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Serializacja Serializacja pozwala zamienić obiekt na sekwencję bajtów, w sposób umożliwiający później wierne odtworzenie jego zawartości Inna nazwa to.
Wykonawcy:Magdalena Bęczkowska Łukasz Maliszewski Piotr Kwiatek Piotr Litwiniuk Paweł Głębocki.
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
Tworzenie aplikacji mobilnych
PIO 3_2, Zofia Kruczkiewicz1 Wykład 3 – część druga Iteracyjno-rozwojowy cykl oprogramowania 3.
Rozwiązania informatyczne dla przedsiębiorstw
Tworzenie aplikacji mobilnych
SYSTEM REJESTRACJI UŻYTKOWNIKÓW W SERWISIE INTERNETOWYM Bezpieczny i scentralizowany system uwierzytelniania, autoryzacji oraz zarządzania użytkownikami.
Podstawy działania wybranych usług sieciowych
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Seminarium problemowe
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
Zpiratował Rafał Kaczyński. Jest to technologia pozwalająca mapować dane obiektowe na odpowiadające im struktury w bazach danych. Hibernate pozwala na.
-17 Oczekiwania gospodarcze – Europa Wrzesień 2013 Wskaźnik > +20 Wskaźnik 0 a +20 Wskaźnik 0 a -20 Wskaźnik < -20 Unia Europejska ogółem: +6 Wskaźnik.
+21 Oczekiwania gospodarcze – Europa Grudzień 2013 Wskaźnik > +20 Wskaźnik 0 do +20 Wskaźnik 0 do -20 Wskaźnik < -20 Unia Europejska ogółem: +14 Wskaźnik.
Serwery Aplikacji Tworzenie bezpiecznych aplikacji.
OCPJP Inner classes.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Kalendarz 2020.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Serwery Aplikacji Bezpieczeństwo w Aplikacjach.NET uruchamianych pod IIS Arkadiusz Popa, WMiI, UŁ.
Hibernate Podstawy.
Prezentacja przykładowych rozwiązań realizujących autoryzację w serwisie WWW w oparciu o bazę LDAP Jerzy Szymański.
Odwzorowania relacyjno-obiektowe Hibernate preselekcja.
Odwzorowania relacyjno-obiektowe Hibernate Podstawy.
Paweł Starzyk Obiektowe metody projektowania systemów
Wzorce Projektowe w JAVA
Partnerstwo dla Przyszłości 1 Lekcja 27 Klasy i obiekty.
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Zarządzanie stanem w aplikacjach ASP.NET Elżbieta Mrówka-Matejewska
Dr inż. Piotr Czapiewski. Kontrola dostępu – Zend_Auth, Zend_Acl.
Programowanie Obiektowe – Wykład 6
(według:
Programowanie Obiektowe – Wykład 2
Aplikacje i usługi internetowe
Zapis prezentacji:

Projektowanie warstwy serwera Acegi

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 2 Acegi Acegi jest to narzędzie służące zapewnieniu bezpieczeństwa w aplikacjach korporacyjnych. Zapewnia wszechstronne mechanizmy uwierzytelniania i autoryzacji. Działanie Acegi polega na zastosowaniu szeregu filtrów. Dbają one o to aby użytkownik uzyskał dostęp do tych elementów, do których ma prawo.

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 3 Zalety Acegi Open Source Elastyczność Uniwersalność Przezroczystość Oferuje szeroki zakres usług związanych z bezpieczeństwem Nie wymaga ingerencji w logikę biznesowa

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 4 Budowa Głównym obiektem jest SecurityContextHolder przechowujący dane związane z bezpieczeństwem HttpSessionContextIntegrationFilter – dba o to, by SecurityContextHolder był przechowywany miedzy kolejnymi żądaniami HTTP AuthenticationProvider – jego zadaniem jest utworzenie właściwego obiektu Authentication, w przypadku podania przez użytkownika prawidłowych danych uwierzytelniających AccessDecisionManager – zarządza podejmowaniem decyzji, czy zalogowany użytkownik ma prawa do żądanego zasobu AccessDecisionVoter – obiekt wykorzystywany przez AccessDecisionManager do podejmowania decyzji autoryzacyjnych

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 5 Authentication (I) public static String getLogin() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Object obj = authentication.getPrincipal(); if (obj instanceof UserDetails) { UserDetails ud = (UserDetails) obj; return ud.getUsername(); } throw new SecurityException("unknown UserDetails"); }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 6 Authentication (II) public static String[] getRoles() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication == null) throw new ACLSecurityException("user not authenicated"); GrantedAuthority[] ga = authentication.getAuthorities(); ArrayList lista = new ArrayList ();

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 7 Authentication (III) for (int i = 0; i < ga.length; i++) { String s = ga[i].getAuthority(); if (s.startsWith("Role_")) lista.add(s); } return (String[]) lista.toArray(new String[0]); }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 8 Pobieranie zalogowanego użytkownika public Uzytkownik getZalogowanyUzytkownik() { Uzytkownik uzytkownik = uzytkownikDAO.getByLogin( BibliotekaThreadContext.getLogin()); return uzytkownik; }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 9 authz:authorize..... ifAllGranted ifAnyGranted ifNotGranted

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 10 Konfiguracja Acegi Security opiera swe działanie na pewnej grupie filtrów, które dostarczają odpowiednich usług związanych z bezpieczeństwem Filtry należy zdefiniować w pliku web.xml

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 11 Filtry - konfiguracja (I) Acegi Filter Chain Proxy org.acegisecurity.util.FilterToBeanProxy targetBean filterChainProxy

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 12 Filtry - konfiguracja (II) Acegi Filter Chain Proxy /* charsetFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 13 FilterChainProxy <bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy"> /**=httpSessionContextIntegrationFilter,securityContextHolderAwareReque stFilter,anonymousProcessingFilter,formAuthenticationProcessingFilter, authenticationProcessingFilter,exceptionTranslationFilter,filterSecurityInt erceptor,logoutFilter /security/**= httpSessionContextIntegrationFilter,....

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 14 Kolejność filtrów ConcurrentSessionFilter HttpSessionContextIntegrationFilter SecurityContextHolderAwareRequestFilter AnonymousProcessingFilter filtry odpowiedzialne za proces uwierzytelniania ExceptionTranslationFilter ForceChangePassword FilterSecurityInterceptor LogoutFilter

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 15 Konfiguracja filtrów (I) Liczba aktywnych sesji dla jednego użytkownika

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 16 Konfiguracja filtrów (II)

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 17 Konfiguracja filtrów (III) Przechowanie zalogowanego użytkownika w sesji <bean id="httpSessionContextIntegrationFilter" class="org.springframework.security.context. HttpSessionContextIntegrationFilter"> org.springframework.security.context. SecurityContextImpl

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 18 Konfiguracja filtrów (IV) <bean id="securityContextHolderAwareRequestFilter" class="org.acegisecurity.wrapper. SecurityContextHolderAwareRequestFilter" />

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 19 Konfiguracja filtrów (V) Wykrycie nieznanego użytkownika <bean id="anonymousProcessingFilter" class="org.acegisecurity.providers.anonymous. AnonymousProcessingFilter"> <property name="userAttribute" value="anonymousUser,Role_ANONYMOUS" />

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 20 Konfiguracja filtrów (VI) Autentykacja użytkownika <property name="authenticationManager" ref="authenticationManager" /> <property name="authenticationEntryPoint" ref="formLoginAuthenticationEntryPoint" />

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 21 Konfiguracja filtrów (VII) Obsługa wyjątków

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 22 Konfiguracja filtrów (VII)

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 23 Konfiguracja filtrów (VIII) Zabezpieczenie strony...

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 24 Konfiguracja filtrów (IX) /ierror.html=Role_ANONYMOUS,Authenticated_User /logowanie.html=Role_ANONYMOUS,Authenticated_User /aplikacja/**=Authenticated_User /security/**=Role_Admin UWAGA: w URL wyłącznie małe litery

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 25 AccessDecisionManager <bean id="accessDecisionManager" class="org.acegisecurity.vote.AffirmativeBased">

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 26 AuthenticationManager <bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 27 AuthenticationProvider <bean id="XMLAuthenticationProvider class="org.acegisecurity.providers.dao. DaoAuthenticationProvider">

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 28 XMLDetailsProvider admin = admin,admin menu1 = menu1,menu1 menu2 = menu2,menu2 menu3 = menu3,menu3

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 29 AuthenticationProvider (DAO) <bean id="DAOAuthenticationProvider" class="org.springframework.security.providers.dao. DaoAuthenticationProvider">

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 30 DAODetailsProvider (DAO) (I) select distinct rola.nazwa from ACLRola rola inner join inner join rola.uzytkownicy us where us.login = :login

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 31 DAODetailsProvider (DAO) (II) from Uzytkownik u where u.login = :login

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 32 ExampleAuthenticationDao (I) public class MyAuthenticationDao extends HibernateDaoSupport implements UserDetailsService { private String authorities_HQL; private String public UserDetails loadUserByUsername(String userLogin) throws UsernameNotFoundException,DataAccessException

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 33 ExampleAuthenticationDao (II) { List userlist = (List ) getHibernateTemplate().findByNamedParam(login_HQL, "login", userLogin); Uzytkownik user = userlist.get(0); GrantedAuthority[] arrayAuths = getAuthorities(user); UserDetails authUser = new UserDetails(user.getLogin(), user.getHaslo(), user.isCzyAktywne(), expired, true, true, arrayAuths); return authUser; }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 34 EntryPoint <bean id="formLoginAuthenticationEntryPoint" class="org.acegisecurity.ui.webapp. AuthenticationProcessingFilterEntryPoint"> /logowanie.html false

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 35 Konfiguracja filtrów (X) Definicja panelu logowania /logowanie.html

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 36 Konfiguracja filtrów (XI) /logowanie.html

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 37 Login - jsp " method="post"> Login: Hasło: Zaloguj

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 38 LoginFilter public class MyAuthenticationProcessingFilter extends AuthenticationProcessingFilter protected void onSuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response, Authentication authResult) { Object obj = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); //zapisanie danych w bazie lub do loggera super.onSuccessfulAuthentication(request, response, authResult); }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 39 Konfiguracja filtrów (XII) wylogowywania

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 40 LogoutFilter public class MyLogoutFilter implements LogoutHandler public void logout(HttpServletRequest arg0, HttpServletResponse arg1, Authentication arg2) { HttpSession session = arg0.getSession(false); if (session != null) session.invalidate(); }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 41 Logout - jsp ">wyloguj

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 42 passwordEncoder protected String zaszyfrujHaslo(String plainPassword) { return passwordEncoder.encodePassword(plainPassword, null); }

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 43 ApplicationListener public class AutentykacjaListener implements ApplicationListener { private DziennikService public void onApplicationEvent(ApplicationEvent event) { if (event instanceof AuthenticationSuccessEvent) { AuthenticationSuccessEvent e = (AuthenticationSuccessEvent) event; dziennikService.zarejstruj(e.getAuthentication(), e.getTimestamp()); } }}

Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 44 ApplicationListener (konfiguracja) <bean class="commons.security.authentication.event. ApplicationListener">