Zosobnění a návrat
Někdy může být nutné získat token účtu systému Windows NT k zosobnění účtu systému Windows. Například vaše aplikace založená na technologii ASP.NET může jednat jménem několika uživatelů v různých časech. Aplikace může přijmout token, který představuje správce Internetové informační služby (IIS), zosobnit uživatele, provést operaci a vrátit se zpět k uložené předchozí identitě. Dále může přijmout token z IIS představující uživatele s menšími právy, provést některé operace a opět se vrátit se k uloženému.
V situacích, kde vaše aplikace musí zosobnit účet systému Windows, který nebyl přiložen k aktuálnímu vláknu IIS, musíte získat token tohoto účtu a použít ho k aktivaci účtu. Toho dosáhnete provedením následujících úkolů:
Načtěte token účtu pro určitého uživatele tím, že zavoláte nespravovanou metodu LogonUser. Tato metoda není v základní knihovně tříd rozhraní .NET Framework, ale je umístěna v nespravované advapi32.dll. Přístup k metodám v nespravovaném kódu je pokročilá operace a nad rámec této diskuse. Další informace naleznete v tématu Spolupráce s nespravovaným kódem. Další informace o metodě LogonUser a advapi32.dll naleznete v dokumentaci platformy sady SDK.
Vytvořte novou instanci třídy WindowsIdentity a předejte token. Následující kód ukazuje toto volání, kde hToken představuje Windows token.
WindowsIdentity ImpersonatedIdentity = new WindowsIdentity(hToken);
Dim ImpersonatedIdentity As New WindowsIdentity(hToken)
Začněte zosobnění vytvořením nové instance třídy WindowsImpersonationContext a inicializací s metodou WindowsIdentity.Impersonate inicializované třídy, jak ukazuje následující kód.
WindowsImpersonationContext MyImpersonation = ImpersonatedIdentity.Impersonate();
WindowsImpersonationContext MyImpersonation = ImpersonatedIdentity.Impersonate()
Pokud již nepotřebujete zosobnění, volejte metodu WindowsImpersonationContext.Undo k vrácení se k uloženému zosobnění, jak ukazuje následující kód.
MyImpersonation.Undo();
MyImpersonation.Undo()
Pokud důvěryhodný kód již připojil objekt WindowsPrincipal k vláknu, můžete zavolat instanci metody Impersonate, která nepřijíma token účtu. Všimněte si, že toto nastavení je užitečné pouze, když objekt WindowsPrincipal ve vlákně představuje uživatel jiného, než toho, pod kterým je proces aktuálně prováděn. Například může k této situaci dojít při používání technologie ASP.NET se zapnutým ověřováním systému Windows a vypnutým zosobněním. V tomto případě je proces spuštěn pod účtem nakonfigurovaným v Internetové informační službě (IIS), zatímco aktuální objekt zabezpečení představuje uživatele systému Windows, který přistupuje na stránku.
Všimněte si, že ani Impersonate nebo Undo nezmění objekt zabezpečení přidružený k aktuálnímu kontextu volání. Místo toho zosobnění a vrácení se k uloženému změní token spojený s aktuálním procesem operačního systému..
Viz také
Odkaz
Koncepty
Objekty zabezpečení a identity
Použití ověřování služby IIS se zosobněním technologie ASP.NET