Delen via


Clientimitatie

Imitatie is handig in een gedistribueerde computeromgeving wanneer servers clientaanvragen moeten doorgeven aan andere serverprocessen of aan het besturingssysteem. In dit geval imiteert een server de beveiligingscontext van de client. Andere serverprocessen kunnen vervolgens de aanvraag verwerken alsof de oorspronkelijke client deze heeft gemaakt.

server imiteert een aanroepende client bij het plaatsen van volgende aanroepen namens de client

Een client doet bijvoorbeeld een aanvraag naar Server A. Als Server A een query moet uitvoeren op Server B om de aanvraag te voltooien, imiteert Server A de clientbeveiligingscontext en doet de aanvraag namens de client naar Server B. Server B gebruikt de beveiligingscontext van de oorspronkelijke client in plaats van de beveiligingsidentiteit voor Server A om te bepalen of de taak moet worden voltooid.

De server roept RpcImpersonateClient aan om de beveiliging voor de serverthread te overschrijven met de clientbeveiligingscontext. Nadat de taak is voltooid, roept de server RpcRevertToSelf of RpcRevertToSelfEx aan om de beveiligingscontext te herstellen die is gedefinieerd voor de serverthread.

Bij binding kan de client kwaliteitsinformatie over beveiliging opgeven die aangeeft hoe de server de client kan imiteren. Met een van de instellingen kan de client bijvoorbeeld opgeven dat de server deze niet mag imiteren. Zie Quality of Servicevoor meer informatie.

De mogelijkheid om andere servers aan te roepen tijdens het imiteren van de oorspronkelijke client wordt delegeringgenoemd. Wanneer delegatie wordt gebruikt, kan een server die een client imiteert een andere server aanroepen en netwerkoproepen uitvoeren met de referenties van de client. Dat wil gezegd, vanuit het perspectief van de tweede server, zijn aanvragen die afkomstig zijn van de eerste server niet te onderscheiden van aanvragen die afkomstig zijn van de client. Niet alle beveiligingsproviders ondersteunen delegatie. Microsoft verzendt slechts één beveiligingsprovider die delegatie ondersteunt: Kerberos.

Delegering kan een gevaarlijke mogelijkheid zijn vanwege de bevoegdheden die de client de server tijdens een externe procedure-aanroep geeft. Daarom staat Kerberos oproepen met het imitatieniveau van delegering alleen toe als wederzijdse verificatie wordt aangevraagd. Domeinbeheerders kunnen de computers beperken waarop aanroepen met delegeringsimitatieniveau worden uitgevoerd om te voorkomen dat nietsvermoedende clients aanroepen naar servers die misbruik kunnen maken van hun referenties.

Er bestaat één uitzondering op de delegeringsregel: aanroepen met ncalrpc-. Wanneer deze aanroepen worden gedaan, krijgt de server overdrachtsrechten, zelfs als er een imitatieniveau van imitatie is opgegeven. Dat wil gezegd, een server kan andere servers aanroepen namens de client. Dit werkt alleen voor één externe aanroep. Als client A bijvoorbeeld lokale server LB aanroept met behulp van ncalrpc lokale server LB kan imiteren en aanroepen externe server RB. RB kan namens client A handelen, maar alleen op de externe computer waarop RB wordt uitgevoerd. Er kan geen andere netwerkaanroep worden gedaan naar externe computer C, tenzij LB een imitatieniveau van gemachtigde heeft opgegeven bij het aanroepen van RB.

Notitie

De term imitatie vertegenwoordigt twee overlappende betekenissen. De eerste betekenis van imitatie is het algemene proces van handelen namens een cliënt. De tweede betekenis is het specifieke imitatieniveau genaamd imitatie. De context van de tekst verduidelijkt in het algemeen de betekenis.