Ich habe einen Beispielcode im Codeprojekt gefunden, der den Identitätswechsel durch den Benutzer ermöglicht.
Dieser Code funktioniert durch Importieren der folgenden nicht verwalteten Win32-API-Funktionen:
%Vor%Diese Funktionen werden verwendet, um die Identität des Zielbenutzers anzunehmen, dann einige Operationen auszuführen und den Identitätswechselkontext wiederherzustellen. Die Identität des Benutzers wird wie folgt angenommen:
%Vor% Ich versuche zu verstehen, warum dieser Code zuerst das erforderliche Token mithilfe von LogonUser
erhält und dann dieses Token dupliziert, bevor er den Identitätswechsel auf dem duplizierten Token durchführt. Warum imitieren Sie nicht einfach mit dem Token, das Sie von der Methode LogonUser
erhalten haben.
Offensichtlich versteht die Person, die diesen Artikel geschrieben hat, das besser als ich, so dass es scheint, dass ich etwas verpasse. Könnte ich bitte eine Erklärung erhalten, warum der scheinbar überflüssige Token-Duplizierungsschritt dieses Prozesses erforderlich ist?
Soweit ich weiß, sollte token, das an WindowsIdentity ctor übergeben wird, ein Identitätswechsel-Token sein. Also, der Autor dieses Codes mit
%Vor%zum Erstellen eines Identitätswechsel-Tokens von primäres Token , zurückgegeben von LogonUser (). Diese '2' magische Zahl steht für SecurityImpersonation Member von SECURITY_IMPERSONATION_LEVEL enum.
Links:
Tags und Links c# windows authentication winapi