Freigeben über


Delegierung und Identitätswechsel

In Client-/Serverszenarien ist es üblich, dass ein Server einen anderen Server aufruft, um eine Aufgabe im Namen eines Clients auszuführen. Die Situation, in der ein Server die Berechtigung erhält, im Namen eines Clients zu handeln, wird als Delegierung bezeichnet.

Aus Sicherheitssicht ergeben sich zwei Probleme in Bezug auf die Delegierung:

  • Was sollte der Server tun, wenn er im Auftrag des Clients handelt?
  • Welche Identität wird vom Server angezeigt, wenn er andere Server im Namen eines Clients aufruft?

Um diese Probleme zu beheben, stellt COM die folgenden Funktionen bereit. Der Client kann eine Identitätswechselebene festlegen, die bestimmt, in welchem Umfang der Server als Client fungieren kann. Wenn der Client dem Server genügend Autorität erteilt, kann der Server die Identität des Clients annehmen (so tun, als wäre er es). Beim Annehmen der Identität des Clients erhält der Server nur Zugriff auf die Objekte oder Ressourcen, für die der Client über die Berechtigung verfügt. Der Server, der als Client fungiert, kann auch das Cloaking ermöglichen, um seine eigene Identität zu maskieren und die Identität des Clients in Aufrufen anderer COM-Komponenten zu projizieren.

Diagramm, das zeigt, wie der Server als Client das Klonen aktivieren kann.

Betrachten Sie das in der vorherigen Abbildung dargestellte Szenario, in dem A und B Prozesse auf einem anderen Computer als C sind. Prozess A ruft B auf, und B ruft C auf. Client A legt die Identitätswechselebene fest. B legt die Ummantelungsfunktion fest. Wenn A eine Identitätswechselebene festlegt, die den Identitätswechsel zulässt, kann B die Identität A annehmen, wenn C im Namen von A aufgerufen wird. Die Identität, die für den Prozess C angezeigt wird, ist entweder die Identität von A oder die Identität von B, je nachdem, ob das Cloaking von B aktiviert wurde. Wenn das Cloaking aktiviert ist, ist die Identität, die für Prozess C angezeigt wird, die Identität von A. Wenn das Klonen nicht aktiviert ist, wird die Identität von B C angezeigt.

Weitere Informationen finden Sie in den folgenden Themen: