2011-07-14 16 views
6

Ho un client WPF che si connette a un servizio WCF e voglio bloccare alcune delle funzionalità in modo che solo alcuni utenti possano eseguire determinate azioni. Il servizio WCF rappresenta l'utente del client durante l'esecuzione dei metodi di servizio. Il sistema operativo è Windows XP.Come posso garantire che IsInRole controlli non stiano utilizzando le credenziali memorizzate nella cache

Stavo leggendo this question come parte della mia indagine sul modo migliore per applicare i ruoli utente alle funzionalità nella mia applicazione (Voglio assegnare utenti ai gruppi di sicurezza AD e quindi controllare IsInRole), e sono preoccupato che le autorizzazioni memorizzate nella cache consentire agli utenti che hanno avuto le loro autorizzazioni ridotte di accedere a funzionalità a cui non hanno più il permesso. Al contrario, sono anche preoccupato che gli utenti a cui sono state aggiornate le autorizzazioni debbano disconnettersi dal loro account Windows, o anche che il servizio WCF possa essere riavviato (scenario peggiore) prima che possano accedere alla nuova funzionalità.

Qual è il modo più semplice per garantire che sia client sia server possano immediatamente visualizzare le modifiche ai gruppi di sicurezza AD?

+0

E 'abbastanza normale che i cambiamenti nella composizione ruolo richiede un po' di tempo per essere propagate (compresi utente nuovo accesso) .Per esempio, se si dispone di primaria e secondaria controller di dominio può anche richiedere molto tempo prima che le modifiche siano sincronizzate e l'utente può ancora ricevere le vecchie autorizzazioni dal controller secondario. –

+0

@Ladislav Mrnka Credo che dovrò vivere con un po 'di ritardo, ma in particolare voglio evitare di usare permessi localmente memorizzati nella cache (sul computer dell'utente). Non ho idea se il servizio WCF farà la propria richiesta di controllare l'appartenenza al ruolo mentre impersona l'utente, o se riceve questi dettagli dal client insieme all'identità. – Franchesca

risposta

2

È sempre possibile implementare il proprio provider di appartenenza che interroga l'annuncio. È abbastanza semplice e sarete sicuri che tutte le valutazioni dei permessi siano accurate, o almeno esattamente come volete che siano.

Se si trova interrogare il server AD su ciascuna valutazione per essere "costoso" sulle prestazioni, è possibile creare la propria cache sul client che è possibile forzare per aggiornare periodicamente o su richiesta. Questa cache può essere semplice come un elenco indicizzato (come un dizionario) di autorizzazioni che è possibile eseguire query abbastanza velocemente.

Ecco un buon articolo su come interagire con AD: http://www.codeproject.com/KB/system/everythingInAD.aspx

+0

ok, questo è un articolo abbastanza completo, grazie! Credo che dovrò provarlo per vedere quanto lente sono le query, ma farlo una volta all'avvio del client è il minimo necessario per collegare il buco di sicurezza che mi preoccupava di più :) – Franchesca

Problemi correlati