2015-06-09 16 views
6

Sto utilizzando Active Directory per assegnare i ruoli per gli utenti nella mia applicazione Web. Tuttavia, sto riscontrando che sembra esserci un lungo intervallo di tempo tra la modifica dell'assegnazione di un gruppo di sicurezza utente in AD e quelle modifiche che si propagano agli utenti che utilizzano l'applicazione. Infatti quando recupero i ruoli per un utente in C# da AD sono aggiornati, ma quando eseguo questo codice per visualizzare i ruoli per l'utente, non vengono aggiornati fino al giorno successivo. Come posso rendere gli aggiornamenti dei ruoli utente da AD instant?Intervallo di tempo nelle modifiche ai gruppi di sicurezza di Active Directory e ai ruoli utente

var identity = WindowsIdentity.GetCurrent(); 
var groups = from sid in identity.Groups select sid.Translate(typeof(NTAccount)).Value; 
foreach (var group in groups) 
{ 
    groupName = group; 
} 

risposta

2

Questo accade perché Kerberos informazioni autorizzazione viene memorizzato nella memoria cache del computer locale (Il server app), quindi potrebbe non essere in grado di ottenere NON dati up-to-date.

hai 2 opzioni:

  1. Forza aggiornamento ticket di concessione (TGT) sul server
  2. Usa UserPrincipal.GetAuthorizationGroups per ottenere il vostro gruppo non dal server app, ma da AD.
+0

Ho eseguito una ricerca su Google sull'opzione 1 ma non ho trovato nulla. Devo ammettere che non ho familiarità con TGT – arame3333

+0

opzione 2 potrebbe farmi i gruppi di cui sono un membro, ma come faccio a impostarli sul ruolo in cui dovrei essere? – arame3333

0

Ricordare che il token dell'utente viene aggiornato solo quando si effettua nuovamente l'accesso. AD mostra immediatamente l'utente come membro del gruppo, ma l'utente può esercitare tali diritti solo dopo che il SID del gruppo è nel suo token.

Quindi è necessario controllare l'AD per verificare se l'utente è membro di un gruppo specifico, oppure è necessario attendere fino all'accesso dell'utente dopo che l'assegnazione del gruppo è stata completata e replicata.