Clientidentitätswechsel

Der Identitätswechsel ist in einer verteilten Computingumgebung nützlich, wenn Server Clientanforderungen an andere Serverprozesse oder an das Betriebssystem übergeben müssen. In diesem Fall gibt ein Server die Identität des Sicherheitskontexts des Clients an. Andere Serverprozesse können die Anforderung dann so verarbeiten, als ob sie vom ursprünglichen Client durchgeführt wurde.

Der Server gibt bei nachfolgenden Aufrufen im Namen des Clients die Identität eines aufrufenden Clients an.

Beispielsweise sendet ein Client eine Anforderung an Server A. Wenn Server A Server B abfragen muss, um die Anforderung abzuschließen, übernimmt Server A die Identität des Clientsicherheitskontexts und sendet die Anforderung im Namen des Clients an Server B. Server B verwendet den Sicherheitskontext des ursprünglichen Clients anstelle der Sicherheitsidentität für Server A, um zu bestimmen, ob die Aufgabe abgeschlossen werden soll.

Der Server ruft RpcImpersonateClient auf, um die Sicherheit für den Serverthread mit dem Clientsicherheitskontext zu überschreiben. Nach Abschluss der Aufgabe ruft der Server RpcRevertToSelf oder RpcRevertToSelfEx auf, um den für den Serverthread definierten Sicherheitskontext wiederherzustellen.

Bei der Bindung kann der Client Quality-of-Service-Informationen zur Sicherheit angeben, die angeben, wie der Server die Identität des Clients annehmen kann. Mit einer der Einstellungen kann der Client beispielsweise angeben, dass der Server die Identität nicht annehmen darf. Weitere Informationen finden Sie unter Servicequalität.

Die Funktion zum Aufrufen anderer Server beim Annehmen der Identität des ursprünglichen Clients wird als Delegierung bezeichnet. Wenn die Delegierung verwendet wird, kann ein Server, der die Identität eines Clients angibt, einen anderen Server aufrufen und Netzwerkaufrufe mit den Anmeldeinformationen des Clients tätigen. Das heißt, aus der Perspektive des zweiten Servers sind Anforderungen, die vom ersten Server stammen, nicht von Anforderungen vom Client zu unterscheiden. Nicht alle Sicherheitsanbieter unterstützen die Delegierung. Microsoft liefert nur einen Sicherheitsanbieter, der die Delegierung unterstützt: Kerberos.

Die Delegierung kann aufgrund der Berechtigungen, die der Client dem Server während eines Remoteprozeduraufrufs gewährt, eine gefährliche Funktion sein. Aus diesem Grund lässt Kerberos Aufrufe mit der Identitätswechselebene der Delegierung nur zu, wenn eine gegenseitige Authentifizierung angefordert wird. Domänenadministratoren können die Computer einschränken, auf die Aufrufe mit Delegierungswechselebene erfolgen, um zu verhindern, dass ahnungslose Clients Server aufrufen, die ihre Anmeldeinformationen missbrauchen könnten.

Eine Ausnahme von der Delegierungsregel ist vorhanden: Aufrufe mit ncalrpc. Wenn diese Aufrufe durchgeführt werden, erhält der Server Delegierungsrechte, auch wenn eine Identitätswechselebene angegeben ist. Das heißt, ein Server kann andere Server im Namen des Clients aufrufen. Dies funktioniert nur für einen Remoteanruf. Wenn Client A beispielsweise den lokalen Server LB mit ncalrpc aufruft, kann der lokale Server lb die Identität annehmen und remote server RB aufrufen. RB kann im Namen von Client A handeln, aber nur auf dem Remotecomputer, auf dem RB ausgeführt wird. Es kann keinen weiteren Netzwerkaufruf an Remotecomputer C durchführen, es sei denn, LB hat beim Aufrufen von RB eine Identitätswechselebene des Delegaten angegeben.

Hinweis

Der Begriff Identitätswechsel stellt zwei sich überlappende Bedeutungen dar. Die erste Bedeutung des Identitätswechsels ist der allgemeine Prozess des Handelns im Namen eines Clients. Die zweite Bedeutung ist die spezifische Identitätswechselebene, die als Identitätswechsel bezeichnet wird. Der Kontext des Textes verdeutlicht im Allgemeinen die Bedeutung.