Clientidentitätswechsel (Autorisierung)
Identitätswechsel ist die Fähigkeit eines Threads, mit anderen Sicherheitsinformationen als dem Prozess auszuführen, der den Thread besitzt. In der Regel wird ein Thread in einer Serveranwendung als Identitätswechsel eines Clients verwendet. Dadurch kann der Serverthread im Auftrag dieses Clients auf Objekte auf dem Server zugreifen oder den Zugriff auf die eigenen Objekte des Clients überprüfen.
Die Microsoft Windows-API stellt die folgenden Funktionen bereit, um einen Identitätswechsel zu beginnen:
- Eine DDE-Serveranwendung kann die DdeImpersonateClient--Funktion aufrufen, um einen Client zu imitieren.
- Ein Named-Pipe-Server kann den ImpersonateNamedPipeClient--Funktion aufrufen.
- Sie können die ImpersonateLoggedOnUser--Funktion aufrufen, um den Sicherheitskontext des Zugriffstokens eines angemeldeten Benutzerszu imitieren.
- Mit der ImpersonateSelf--Funktion kann ein Thread eine Kopie seines eigenen Zugriffstokens generieren. Dies ist nützlich, wenn eine Anwendung den Sicherheitskontext eines einzelnen Threads ändern muss. Beispielsweise muss manchmal nur ein Thread eines Prozesses eine Berechtigungaktivieren.
- Sie können die SetThreadToken--Funktion aufrufen, damit der Zielthread im Sicherheitskontext eines angegebenen Identitätswechseltokensausgeführt wird.
- Eine Microsoft Remote Procedure Call (RPC)-Serveranwendung kann die RpcImpersonateClient--Funktion aufrufen, um die Identität eines Clients zu imitieren.
- Ein Sicherheitspaket oder Anwendungsserver kann den ImpersonateSecurityContext--Funktion aufrufen, um einen Client zu imitieren.
Für die meisten dieser Identitätswechsel kann der Identitätswechselthread auf seinen eigenen Sicherheitskontext zurückgesetzt werden, indem er die RevertToSelf--Funktion aufruft. Die Ausnahme ist der RPC-Identitätswechsel, in dem die RPC-Serveranwendung RpcRevertToSelf- oder RpcRevertToSelfEx- aufruft, um zum eigenen Sicherheitskontext zurückzuwechseln.
Hinweis: Wenn Sie einen Benutzer von einem Win32-Dienst annehmen und APIs aufrufen, die auf Benutzerumgebungsvariablen basieren, müssen Sie möglicherweise RegDisablePredefinedCache- aufrufen, bevor Sie den Identitätswechsel ausführen.