Metodo IServerSecurity::ImpersonateClient (objidlbase.h)
Consente a un server di rappresentare un client per la durata di una chiamata.
Sintassi
HRESULT ImpersonateClient();
Valore restituito
Se il metodo ha esito positivo, il valore restituito è S_OK. In caso contrario, è E_FAIL.
Commenti
In genere, un metodo viene eseguito in un thread che usa il token di accesso del processo. Tuttavia, quando si rappresenta un client, il server viene eseguito nel contesto di sicurezza del client in modo che il server abbia accesso alle risorse a cui il client ha accesso. Quando è necessaria la rappresentazione, il server chiama il metodo ImpersonateClient per causare l'assegnazione di un token di accesso che rappresenta le credenziali del client al thread corrente. Questo token di thread viene usato per i controlli di accesso. RevertToSelf ripristina il token di accesso del thread corrente.
Ciò che il server può eseguire per conto del client dipende dal livello di rappresentazione impostato dal client, specificato usando una delle costanti del livello di rappresentazione. Il server può rappresentare il client in una chiamata crittografata a livello di identificazione, rappresentazione o delegato. Per informazioni su questi livelli di rappresentazione, vedere Livelli di rappresentazione.
L'identità presentata a un server chiamato durante la rappresentazione dipende dal tipo di valore di mascheramento, se presente, impostato dal client. Per altre informazioni, vedere Mantello.
Alla fine di ogni chiamata al metodo, COM chiamerà RevertToSelf se l'applicazione non viene eseguita.
Tradizionalmente, le informazioni di rappresentazione non sono annidate: l'ultima chiamata a qualsiasi meccanismo di rappresentazione sostituisce qualsiasi rappresentazione precedente. Tuttavia, nel modello di appartamento la rappresentazione viene mantenuta durante le chiamate annidate. Pertanto, se il server A riceve una chiamata da B, rappresentazioni, chiamate C, riceve una chiamata da D, rappresenta, ripristina e riceve la risposta da C, il token di rappresentazione verrà impostato su B, non A.
Per informazioni sull'uso della rappresentazione con chiamate asincrone, vedere Rappresentazione e chiamate asincrone.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | objidlbase.h (include ObjIdl.h) |