vÝvoj podnikovÝch aplikacÍ na platformĚ java - pŘednÁŠka

48
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA Zbyněk Šlajchrt http://java.vse.cz/4it447/HomePage Část 11.

Upload: shakti

Post on 05-Jan-2016

28 views

Category:

Documents


0 download

DESCRIPTION

VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA. Zbyněk Šlajchrt http://java.vse.cz/4it447/HomePage. Část 11. Hrozby v enterprise aplikacích. Podnikové aplikace musí čelit různým bezpečnostním hrozbám Předstírání identity uživatele Prozrazení důvěrných informací - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKAZbyněk Šlajchrt http://java.vse.cz/4it447/HomePageČást 11.

Page 2: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Hrozby v enterprise aplikacích Podnikové aplikace musí čelit různým bezpečnostním hrozbám Předstírání identity uživatele Prozrazení důvěrných informací

Vyzrazení lékařských informací o pacientovi Zlovolná úprava dat

Virus na serveru "upraví" zůstatek na bankovním účtu

Zneužití služeb aplikace Uživateli se podaří vytvořit vyhrávající los

Výpadky v důsledku napadení Hackerské útoky (DoS), viry

2

Page 3: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Bezpečnostní mechanismy

Ověření pravosti (authentication) Proces ověření identity uživatele, který se pokouší přistupovat k prostředkům aplikace

Autorizace (authorization) Následuje po ověření pravosti uživatele Ověřuje se, zda uživatel smí přistupovat k danému prostředku

Ochrana důvěrných dat a jejich integrity Přenášená data je třeba ochránit před neoprávněným "odposlechem" – důvěrnost - či neoprávněnými úpravami - integrita

3

Page 4: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Autentizace ve webovém kontejneru Při přístupu k chráněným prostředkům (statické a dynamické stránky, obrázky, soubory) je třeba zjistit identitu uživatele

Po zjištění identity se ověří, zda daný uživatel má právo k požadované operaci s prostředkem

Webový kontejner podporuje tyto mechanismy HTTP Basic HTTP Digest HTTPS Mutual FORM Based

4

Page 5: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

HTTP Basic5

GET /album

401 UnauthorizedWWW-Authenticate: Basic realm="album"

1.1.

2.2.

Page 6: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

HTTP Basic6

GET /albumAuthorization: Basic c87fba22...

<html> ...</html>

3.3.

4.4.

User: pepaPSW:****

User: pepaPSW:****

jméno a heslo zakódované BASE64

jméno a heslo zakódované BASE64

Page 7: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

HTTP Basic

1. Klient odešle požadavek na stránku /album

2. Server odvětí chybovým kódem 401 Unauthorized a nabídne BASIC autentizaci

3. Prohlížeč otevře dialogové okno, kam uživatel zadá své jméno a heslo. Tyto informace se spojí a zakódují v BASE64. Kód se odešle na server.

4. Pokud je uživatelské jméno a heslo platné, webový kontejner vrátí obsah požadované stránky

7

Page 8: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Nevýhody HTTP Basic

Jelikož HTTP protokol je bez-stavový, autentizační údaje se musí odesílat s každým dotazem

Velmi zranitelný mechanismus. Autentizační údaje putují na server zakódované v BASE64. Dekódovaní je velmi snadné.

Nedoporučuje se bez dodatečného zabezpečení Obvykle v kombinaci s HTTPS (SSL)

ISIS

8

Page 9: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

HTTP Digest

Řeší "viditelnost" přihlašovacích údajů HTTP Basic

Na server se místo hesla odesílá hash z řetězce sestaveného z dat v dotazu (heslo, URL, nonce atd.)

Server v první odpovědi posílá dodatečné parametry, které se použijí pro sestavení hashe hodnota parametru nonce (number used once) je jedinečná a je použita při výpočtu hash kódu

to učiní hash kód neopakovatelným, tudíž případný jeho odposlech je nepoužitelný

Tato metoda není specifikací vyžadována

9

Page 10: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

HTTPS Mutual (CLIENT-CERT) Klient a server si vymění cerifikáty (X.509)

