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 ...
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