Java wybrane technologie



Podobne dokumenty
Java Enterprise Edition spotkanie nr 4. Java Server Pages c.d.

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Wykład 3 Inżynieria oprogramowania. Przykład 1 Bezpieczeństwo(2) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Aplikacje www laboratorium

Wykład 4. Metody uwierzytelniania - Bezpieczeństwo (3) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

1. Podstawowe usługi bezpieczeństwa. 2. Użytkownicy i role. przydzielanie uprawnie ń metodom, role komponentów, korzystanie i konfiguracja

Architektura bezpiecznych aplikacji internetowych na platformie Java Enterprise Edition. Jakub Grabowski Warszawa,

11. Autoryzacja użytkowników

Architektury Usług Internetowych. Laboratorium 2 RESTful Web Services

Enterprise JavaBeans

Aplikacje internetowe i rozproszone - laboratorium

Implementacja mechanizmów bezpieczeństwa w aplikacjach webowych z wykorzystaniem Spring Security, Apache Shiro, JBoss Picketlink

HOTSPOT. [ konfiguracja, rejestracja, użytkowanie ]

Modele uwierzytelniania, autoryzacji i kontroli dostępu do systemów komputerowych.

Enterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.

Gatesms.eu Mobilne Rozwiązania dla biznesu

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

Dokumentacja SMS przez FTP

Podstawowe wykorzystanie Hibernate

Silne uwierzytelnianie dla klienta indywidualnego

WebNotarius. Specyfikacja techniczna komunikacji z usługą WebNotarius. wersja 1.1

Bezpieczeństwo frameworków WEBowych Java na przykładzie ataku CSRF

JAX-RS czyli REST w Javie. Adam Kędziora

Komunikator internetowy w C#

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Wprowadzenie do J2EE. Maciej Zakrzewicz.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Podręcznik Integracji

INSTRUKCJA dla Szkolnego Administratora Systemu Antyplagiatowego Plagiat.pl

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

Serwery aplikacji. dr Radosław Matusik. radmat

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

SSL (Secure Socket Layer)

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Łukasz Przywarty Wrocław, r. Grupa: WT/N 11:15-14:00. Sprawozdanie z zajęć laboratoryjnych: OpenSSL - API

i-bank Mobile Banking INSTRUKCJA OBSŁUGI v3

Dodawanie nowego abonenta VOIP na serwerze Platan Libra

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

Dostosowanie środków dostępu użytkowanych w bankowości internetowej. do wymogów silnego uwierzytelniania (SCA)

Kontrola dostępu w ASP.NET

Instrukcja logowania do systemu Rejestru Unii dla nowych użytkowników

Instrukcja konfigurowania poczty Exchange dla klienta pocztowego użytkowanego poza siecią uczelnianą SGH.

Systemy Rozproszone - Ćwiczenie 6

Aplikacje WWW - laboratorium

Wybrane działy Informatyki Stosowanej

Tworzenie i wykorzystanie usług

Usługa TimerService

Java wybrane technologie spotkanie nr 4. Serwlety c.d.

Pomoc dla usługi GMSTHostService. GMSTHostService. Pomoc do programu 1/14

Bezpieczeństwo systemów komputerowych

Testowanie aplikacji Java Servlets

Serwer SSH. Wprowadzenie do serwera SSH Instalacja i konfiguracja Zarządzanie kluczami

Pierwsze kroki w systemie

Wywoływanie metod zdalnych

Aplikacje WWW - laboratorium

Silne uwierzytelnianie dla klienta instytucjonalnego

Instrukcja dla Szkolnego Administratora Systemu Antyplagiatowego Antyściąga.pl

Oracle9iAS: instalacja i konfiguracja aplikacji J2EE

Zdalny dostęp SSL. Przewodnik Klienta

Aplikacja internetowa ebiling

Konfiguracja klienta Lotus Notes R6 z certyfikatami i kluczami na karcie kryptograficznej lub w pliku.

Kancelaria Prawna.WEB - POMOC

Finanse VULCAN. Jednostki dodaje i konfiguruje administrator główny platformy (w aplikacji Zarządzanie platformą).

ZABEZPIECZENIE KOMUNIKACJI Z SYSTEMEM E-PŁATNOŚCI

Przewodnik po konfiguracji Comarch ERP e-sklep z wszystko.pl

KONFIGURACJA WIELOSKŁADNIKOWEGO UWIERZYTELNIANIA

