Delega e rappresentazione
Negli scenari client/server, è comune che un server chiami un altro server per eseguire alcune attività per conto di un client. La situazione in cui a un server viene assegnata l'autorità di agire per conto di un client è detta delega.
Dal punto di vista della sicurezza, si verificano due problemi relativi alla delega:
- Cosa deve fare il server quando agisce per conto del client?
- Quale identità viene presentata dal server quando chiama altri server per conto di un client?
Per risolvere questi problemi, COM offre le funzionalità seguenti. Il client può impostare un livello di rappresentazione che determina in quale misura il server sarà in grado di agire come client. Se il client concede un'autorità sufficiente al server, il server può rappresentare (fingere di essere) il client. Quando si rappresenta il client, al server viene concesso l'accesso solo a tali oggetti o risorse che il client dispone dell'autorizzazione per l'utilizzo. Il server, che funge da client, può anche consentire al mantello di mascherare la propria identità e proiettare l'identità del client nelle chiamate ad altri componenti COM.
Si consideri lo scenario illustrato nella figura precedente, in cui A e B sono processi in un computer diverso da C. Processo A chiama B e B chiama C. Il client A imposta il livello di rappresentazione. B imposta la funzionalità di mantello. Se A imposta un livello di rappresentazione che consente la rappresentazione, B può rappresentare A quando si chiama C per conto di A. L'identità presentata per elaborare C sarà l'identità di A o L'identità di B, a seconda che il mantello sia stato abilitato da B. Se il mantello è abilitato, l'identità presentata al processo C sarà quella di A. Se il mantello non è abilitato, l'identità di B verrà presentata a C.
Per ulteriori informazioni, vedi gli argomenti seguenti: