Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Tento článek se týká Windows.
Informace o ASP.NET Core najdete v tématu ASP.NET Core Security.
Někdy může být potřeba získat token účtu Systému Windows, abyste mohli zosobnit účet Windows. Například vaše ASP. Aplikace založená na technologii NET může v různých časech jednat jménem několika uživatelů. Vaše aplikace může přijmout token, který představuje správce internetové informační služby (IIS), zosobnit daného uživatele, provést operaci a vrátit se k předchozí identitě. Dále může přijmout token ze služby IIS, který představuje uživatele s menším počtem práv, provést nějakou operaci a vrátit se znovu.
V situacích, kdy vaše aplikace musí zosobnit účet Systému Windows, který není připojený k aktuálnímu vláknu službou IIS, musíte načíst token daného účtu a použít ho k aktivaci účtu. Můžete to provést provedením následujících úloh:
Načtení tokenu účtu pro konkrétního uživatele provedením volání nespravované metody LogonUser . Tato metoda není v knihovně základních tříd .NET, ale je umístěna v nespravované advapi32.dll. Přístup k metodám v nespravovaném kódu je pokročilá operace a přesahuje rozsah této diskuze. Další informace najdete v tématu Spolupráce s nespravovaným kódem. Další informace o metodě LogonUser a advapi32.dllnaleznete v dokumentaci k sadě SDK platformy.
Vytvořte novou instanci třídy WindowsIdentity a předáte token. Následující kód ukazuje toto volání, kde
hTokenpředstavuje token Windows.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 její inicializací metodou WindowsIdentity.Impersonate inicializované třídy, jak je znázorněno v následujícím kódu.
WindowsImpersonationContext myImpersonation = impersonatedIdentity.Impersonate();WindowsImpersonationContext myImpersonation = impersonatedIdentity.Impersonate()Pokud už nepotřebujete zosobnit, zavolejte metodu WindowsImpersonationContext.Undo , která vrátí zosobnění, jak je znázorněno v následujícím kódu.
myImpersonation.Undo();myImpersonation.Undo()
Pokud již důvěryhodný kód připojil WindowsPrincipal objekt k vláknu, můžete volat instanční metodu Impersonate, která nepřebírá token účtu. Všimněte si, že to je užitečné pouze v případě, že WindowsPrincipal objekt ve vlákně představuje jiného uživatele než uživatele, pod kterým se proces právě spouští. Můžete se například setkat s touto situací pomocí 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ých informačních službách (IIS), zatímco aktuální uživatel Windows představuje uživatele, který přistupuje na stránku.
Všimněte si, že zosobnění ani vrácení zpět nemění objekt Principal (IPrincipal) spojený s aktuálním kontextem volání. Spíše zosobnění a vrácení změní token přidružený k aktuálnímu procesu operačního systému.