15.06.2013 Views

Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...

Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...

Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Carnielli Efrem: Programmazione a componenti<br />

Applicazioni Client-Server e database<br />

Lo sviluppatore della logica applicativa non deve considerare il contesto utente <strong>in</strong><br />

maniera <strong>di</strong>retta ossia non deve fare:<br />

if if (uten (utente.ruolo()==”segretario”)<br />

(uten te.ruolo()==”segretario”)<br />

perchè lo sviluppatore applicativo non deve conoscere che ruolo ha l’utente nel<br />

momento <strong>in</strong> cui questo fa la logon, per due motivi:<br />

1. Non è lo sviluppatore che conosce ruoli e casi d’uso <strong>di</strong> un utente, ma<br />

deve saperlo lo sviluppatore della sicurezza applicativa<br />

2. Dal punto <strong>di</strong> vista del co<strong>di</strong>ce questo deve essere il più possibile<br />

parametrico<br />

Questo significa che non devo scrivere co<strong>di</strong>ce <strong>di</strong> questo tipo:<br />

if if if (utente.ruolo()==”segretario”)<br />

(utente.ruolo()==”segretario”)<br />

h(..)<br />

h(..)<br />

E cioè chiamare la funzione h se quel particolare utente può farlo, occupandomi<br />

del controllo.<br />

Devo <strong>in</strong>vece sostituirlo con co<strong>di</strong>ce <strong>di</strong> questo tipo:<br />

if if canInvoke(‘h’)<br />

canInvoke(‘h’)<br />

h(..) h(..)<br />

Il significato è lo stesso, cioè l’utente <strong>in</strong>voca la funzione h se ha i requisiti per farlo,<br />

tuttavia io non so se l’utente lo può fare o no poiché il controllo è relegato alla<br />

canInvoke.<br />

Ciò che si vuole esprimere è che devo separare il compito dello sviluppatore da<br />

quello della logica applicativa, <strong>di</strong>st<strong>in</strong>guendo e separando le responsabilità.<br />

Altro <strong>di</strong>scorso è capire come viene implementata la canInvoke.<br />

if if security.canInvoke(‘h’)<br />

security.canInvoke(‘h’)<br />

h(..)<br />

Solo per <strong>in</strong><strong>di</strong>care che chi sviluppa la canInvoke sarà strettamente connesso alla<br />

sicurezza applicativa.<br />

Ciò significa che per implementare la canInvoke ho bisogno <strong>di</strong> meccanismi per<br />

def<strong>in</strong>ire la sicurezza.<br />

6.9.4 Garantire: sicurezza <strong>di</strong> primo livello: EJB Enable<br />

java beam<br />

Per sviluppare funzioni per il controllo della sicurezza come la canInvoke, <strong>in</strong> J2EE<br />

154

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!