Sicurezza dei componenti in coda

Quando un client effettua una chiamata al metodo 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 il messaggio dalla coda e lo passa al lettore. Il lettore richiama il componente server effettivo e effettua la stessa chiamata al metodo. Il componente server deve osservare il contesto delle chiamate di sicurezza del client (non il contesto della chiamata di sicurezza del giocatore) quando il giocatore effettua la chiamata al metodo. Il registratore effettua il marshalling del contesto delle chiamate di sicurezza del client nel messaggio e il lettore lo annulla nel server prima di effettuare la chiamata al metodo. Per quanto riguarda l'oggetto server, non esiste alcuna differenza nel contesto di sicurezza tra una chiamata diretta dal client e una chiamata indiretta dal giocatore. In particolare, i metodi richiamati vengono eseguiti con i privilegi del mittente.

Un componente in coda COM+ supporta la semantica di sicurezza basata sui ruoli esattamente come gli altri componenti creati per l'uso con applicazioni COM+. I componenti di un'applicazione in coda possono quindi usare interfacce a livello di codice per individuare l'appartenenza al ruolo del chiamante (ISecurityCallContext::IsCallerInRole) o un utente specifico (ISecurityCallContext::IsUserInRole). È consigliabile che qualsiasi componente in coda con un potenziale impatto sulla sicurezza usi queste interfacce per controllare in modo esplicito le credenziali del mittente.

L'identità del chiamante è l'identità associata a una chiamata al metodo. L'identità chiamante viene usata dalla sicurezza basata sui ruoli ed è presente nel contesto delle chiamate di sicurezza. Nei componenti in coda, l'identità del chiamante viene rappresentata come dati nel messaggio di accodamento messaggi. Accodamento messaggi autentica l'identità del mittente del messaggio. Quando l'identità del chiamante e l'identità del mittente del messaggio sono uguali, Accodamento messaggi autentica sia il messaggio che il chiamante. Questo è il caso consueto.

Nota

I componenti in coda COM+ non supportano la sicurezza in stile rappresentazione, che consente a un server di ottenere un token di accesso corrispondente all'identità client e di usarlo per eseguire controlli di controllo di accesso o per agire nel contesto di sicurezza client.

 

Quando il chiamante di un componente in coda interagisce con il componente tramite un registratore out-of-process, le identità del chiamante e del mittente del messaggio (registratore) possono essere diverse. In questo caso, i componenti in coda COM+ verificano che il mittente del messaggio sia membro del ruolo Utente attendibile QC nel server. Inoltre, il registratore out-of-process richiede un certificato di autenticazione perché viene autenticato da Accodamento messaggi.

I membri del ruolo Utente attendibile QC possono specificare un'identità arbitraria, il che significa che un membro malintenzionato potrebbe eseguire una chiamata di componente in coda con privilegi elevati. È quindi consigliabile che il numero di tali utenti venga mantenuto al minimo.

A causa del rischio di un attacco sofisticato associato a qualsiasi meccanismo che propaga l'identità in una rete, nonché il rischio di un semplice attacco Denial of Service inondando le code con richieste non eseguibili, è consigliabile distribuire il servizio componenti in coda COM+ solo in una rete di host attendibili, ad esempio in una rete privata o in una rete privata virtuale o dietro un firewall configurato in modo appropriato.

I componenti in coda COM+ vengono eseguiti su DCOM, quindi è possibile proteggere l'integrità e la segretezza delle chiamate ai metodi in coda selezionando Privacy dei pacchetti come impostazione Livello di autenticazione delle chiamate nella scheda Sicurezza del foglio Proprietà dell'applicazione in coda.

Sicurezza COM+

Limitazioni di sicurezza in modalità gruppo di lavoro

Specifica del protocollo di autenticazione