Identitätswechsel

Identitätswechsel ist die Fähigkeit eines Threads, in einem Sicherheitskontext auszuführen, der sich vom Kontext des Prozesses unterscheidet, der den Thread besitzt. Wenn sie im Sicherheitskontext des Clients ausgeführt wird, "ist" der Server bis zu einem gewissen Grad der Client. Der Serverthread verwendet ein Zugriffstoken, das die Anmeldeinformationen des Clients darstellt, um Zugriff auf die Objekte zu erhalten, auf die der Client Zugriff hat.

Der Hauptgrund für einen Identitätswechsel besteht darin, Zugriffsprüfungen für die Identität des Clients zu initiieren. Wird die Identität des Clients für Zugriffsprüfungen verwendet, kann der Zugriff je nach den Berechtigungen des Clients entweder eingeschränkt oder erweitert werden. Angenommen, ein Dateiserver verfügt über Dateien, die vertrauliche Informationen enthalten, und jede dieser Dateien ist durch eine ACL geschützt. Um zu verhindern, dass ein Client nicht autorisierten Zugriff auf Informationen in diesen Dateien erhalten kann, kann der Server die Identität des Clients annehmen, bevor er auf die Dateien zugreift.

Zugriffstoken für Identitätswechsel

Zugriffstoken sind Objekte, die den Sicherheitskontext eines Prozesses oder Threads beschreiben. Sie stellen Informationen bereit, die die Identität eines Benutzerkontos und eine Teilmenge der Berechtigungen umfassen, die dem Benutzerkonto zur Verfügung stehen. Jeder Prozess verfügt über ein primäres Zugriffstoken , das den Sicherheitskontext des dem Prozess zugeordneten Benutzerkontos beschreibt. Standardmäßig verwendet das System das primäre Token, wenn ein Thread des Prozesses mit einem sicherungsfähigen Objekt interagiert. Wenn ein Thread jedoch die Identität eines Clients angibt, verfügt der Identitätswechselthread sowohl über ein primäres Zugriffstoken als auch über ein Identitätswechseltoken. Das Identitätswechseltoken stellt den Sicherheitskontext des Clients dar, und dieses Zugriffstoken wird für Zugriffsprüfungen während des Identitätswechsels verwendet. Wenn der Identitätswechsel beendet ist, wird der Thread nur mithilfe des primären Zugriffstokens wieder verwendet.

Sie können die OpenProcessToken-Funktion verwenden, um ein Handle für das primäre Token eines Prozesses abzurufen. Verwenden Sie die OpenThreadToken-Funktion , um ein Handle für das Identitätswechseltoken eines Threads abzurufen.

Zugriffstoken

Delegierung und Identitätswechsel