Rappresentazione e delega client

In alcuni casi, un'applicazione server deve presentare l'identità di un client alle risorse a cui accede per conto del client, in genere per fare in modo che i controlli di accesso o l'autenticazione vengano eseguiti sull'identità del client. In un certo modo, il server può agire in base all'identità del client, ovvero un'azione denominata rappresentazione del client.

La rappresentazione è la possibilità di eseguire un thread in un contesto di sicurezza diverso da quello del processo proprietario del thread. Il thread del server usa un token di accesso che rappresenta le credenziali del client e, con questo, può accedere alle risorse a cui il client può accedere.

L'uso della rappresentazione garantisce che il server possa eseguire esattamente le operazioni che il client può eseguire. L'accesso alle risorse può essere limitato o espanso, a seconda delle operazioni da eseguire dal client.

È possibile scegliere di avere un server che rappresenta un client durante la connessione a un database in modo che il database possa autenticarsi e autorizzare il client stesso. In alternativa, se l'applicazione accede ai file protetti con un descrittore di sicurezza e per consentire al client di ottenere l'accesso autorizzato alle informazioni in questi file, l'applicazione può rappresentare il client prima di accedere ai file.

Come implementare la rappresentazione

La rappresentazione richiede la partecipazione sia dal client che dal server (e, in alcuni casi, dagli amministratori di sistema). Il client deve indicare la disponibilità a consentire al server di usare la propria identità e il server deve presupporre in modo esplicito l'identità del client a livello di codice. Per informazioni dettagliate, vedere gli argomenti Requisiti lato client per la rappresentazione e i requisiti lato server per la rappresentazione.

requisiti Amministrazione istrativi per la rappresentazione a livello di delegato

Per usare in modo efficace la forma più potente di rappresentazione, delega, ovvero la rappresentazione dei client in rete, gli account utente client e server devono essere configurati correttamente nel servizio Active Directory per supportarlo (oltre all'autorità di concessione client per eseguire la rappresentazione a livello di delegato), come indicato di seguito:

  • L'identità del server deve essere contrassegnata come "Attendibile per la delega" nel servizio Active Directory.
  • L'identità client non deve essere contrassegnata come "L'account è sensibile e non può essere delegato" nel servizio Active Directory.

Queste funzionalità di configurazione offrono all'amministratore di dominio un elevato livello di controllo sulla delega, che è auspicabile, data la quantità di attendibilità (e quindi il rischio di sicurezza). Per altri dettagli sulla delega, vedere Delega e rappresentazione.

Cloaking

Insieme all'autorità a cui un client concede un server tramite il livello di rappresentazione, la funzionalità di mantello del server determina in gran parte il comportamento della rappresentazione. Il mantello influisce sull'identità effettivamente presentata dal server quando effettua chiamate per conto del client, ovvero il proprio o il client. Per informazioni dettagliate, vedere Mantello.

Implicazioni sulle prestazioni

La rappresentazione può influire significativamente sulle prestazioni e sul ridimensionamento. In genere è più costoso rappresentare un client in una chiamata piuttosto che effettuare direttamente la chiamata. Di seguito sono riportati alcuni dei problemi da considerare:

  • Il sovraccarico di calcolo del passaggio dell'identità in modelli complessi, in particolare se è abilitato il mantello dinamico.
  • La complessità generale dell'applicazione del controllo della sicurezza ridondante in numerose posizioni, anziché solo centralmente nel livello intermedio.
  • Le risorse, ad esempio le connessioni di database, quando vengono aperte la rappresentazione di un client, non possono essere riutilizzate tra più client, ovvero un ostacolo molto grande per il ridimensionamento corretto.

A volte l'unica soluzione efficace a un problema consiste nell'usare la rappresentazione, ma questa decisione deve essere valutata attentamente. Per altre informazioni su questi problemi, vedere Sicurezza delle applicazioni multilivello.

Componenti in coda

I componenti in coda non supportano la rappresentazione. Quando un client effettua una chiamata a un oggetto in coda, la chiamata viene effettivamente effettuata al registratore, che lo inserisce come parte di un messaggio al server. Il listener legge quindi il messaggio dalla coda e lo passa al lettore, che richiama il componente server effettivo e effettua la stessa chiamata al metodo. Di conseguenza, quando il server riceve la chiamata, il token client originale non è disponibile tramite la rappresentazione. La sicurezza basata sui ruoli si applica comunque e la sicurezza a livello di codice tramite l'interfaccia ISecurityCallContext funzionerà. Per informazioni dettagliate, vedere Sicurezza dei componenti in coda.

Autenticazione client

Sicurezza delle applicazioni della libreria

Sicurezza delle applicazioni multilivello

Sicurezza dei componenti a livello di codice

Amministrazione istration di sicurezza basata sui ruoli

Uso dei criteri di restrizione software in COM+