Certifikáty obsahují veřejný klíč a slouží jako osvědčení pravosti identity certifikační autoritou (CA)

Přenos dat probíhá po zabezpečeném kanálu a významně redukuje riziko odposlechu a neoprávněné zásahu do přenášených dat.

Nevýhoda: klient musí mít certifikát

10

Page 11: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Symetrické šifrování

Strany účastnící se komunikace se domluví na šifrovacím klíči

Tento klíč se použije pro zašifrování předávaných zpráv

AES, Blowfish, DES, RC4, FISH ... Výhoda: nízká výpočetní náročnost, RC4 a FISH dokáží šifrovat proudy (ostatní po blocích)

Nevýhoda: náchylné k prolomení

11

Page 12: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Asymetrické šifrování

Každá strana v komunikaci vlastní pár klíčů veřejný a soukromý

Data zakódovaná jedním klíčem lze dekódovat druhým Diskrétní doručení

Odesílatel zašifruje zprávu veřejným klíčem příjemce. Ten ji pak dešifruje použitím svého soukromého klíče.

Elektronický podpis (pečeť) Odesílatel podepíše hash zprávy svým soukromým klíčem a pošle jej se zprávou. Příjemce si ověří autenticitu dešifrováním hashe pomocí veřejného klíče odesílatele a porovnáním s aktuálním hashem doručené zprávy

12

Page 13: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Vlastnosti asymetrické šifry Výhody

Nevyžaduje počáteční výměnu klíče Oproti symetrickým šifrám bezpečnější

Nevýhody Výpočetně náročné (až 100.000x než symetrické)

Prolomitelné brutální silou Šifrování po malých blocích (max. cca 120 bytů pro 1024 bitovou šifru)

Zástupci: RSA, Diffie-Hellman ...

13

Page 14: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Digitální certifikáty Řeší problém: Jakou cestou příjemce získá veřejný klíč odesílatele? Pokud osobně, není problém. Pokud jinak, hrozí, že je klíč podvržený

Řešení: veřejný klíč si jeho vlastník drží v "obálce" zvané bezpečnostní certifikát.

Tato "obálka" je podepsána soukromým klíčem nějaké důvěryhodné instituce – cert. autority (CA)

Pravost veřejného klíče odesílatele se ověří přes veřejný klíč certifikační autority obvykle je součástí webových prohlížečů

14

Page 15: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Secure Socket Layer

Bezpečnostní protokol zaručující důvěrnost a integritu přenosů po Internetu (Netscape)

Obě strany se dohodnou na klíči pro symetrické šifrování přenášených dat – handshake K dohodě se použije veřejný klíč serveru, kterým klient zašifruje náhodně vygenerované číslo, které odešle na server

Dva mody výměny certifikátů server – ověřuje se pouze identita serveru mutual – ověrují se identity server i klienta

15

Page 16: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

SSL – Handshake (server-only mod)

16

Předá seznam podporovaných symetrických šifer

Zvolená šifra a certifikát serveru

1.1.

3.3.

5.5. 2

.2. Výběr šifry

4.4.a. ověření přes CAb. gen. náhod. čísla (základ pro

společný klíč vybrané sym. šifry)c. zašifrování čísla veřejnýmklíčem serveru

Zašifrované náhodné číslo

6.6.

Generování klíčepro komunikaci znáhodného čísla

Page 17: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Činnosti webového kontejneru Vyhledání poptávaného prostředku

kontejner musí zjistit, zda se nejedná o chráněný prostředek

Ověření identity žadatele (autentizace) pokud se jedná o chráněný prostředek, musí zajistit autentizaci žadatele

Autorizace Podařilo-li se ověřit identitu, musí kontejner zjistit, může-li klient přistupovat k požadovanému prostředku

17

Page 18: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Deklarativní řízení bezpečnosti Usnadňuje vývoj tím, že se vývojář nemusí zabývat bezpečnostními hledisky aplikace

Konfigurace je možná bez zásahu do zdrojového kódu

Podporuje komponentové programování – znovu-použitelnost

