Identitätswechsel für einen Named Pipe-Client
Identitätswechsel ist die Fähigkeit eines Threads, in einem anderen Sicherheitskontext als dem prozess, der den Thread besitzt, auszuführen. Der Identitätswechsel ermöglicht dem Serverthread das Ausführen von Aktionen im Namen des Clients, jedoch innerhalb der Grenzen des Sicherheitskontexts des Clients. Der Client verfügt in der Regel über weniger Zugriffsrechte. Weitere Informationen finden Sie unter Identitätswechsel.
Ein Named Pipe-Serverthread kann die ImpersonateNamedPipeClient-Funktion aufrufen, um das Zugriffstoken des Benutzers anzunehmen, der mit dem Clientende der Pipe verbunden ist. Beispielsweise kann ein Named Pipe-Server Zugriff auf eine Datenbank oder ein Dateisystem bereitstellen, auf die der Pipeserver privilegierten Zugriff hat. Wenn ein Pipeclient eine Anforderung an den Server sendet, wird vom Server die Identität des Clients angenommen und versucht, auf die geschützte Datenbank zu zugreifen. Das System gewährt oder verweigert dann den Zugriff des Servers basierend auf der Sicherheitsstufe des Clients. Wenn der Server fertig ist, verwendet er die RevertToSelf-Funktion, um das ursprüngliche Sicherheitstoken wiederherzustellen.
Die Ebene des Identitätswechsels bestimmt die Vorgänge, die der Server beim Identitätswechsel des Clients ausführen kann. Standardmäßig wird die Identität eines Servers auf der Identitätswechselebene SecurityImpersonation angenommen. Wenn der Client jedoch die CreateFile-Funktion aufruft, um ein Handle für das Clientende der Pipe zu öffnen, kann der Client das SECURITY SQOS PRESENT-Flag verwenden, um die Identitätswechselebene des Servers zu _ _ steuern.