Klientpersonifiering (auktorisering)
Personifiering är möjligheten för en tråd att köras med annan säkerhetsinformation än den process som äger tråden. Vanligtvis personifierar en tråd i ett serverprogram en klient. På så sätt kan servertråden agera för klientens räkning för att komma åt objekt på servern eller verifiera åtkomsten till klientens egna objekt.
Microsoft Windows-API:et tillhandahåller följande funktioner för att påbörja en personifiering:
- Ett DDE-serverprogram kan anropa funktionen DdeImpersonateClient för att personifiera en klient.
- En namngiven pipe-server kan anropa funktionen ImpersonateNamedPipeClient.
- Du kan anropa funktionen ImpersonateLoggedOnUser för att personifiera säkerhetskontexten för en inloggad användares åtkomsttoken.
- Funktionen ImpersonateSelf gör att en tråd kan generera en kopia av sin egen åtkomsttoken. Detta är användbart när ett program behöver ändra säkerhetskontexten för en enda tråd. Ibland behöver till exempel bara en tråd i en process aktivera en behörighet.
- Du kan anropa funktionen SetThreadToken så att måltråden körs i säkerhetskontexten för en angiven personifieringstoken.
- Ett RPC-serverprogram (Microsoft Remote Procedure Call) kan anropa funktionen RpcImpersonateClient för att personifiera en klient.
- Ett säkerhetspaket eller programservern kan anropa funktionen ImpersonateSecurityContext för att personifiera en klient.
För de flesta av dessa personifieringar kan personifieringstråden återgå till sin egen säkerhetskontext genom att anropa funktionen RevertToSelf. Undantaget är RPC-personifieringen, där RPC-serverprogrammet anropar RpcRevertToSelf eller RpcRevertToSelfEx för att återgå till sin egen säkerhetskontext.
Obs! Om du personifierar en användare från en Win32-tjänst och du anropar API:er som är beroende av användarmiljövariabler kan du behöva anropa RegDisablePredefinedCache innan du utför personifieringen.