Jeden servlet lze použít v různých bezpečnostních scénářích

18

Page 19: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Aktivace autentizace

Ve WEB-INF/web.xml

auth-method může nabývat těchto hodnot BASIC DIGEST FORM CLIENT-CERT specifický kód výrobce kontejneru

19

<login-config> <auth-method>BASIC</auth-method></login-config>

Page 20: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Security Realm Termínem realm se označuje místo (registr), kde jsou uloženy informace o uživatelích (jména, hesla, skupiny atd.)

Při autentizaci webový kontejner spolupracuje s realm Na serveru lze definovat více realm, aplikace však pracuje právě s jedním

Lze určit prvkem <realm-name> v <login-config>

Glassfish nabízí např. tyto typy realm File – jednoduché, vhodné pro vývoj LDAP – napojení na LDAP JDBC – informace jsou uloženy v databázi

20

Page 21: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

File realm na Glassfish21

Page 22: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Správa uživatelů ve File realm

22

Page 23: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Definice rolí

V chráněné aplikaci vystupují uživatelé v tzv. rolích

Aplikace udržuje jejich seznam ve web.xml

V případě Glassfish se musí role namapovat v sun-web.xml na skupiny v realm

23

<security-role> <description>Administrátor bankovní aplikace</description> <role-name>bankAdmin</role-name></security-role>

<security-role-mapping> <role-name>bankAdmin</role-name> <group-name>bankAdmin</group-name></security-role-mapping>

Page 24: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Určení chráněných prostředků Při konfiguraci autorizace se neuvažují pouze URL prostředků, ale i HTTP metody, pomocí kterých klient k prostředkům přistupuje (dotazuje se) Omezují se HTTP dotazy, nikoliv prostředky samotné

24

POST /addAccount

GET /index.jsp