API STRESZCZENIE DOKUMENTACJI TECHNICZNEJ. Strona 1 z 8

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

1 Wprowadzenie do J2EE

API STRESZCZENIE DOKUMENTACJI TECHNICZNEJ. Strona 1 z 8

Obsługa poczty elektronicznej w domenie emeritus.ue.poznan.pl

Baza danych do przechowywania użytkowników

Aplikacja VISO Mobile v1.0 (Android) Instrukcja instalacji i obsługi

MikroTik Serwer OpenVPN

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym WooCommerce (plugin dostępny w wersji ecommerce)

Języki programowania wysokiego poziomu. PHP cz.3. Formularze

Instrukcja logowania do systemu Rejestru Unii dla nowych użytkowników

Sesje i logowanie. 1. Wprowadzenie

Klasy i obiekty cz II

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Logowanie do aplikacji TETA Web. Instrukcja Użytkownika

Zaawansowane aplikacje internetowe

Programowanie komponentowe 5

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

API STRESZCZENIE DOKUMENTACJI TECHNICZNEJ. Strona 1 z 8

ibok Internetowe Biuro Obsługi Klienta

Polityka Prywatności i Cookies

PRACA INŻYNIERSKA IMPLEMENTACJA MOBILNEGO KLIENTA BANKU ZABEZPIECZONEGO TOKENEM

1. Proszę wejść na stronę: poczta.home.pl i zalogować się do nowej skrzynki za pomocą otrzymanych danych.

Krótka instrukcja instalacji

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Problemy z uwierzytelnianiem HTTP

Nr: 12. Tytuł: UDOSTĘPNIANIE DANYCH O SPRAWACH KLIENTOM KANCELARII NA ZEWNĘTRZNYCH SERWERACH WWW. Data modyfikacji:

1. WSTĘP 2 2. BEZPIECZEŃSTWO DOSTĘPU I KOMUNIKACJI 3 3. BEZPIECZEŃSTWO ZLECEŃ 6 4. PROCEDURA AKTYWACJI LOGI SYSTEMOWE DALSZE INFORMACJE 11

Instrukcja instalacji Control Expert 3.0

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1

Transkrypt:

Java wybrane technologie spotkanie nr 14 Bezpieczeństwo

Podstawowe pojęcia uwierzytelniania (authentication) autoryzacja (authorization) atrybuty bezpieczeństwa informacji integralność danych (data integrity) poufność (confidentiality) tylko ktoś autoryzowany ma dostęp do danych, ale na wszelki wypadek podsłuchujący nic nie zrozumieją dostępność (availability) audyt (auditing) złośliwy kod (malicious code) wirusy, robaki, trojany i tylne furtki zaokrąglanie transakcji bankowych co robić z ryzykiem: unikać, ograniczać, zaakceptować, przenieść 2

Mechanizmy uwierzytelniania użytkowników w aplikacjach WWW Mechanizmy uwierzytelniania uż. według specyfikacji Serwletów HTTP Basic authentication HTTP Digest authentication HTTPS Client authentication FORM-based authentication 3

HTTP Basic authentication Mechanizm zdefiniowany w specyfikacji HTTP 1.1 Przeglądarka nie wie, że wymagane jest uwierzytelnianie GET /servlet/testservlet HTTP/1.1 Zamiast zasobu odsyłana jest prośba o uwierzytelnienie HTTP/1.1 401 Unauthorized Server: Tomcat/5.0.25 WWW-Authenticate: Basic realm="sales" Content-Length=500 Content-Type=text/html <html> jakiś komunikat </html> Przeglądarka wyświetla okienko z prośbą o zalogowanie Przeglądarka ponawia żądanie do zasobu, dodając zakodowaną przy pomocy Base64 parę login:hasło GET /servlet/salesservlet HTTP/1.1 Authorization: Basic am9objpqamo= Serwer sprawdza nadesłane wartości i albo odsyła zasób, albo ponawia komunikat 401 4

HTTP Digest authentication HTTP Basic authentication z szyfrowaniem przesyłanego loginu i hasła

HTTPS Client authentication komunikacja HTTP jest przepuszczana przez SSL uwierzytelnianie przeprowadza się po nawiązaniu bezpiecznego połączenia między przeglądarką i serwerem

