Sebbene sia supportato, accade molto raramente che si voglia dare l'acceso ad un singolo utente. Accade molto più spesso, invece, che si voglia darlo a tutti gli utenti che appartengano ad un determinato gruppo. Nel codice presentato è stato dato l'acceso agli utenti che fanno parte del gruppo Administrator della macchina.
La Declarative security non copre tutte le esigenze, perché può capitare che solo alcune parti del codice di un metodo necessitino di una particolare autorizzazione, quindi entra in campo l'Imperative Security.
public string Method(string param){
if (String.IsNullOrEmpty(param)){
using (PrincipalPermission perm = new PrincipalPermission("", Administrator, true)){
perm.Demand();
//code?
}
}
else{
//else code
}
}Analizzando il codice, si vede che il metodo è accessibile a tutti, ma solo al ruolo Administrator è permesso di accedere al codice da eseguire quando il parametro in input è una stringa vuota o nulla.
WCF permette anche di eseguire delle parti di codice nel contesto dell'utente che si è loggato al servizio. Quindi l'accesso alle risorse è legato ai diritti dell'utente sulla macchina. Per fare questo, si può marcare il metodo con l'attributo OperationBehavior impostando l'enumerazione Impersonation a Required o Allowed.
[OperationBehavior(Impersonation=ImpersonationOption.Required)]
public string Method(){
//code
}Imperativamente, si può forzare l'esecuzione del codice sotto Impersonation circondando la parte interessata con un costrutto using che effettua l'Impersonation.
public string Method(){
using (OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Impersonate()) {
//code
}
}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!
