Clientimitatie (autorisatie)
imitatie is de mogelijkheid van een thread om uit te voeren met behulp van andere beveiligingsgegevens dan het proces dat eigenaar is van de thread. Normaal gesproken imiteert een thread in een servertoepassing een client. Hierdoor kan de serverthread namens die client toegang krijgen tot objecten op de server of de toegang tot de eigen objecten van de client valideren.
De Microsoft Windows-API biedt de volgende functies om een imitatie te starten:
- Een DDE-servertoepassing kan de DdeImpersonateClient- functie aanroepen om een client te imiteren.
- Een named-pipe-server kan de functie ImpersonateNamedPipeClient aanroepen.
- U kunt de functie ImpersonateLoggedOnUser aanroepen om de beveiligingscontext van het toegangstoken van een aangemelde gebruikerte imiteren.
- Met de functie ImpersonateSelf kan een thread een kopie van een eigen toegangstoken genereren. Dit is handig wanneer een toepassing de beveiligingscontext van één thread moet wijzigen. Soms hoeft slechts één thread van een proces bijvoorbeeld een bevoegdheid in te schakelen.
- U kunt de functie SetThreadToken aanroepen om ervoor te zorgen dat de doelthread wordt uitgevoerd in de beveiligingscontext van een opgegeven imitatietoken.
- Een RPC-servertoepassing (Remote Procedure Call) van Microsoft kan de RpcImpersonateClient- functie aanroepen om een client te imiteren.
- Een beveiligingspakket of toepassingsserver kan de functie ImpersonateSecurityContext aanroepen om een client te imiteren.
Voor de meeste van deze imitaties kan de imitatiethread terugkeren naar een eigen beveiligingscontext door de functie RevertToSelf aan te roepen. De uitzondering is de RPC-imitatie, waarin de RPC-servertoepassing RpcRevertToSelf of RpcRevertToSelfEx- aanroept om terug te keren naar een eigen beveiligingscontext.
Opmerking: als u een gebruiker van een Win32-service imiteert en u API's aanroept die afhankelijk zijn van omgevingsvariabelen van gebruikers, moet u mogelijk RegDisablePredefinedCache aanroepen voordat u de imitatie uitvoert.