FORM-based authentication Mechanizm podobny do HTTP Basic authentication, ale zamiast okienka przeglądarki login i hasło pobierane jest z formularze Wymagania względem formularza action="j_security_check" pole j_username pole j_password należy używać metody post

Wady/zalety HTTP Basic authentication łatwy w realizacji niebezpieczne, bo Base64 to nie wspierany przez wszystkie przeglądarki szyfrowanie nie można wpłynąć na wygląd okienka dialogowego HTTP Digest authentication bezpieczniejszy od Basic auth. najbezpieczniejszy wspierany przez wszystkie przeglądarki łatwy w realizacji wspierany przez wszystkie przeglądarki łatwo dopasować wygląd formularza wspierane jedynie przez MS IE 5 nie wymagane przez specyfikacje i wspierane przez niewiele kontenerów HTTPS Client authentication wymaga certyfikatów kosztowna implementacja FORM-based authentication niebezpieczne 8

Deklaratywne zabezpieczanie aplikacji WWW <!-- BASIC DIGEST CLIENT-CERT FORM --> <login-config> <auth-method>basic</auth-method> <realm-name>mim</realm-name> </login-config> <login-config> <!-- BASIC DIGEST CLIENT-CERT FORM --> <auth-method>form</auth-method> <form-login-config> <form-login-page>/login.jsp</> <form-error-page>/error.jsp</ </form-login-config> </login-config>2 <security-role> <description>bla bla bla</description> <role-name>role1</role-name> </security-role> <security-role> <role-name>tomcat</role-name> </security-role> 9

Deklaratywne zabezpieczanie aplikacji WWW c.d. <security-constraint> <web-resource-collection> <web-resource-name>kolekcja1</web-resource-name> <url-pattern>/index.html</url-pattern> <url-pattern>/index.jsp</url-pattern> <http-method>get</http-method> <http-method>post</http-method> <!-- wszystkie pozostałe metody są niezabezpieczone --> <!-- zamiast wymieniać wszystkie metody można nie podać żadnej --> </web-resource-collection> <auth-constraint> <role-name>role1</role-name> <!-- * oznacza wszystkie role wymienione w deskryptorze --> </auth-constraint> <user-data-constraint> <!-- NONE INTEGRAL CONFIDENTIAL --> <transport-guarantee>confidential</transport-guarantee> </user-data-constraint> </security-constraint> 10

Programistyczne zabezpieczanie aplikacji WWW Przydatne metody HttpServletRequest: String getauthtype() null HttpServletRequest.BASIC_AUTH, HttpServletRequest.FORM_AUTH, HttpServletRequest.CLIENT_CERT_AUTH, HttpServletRequest.DIGEST_AUTH java.security.principal getuserprincipal() //w znaczeniu zlecaniodawca String getremoteuser() boolean isuserinrole(string) Wylogowanie użytkownika (tylko dla metody FORM) session.invalidate() 11

Mapowanie ról Ponieważ w podejściu programistycznym nazwy ról są na stałe wpisane w kodzie, żeby skonfigurować aplikację po napisaniu należy zmapować je na rzeczywiste role używane przez kontener <servlet> <security-role-ref> <role-name>alamakota</role-name> <role-link>tomcat</role-link> </security-role-ref> </servlet> 12

Czy nie lepiej wszystko zrobić samemu Opracowywanie nowych algorytmów kryptograficznych, protokołów uwierzytelniania, systemów kontroli dostępu wymaga lat doświadczenia Łatwo coś przeoczyć Dużo kosztownej pracy, z której mało pożytku 13

Nie tylko dobra aplikacja Konfiguracja aplikacji zmiana domyślnych haseł Konfiguracja serwera aplikacji zmiana domyślnych haseł poprawna konfiguracja usług serwera (np. JNDI) Konfiguracja sieci ataki typu man-in-the-middle ataki typu denial-of-service 14

Identity assertion (transitive trust) 15

Autoryzacja w EJB Programistyczna vs Deklaratywna deklaratywnie mamy mniej pracy ale nie da się condition-based-authorization np. zatwierdźzamówienie(wartość < 1000PLN) ale nie da się instance-level-authorization np. tylko operacje na studentach wydziału MIMUW 16

