Identitätswechsel
Identitätswechsel ist die Fähigkeit eines Threads, in einem Sicherheitskontext ausgeführt zu werden, der sich vom Kontext des Prozesses, der den Thread besitzt, abwechselt. Bei der Ausführung im Sicherheitskontext des Clients 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 wird durch eine ACL geschützt. Um zu verhindern, dass ein Client nicht autorisierten Zugriff auf Informationen in diesen Dateien erhält, kann der Server die Identität des Clients vor dem Zugriff auf die Dateien imitieren.
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 Für das Benutzerkonto verfügbaren Berechtigungen enthalten. Jeder Prozess verfügt über ein primäres Zugriffstoken, das den Sicherheitskontext des Benutzerkontos beschreibt, das dem Prozess zugeordnet ist. Standardmäßig verwendet das System das primäre Token, wenn ein Thread des Prozesses mit einem sicherungsfähigem Objekt interagiert. Wenn ein Thread jedoch die Identität eines Clients antritt, 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 Zugriffsüberprüfungen während des Identitätswechsels verwendet. Wenn der Identitätswechsel beendet ist, verwendet der Thread nur das primäre Zugriffstoken.
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.