Access Control
Una volta sicuri che il messaggio è intatto, privato e che l'utente che l'ha inviato è autenticato sul sistema, si passa alla fase in cui bisogna stabilire se l'utente ha la possibilità di effettuare le operazioni per le quali ha inviato il messaggio. In altre parole, bisogna controllare che l'utente abbia accesso alle risorse necessarie ad evadere la sua richiesta.
Questo processo è nelle mani dello sviluppatore, ma WCF mette a disposizione diversi meccanismi per facilitarne la creazione. Innanzi tutto WCF utilizza quelli che vengono chiamati Gates per controllare l'accesso. I Gates, in realtà, sono un'estensione delle feature di sicurezza che sono già disponibili nel .NET Framework da diverso tempo ovvero la Declarative Security (sicurezza attraverso attributi) e l'Imperative Security (sicurezza direttamente da codice). In più, si può impostare un Gate a livello di host controllando anche l'accesso all'url o al file che esegue il servizio. I Gates non sono, ovviamente, esclusivi e si possono tranquillamente combinare tra di loro ed avere, di conseguenza, metodi con alcuni attributi di sicurezza e anche codice per ulteriori controlli.
Quindi, ricapitolando, ci sono 3 livelli di Gate: il primo è a livello di servizio, una volta avuto l'accesso al servizio, il secondo è l'accesso al metodo invocato che viene protetto tramite DeclarativeSecuriy (utilizzando l'attributo PrincipalPermission), e l'ultimo è l'accesso ad alcune parti del codice protetto tramite Imperative security.

Un'ultima nota sui Gates: quando ci si trova alla frontiera con un paese della comunità europea, si può entrare nel nuovo paese solo se muniti di Carta di Identità o Passaporto. Nello stesso modo, quando si arriva ad un Gate, il servizio sfrutterà le credenziali del client, cioè i Claims, per verificare se è autorizzato o meno.
[PrincipalPermission(SecurityAction.Demand, Name="Domain\\UserName")]
public string Method(){
return "Hello UserName";
}In questo snippet, viene mostrato come utilizzare l'attributo PrincipalPermission per proteggere, in maniera dichiarativa, un metodo esposto dal servizio. In particolare viene dato il permesso di accedere al metodo soltanto all'utente UserName
[PrincipalPermission(SecurityAction.Demand, Role="Builtin\\Adminstrator")]
public string Method(){
return "Hello Administrator";
}Contenuti dell'articolo
- Pagina 1
- Pagina 4
- Pagina 6
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Difficoltà
Utilità

Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