Autoryzacja programistyczna javax.ejb.ejbcontext public boolean iscallerinrole(string rolename); @Stateless public class EmployeeManagementBean { @Resource private SessionContext ctx; } // public void modifyemployee(string employeeid) throws SecurityException { if (!ctx.iscallerinrole("administrators")) { throw new SecurityException(); } else { //jakieś operacje na pracowniku } } public java.security.principal getcallerprincipal(); wiedząc kim jest użytkownik możemy np. korzystać z ustawień, które zapamiętał w swoim profilu 17

Deklarowanie używanych ról @Stateless @DeclareRoles({"administrators"}) public class EmployeeManagementBean { s// } <enterprise-beans> <session> <ejb-name>employeemanagementbean</ejb-name> <!-- Deklarujemy, że ta rola jest używana w kodzie --> <security-role-ref> <description>blah blah blah</description> <role-name>administrators</role-name> </security-role-ref> </session> </enterprise-beans> 18

Mapowanie ról <enterprise-beans> <session> <ejb-name>employeemanagementbean</ejb-name> <security-role-ref> <description>ala ma kota</description> <role-name>administrators</role-name> <role-link>admins</role-link> </security-role-ref> </session> <assembly-descriptor> <security-role> <description>trelemorele</description> <role-name>admins</role-name> </security-role> </assembly-descriptor> </enterprise-beans> 19

Autoryzacja deklaratywna import javax.annotation.security.*; @Stateless //domyślna rola pozwalająca na wykonanie metody @RolesAllowed({"administrators"}) public class EmployeeManagementBean implements EmployeeManagement { //przesłania domyślną rolę @RolesAllowed({"managers"}) public void modifysubordinate() { // } //przesłania domyślną rolę @RolesAllowed({"employees" }) public void modifyself(string name) { // } //brak ograniczeń na wołającego @PermitAll public String getmyname() { // } //obowiązuje domyślna rola public Collection getallemployees() { // } } //nikt nie może wołać tej metody //ma większy sens w deskryptorze @DenyAll public void modify401kplan() { // } // 20

Autoryzacja deklaratywna <assembly-descriptor> <method-permission> <role-name>administrators</role-name> <!--na poziomie beana--> <method> <ejb-name>employeemanagement</ejb-name> <method-name>*</method-name> </method> </method-permission> <method-permission> <role-name>managers</role-name> <!--na poziomie metod--> <method> <ejb-name>employeemanagement</ejb-name> <method-name>modifysubordinate</method-name> </method> <method> <ejb-name>employeemanagement</ejb-name> <method-name>modifyself</method-name> </method> </method-permission> 21

Autoryzacja deklaratywna <method-permission> <role-name>employees</role-name> <!--na poziomie przeciążonych metod--> <method> <ejb-name>employeemanagement</ejb-name> <method-name>modifyself</method-name> <method-params>string</method-params> </method> </method-permission> <!-- jeżeli używamy beana napisanego przez kogoś innego, można zrezygnować z niektórych metody --> <exclude-list> <description>fiu bździu</description> <method> <ejb-name>employeemanagement</ejb-name> <method-name>cośniepotrzebnego</method-name> <method-params>string</method-params> </method> </exclude-list> </assembly-descriptor> 22

Autoryzacja deklaratywna Kontener automatycznie wykonuje sprawdzanie i przy próbie nadużycia zgłasza java.rmi.accessexception Również tu należy zadeklarować używane role @DeclareRoles({"aaa", "bbb", }) <assembly-descriptor> <security-role> <description>aaa</description> <role-name>aaa</role-name> </security-role> <security-role> <description>bbb</description> <role-name>bbb</role-name> </security-role> </assembly-descriptor> 23

Wpływanie na propagację ról @RunAs("admins") @Stateless public class MójKońTrojański { // } <enterprise-beans> <session> <ejb-name>employeemanagement</ejb-name> <security-identity> <run-as> <role-name>admins</role-name> </run-as> </security-identity> </session> <assembly-descriptor> <security-role> <description>służy do</description> <role-name>admins</role-name> </security-role> </assembly-descriptor> </enterprise-beans> 24

JAAS Java Authentication and Authorization Service składnik Java SE (od wersji 1.4) standardowy mechanizm logowania się do systemu bez zwracania uwagi na aktualnie używany mechanizm możliwość konfiguracji bez zmiany kodu klienta możliwość dopasowania do praktycznie każdego systemu bezpieczeństwa, np. użytkownicy i hasła składowane w bazie danych czy LDAP uwierzytelnianie na podstawie certyfikatów integracja z NIS kontrola dostępu na podstawie IP 25

26