Domanda

Qual è il modo migliore per implementare la sicurezza usando i ruoli di active directory su un sito di dati dinamici asp.net?

Vorrei limitare determinate viste (e i relativi collegamenti) a determinati ruoli. ovvero l'utente A può visualizzare solo le azioni dell'elenco per la tabella x e l'utente B può visualizzare solo le azioni dell'elenco per la tabella y

È stato utile?

Soluzione

Altri suggerimenti

L'ho fatto in molte applicazioni.

Abilita l'autenticazione di Windows per l'applicazione.

Crea alcuni oggetti in grado di archiviare le credenziali dell'utente e di archiviare quell'oggetto nella sessione per un rapido recupero. In caso contrario, è possibile ricostruirlo rapidamente. Di solito ogni ruolo è impostato su un po ', ad esempio:


enum USER_ROLE : int
{
  Role1 = 1,
  Role2 = 2,
  Role3 = 4,
  Role4 = 8,
  etc
}

if (Context.User.IsInRole("Roll1Name")) YourUserObject.Roles += USER_ROLE.Role1;
if (Context.User.IsInRole("Roll2Name")) YourUserObject.Roles += USER_ROLE.Role2;
etc

Quindi ogni volta che un controllo deve essere protetto, lo passo in una funzione che accetta un HtmlControl e una proprietà in base al ruolo dell'utente e ai requisiti di sicurezza per quel controllo.

Eg. bool SetControlSecurity (HtmlControl ctrl, int iUserRoles, int iControlRoles, ACTION eAction)

Quindi un esempio per fare un pannello potrebbe essere:

SetControlSecurity (pnlUserInfo, YourUserObject.Roles, eRole.Role2, ACTION.Hide);

Di solito ho anche bisogno di un parametro per il tipo di azione da eseguire in caso di errore di sicurezza come nascondere, in sola lettura, cancellare i dati, ecc ...

Confrontare il ruolo nella funzione è semplice:


bool bHasAccess = ((iUserRole & iControlRoles) > 0);
if (bHasAcess)
{
  // leave the control or make sure it is visible etc
}
else
{
  // take action to secure the control based on the action
}

Spero che sia d'aiuto.

Puoi semplicemente utilizzare il Memebrship di ASP.NET Active Directory & amp; Fornitori di ruoli per autenticare \ autorizzare gli utenti all'applicazione. Quindi puoi chiamare il Roles.IsUserInRole dove mai vuoi controllare per l'appartenenza al ruolo AD verificare che gli utenti facciano parte del gruppo o dei gruppi pertinenti prima di eseguire il rendering dei contenuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top