GET /accounts/*

Page 25: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Příklad určení chráněných URL

25

Povinný údaj pro potřebydeployment nástrojůPovinný údaj pro potřebydeployment nástrojů

Seznam URL chráněnýchprostředků. Může obsahovat vzor (*)

Seznam URL chráněnýchprostředků. Může obsahovat vzor (*)Seznam HTTP metod, na které se

vztahuje omezení přístupu k uvedeným zdrojům

Seznam HTTP metod, na které sevztahuje omezení přístupu k uvedeným zdrojům

Seznam rolí, které mohou přistupovatk prostředkům pomocí uvedených HTTP metodSeznam rolí, které mohou přistupovatk prostředkům pomocí uvedených HTTP metod

Viz http://java.dzone.com/articles/understanding-web-security

Page 26: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

<web-resource-collection> Sdružuje prostředky a metody přístupu k nim. K této kolekci se pak přiřazují role.

<url-pattern> - používá stejná pravidla jako servlet-mapping pro mapování servletů musí být specifikován aspoň jeden vzor

<http-method> - pokud není uvedena žádná HTTP metoda, je to jakoby byly uvedeny všechny Pozor: pokud jsou uvedeny nějaké HTTP metody, tak zbývající jsou povoleny!

Lze uvést více <web-resource-collection> v rámci jednoho <security-constraint>

26

Page 27: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

<auth-constraint>

1. Specifikuje role, kterým je povoleno dotazovat se na prostředky

2. Pokud NENÍ <auth-constraint> uvedeno, přístup je POVOLEN VŠEM rolím

3. Pokud JE <auth-constraint> uvedeno, ale je prázdné, přístup je ZAKÁZÁN VŠEM rolím

4. <role-name> uvnitř <auth-constraint> POVOLUJE přístup uvedené roli

5. <role-name> může obsahovat *. Pak je přístup POVOLEN VŠEM rolím. Stejné jako 2.

27

Page 28: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Překryv <security-constraint> Jak kontejner řeší situaci, kdy dva <security-constraint> bloky obsahují stejné URL vzory a metody?

28

<auth-constraint> <role-name>Role1</role-name></auth-constraint>

<auth-constraint> <role-name>Role2</role-name></auth-constraint>

<auth-constraint> <role-name>Role1</role-name></auth-constraint>

<auth-constraint> <role-name>*</role-name></auth-constraint>

<auth-constraint/><auth-constraint> <role-name>Role2</role-name></auth-constraint>

NEUVEDENO

<auth-constraint> <role-name>Role2</role-name></auth-constraint>

Role1, Role2

Všechny role

Žádná role

Všechny role

Page 29: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Příklad překrývání omezení přístupu

29

Vzor /* identifikuje všechnyprostředky, tedy i ty, podchycenév horním bloku. V průniku docházíke kupení rolí.

Vzor /* identifikuje všechnyprostředky, tedy i ty, podchycenév horním bloku. V průniku docházíke kupení rolí.

Page 30: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Autentizace pomocí formuláře Umožňuje připravit si vlastní formulář pro přihlašování do aplikace včetně stránky, která se zobrazí po neśpěšném přihlášení.

30

<login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/loginPage.jsp</form-login-page> <form-error-page>/loginError.jsp</form-error-page> </form-login-config></login-config>

Page 31: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Formulář pro přihlášení31

<form action="j_security_check" method="POST"> <input type="text" name="j_username"/> <input type="text" name="j_password"/> <input type="submit" value="Enter"/></form>

•akce formuláře musí být j_security_check•uživatelské jméno je přenášeno v parametru j_username•heslo je přenášeno v parametru j_password

Přihlašovací údaje putují na server nechráněná! Podobně jako v případě BASIC.Řešení: přenos údajů musí probíhat po chráněné transportní vrstvě, např. HTTPS,neboli HTTP nad SSL.

Pozn.:Při použití FORM autentizace musí být aktivní sledování session (např. cookies, SSL)!

Page 32: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Chráněná transportní vrstva Deklarace chráněných prostředků může také obsahovat příkaz, aby kontejner zajistil komunikaci po chráněném kanálu při přenosu dotazu na prostředek serveru i při předávání odpovědi (vlastní data prostředku) zpět na klienta.

Specifikace nevnucuje konkrétní technologii, ale prakticky vždy se jedná o HTTPS (HTTP nad SSL).

32

Page 33: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Aktivace chráněného přenosu Provádí se v <security-constraint> vepsáním tagu <user-data-constraint>

Má tento obsah

Při přístupu k prostředku „vnutí“ kontejner klientovi HTTPS protokol.

Možné hodnoty: CONFIDENTIAL – zamezí odposlechu dat INTEGRAL – zajistí integritu dat, tj. zamezí změně dat cestou

NONE – bez chráněného protokolu

33

<user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee></user-data-constraint>

Page 34: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Příklad konfigurace HTTPS

34

Page 35: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Poznámky k chráněnému přenosu Protokol SSL řeší integritu i důvěrnost

Volba INTEGRAL i CONFIDENTIAL vede prakticky vždy k použití protokolu HTTPS, efekt obou je stejný

35

Page 36: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Automatické přepnutí protokolů

36

1.1.

2.2.

GET /addAccount HTTP

Zjistí, že v <security-constraint> senachází <user-data-constraint> s<transport-guarantee> CONFIDENTIAL

3.3.

301 RedirectLocation: https://...

4.4.

GET /addAccount HTTPS

5.5.Zjistí, že GET /addAccount je

chráněné. Vyžádá si proto autentizaci.

6.6.

401 UnauthorizedWWW-Authenticate:Basic: realm=“bank-app“

7.7.

GET /addAccount HTTPSAuthorization: g67va ...

8.8.

<html>...</html>

Page 37: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Poznámky k důvěrné autentizaci Klient se nikdy nedotazuje na přihlašovací okno

Zobrazení přihlašovacího okna je až důsledek dotázání se na chráněný prostředek

V případě, že přihlašovací údaje mají na server putovat po zabezpečeném spojení, je třeba každý chráněný prostředek opatřit <transport-guarantee>CONFIDENTIAL</transport-guarantee>

37

Page 38: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Odhlašování

Informace o přihlášení je uložena v session

Voláním HttpSession::invalidate() má za následek odhlášení uživatele

Od verze Servlet API 3.0 metoda HttpRequest::logout() resetování security kontextu (principal a jeho role)

metody getUserPrincipal, getRemoteUser, getAuthType vrací null

38

Page 39: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Programové zabezpečení V případech, kdy si nevystačíme s deklarativním zabezpečení aplikace, můžeme použít programové zabezpečení.

Metody v HttpServletRequest login(user, password) – ověří uživatele, vyhazuje výjimku

authenticate(response) – vynutí si autentizaci na kontejneru

logout() – vymaže údaje o uživateli z dotazu getRemoteUser() – jméno přihlášeného uživatele isUserInRole(role) – vrací true, pokud má uživatel danou roli

getUserPrincipal() – vrací java.security.Principal objekt odpovídající vzdálenému uživateli

39

Page 40: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

JAAS

Java Authentication and Authorization Service Implementace: LDAP, MS Active Directory, ...

Používáno kontejnerem pro autentizaci a autorizaci

40

Web Containe

r/ACC

Web Containe

r/ACC

EJB Containe

r

EJB Containe

r

JAASJAAS

AuthenticationSystem

AuthenticationSystem

Přenosověřenéhouživatele

AutentizaceAutorizace

Autorizace

Page 41: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Podpora bezpečnosti v EJB Cílem je řídit přístup k business logice

Autentizace je řízena webovým kontejnerem nebo ACC (application client container, stand-alone app)

Předpokládá se, že do EJB kontejneru přistupuje již ověřený uživatel

Provádí se pouze autorizace Deklarativní Programová

41

Page 42: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Deklarativní bezpečnost v EJB Jako obvykle: anotace nebo ejb-jar.xml

Zahrnuje: Deklarace rolí Přiřazení povolenek metodám nebo celým beanům

Dočasná změna identity

42

Page 43: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Bezpečnostní anotace43

Anotace Bean Metoda

Popis

@PermitAll X X K metodě nebo beanu může přistupovat kterákoliv role.

@DenyAll X X K metodě nebo beanu nemůže přistupovat žádná role.

@RolesAllowed

X X K metodě nebo beanu mohou přistupovat pouze vyjmenované role.

@DeclareRoles

X Deklaruje role pro celou aplikaci.

@RunAs X Dočasně přiřadí specifikovanou roli volajícímu.

Page 44: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Bezpečnostní anotace - příklad

44

1122

33

44

1. K beanu ATMServiceBean mohou přistupovat role admin a banker2. Při zavolání metody se dočasně změní role volajícího na admin3. Metoda withdraw povoluje navíc přístup roli client4. Metoda log na beanu Logger je volána v převlečení za roli admin (viz 2.)

Page 45: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Kombinování anotací

@PermitAll, @DenyAll, and @RolesAllowed nesmí být použity současně na metodě či třídě

V případě kombinování anotací mají přednost anotace na metodě před anotacemi na třídě @PermitAll na třídě, @RolesAllowed nebo @DenyAll na metodě

@DenyAll na třídě, @PermitAll nebo @RolesAllowed na metodě

@RolesAllowed na třídě, @PermitAll nebo @DenyAll na metodě

45

Page 46: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Programová bezpečnost

Používá se v případech, kdy nepostačuje deklarativní zabezpečení

Rozhraní SessionContext isCallerInRole(String role)

vrací true, pokud volající je v uvedené roli

Principal getCallerPrincipal() vrací objekt java.security.Principal, který reprezentuje volajícího

46

Page 47: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Programová bezpečnost - příklad

47

Page 48: VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Zdroje Allen, Paul R. – Bambara, Joseph L.; SCEA Study Guide; McGraw Hill

Head First Servlets/JSP Burke, Bill – Monson-Haefel, Richard; Enterprise Java Beans 3.0; O'Reilly

Goncalves, Antonio; Beginning Java EE 6 Platform With GlassFish 3; APRESS

http://www.javaworld.com/javaworld/jw-09-2004/jw-0927-logout.html

http://sqltech.cl/doc/oas10gR31/web.1013/b28221/servsecr004.htm

48