Che cosa si intende per impostazione Unrestricted = false su PrincipalPermission?

1

Sto facendo un po 'di manutenzione su un'applicazione ASP.net di moduli web di 10 anni. Ha un livello aziendale che ha i suoi metodi protetti da System.Security.Permissions.PrincipalPermissionAttribute , come questo:

[PrincipalPermission(SecurityAction.Demand, Authenticated = true, Role = "2,3", Unrestricted = true)]
public void Foo(int bar)

Sono usati un oggetto IIdentity e un IPrincipal personalizzati. Il principale personalizzato implementa bool IsInRole(string role) e interpreta il parametro di ruolo come elenco di ruoli separati da virgola da controllare.

Presumo che una volta tutto funzioni correttamente, ma, al momento, il metodo IsInRole non viene mai chiamato.

Naturalmente, la mia attenzione è stata rivolta alla proprietà senza limiti . La documentazione MSDN non chiarisce molto . Ho appena provato con unrestricted = false ed ecco, la convalida è partita per vivere.

Per quanto posso rintracciare il codice, il parametro senza restrizioni è sempre stato trasmesso come true. Quindi, sto esitando a cambiare tutto questo in falso ovunque.

Questa proprietà ha davvero l'effetto di dire:

"Hey, I am declaring permissions here, but actually, never mind and just go ahead."

O è qualcosa di più sottile?

    
posta R. Schreurs 14.03.2017 - 18:59
fonte

1 risposta

1

Non è più sottile.

Impostare Unrestricted = true significa che corrisponderà a qualsiasi principale, quindi impostare le proprietà Authenticated e Role è inutile, perché una volta che il framework vede Unrestricted = true , imposterà sempre Authenticated = true e Role = null e la domanda avrà sempre successo, indipendentemente dal principale.

Quindi, mi sembra che impostarlo su false (o semplicemente rimuoverlo completamente dall'attributo) è davvero probabile ciò che si vuole fare.

    
risposta data 14.03.2017 - 21:04
fonte

Leggi altre domande sui tag