Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Bu makale Windows için geçerlidir.
ASP.NET Core hakkında bilgi için bkz. ASP.NET Core Security.
Bazen bir Windows hesabını taklit etmek için bir Windows hesabı belirteci almanız gerekebilir. Örneğin, ASP'niz. NET tabanlı uygulamanın farklı zamanlarda birkaç kullanıcı adına işlem görmesi gerekebilir. Uygulamanız, Internet Information Services'ten (IIS) bir yöneticiyi temsil eden bir belirteci kabul edebilir, bu kullanıcının kimliğine bürünebilir, bir işlem gerçekleştirebilir ve önceki kimliğe geri dönebilir. Ardından, IIS'den daha az haklara sahip bir kullanıcıyı temsil eden bir belirteci kabul edebilir, bazı işlemler gerçekleştirebilir ve yeniden döndürebilir.
Uygulamanızın IIS tarafından geçerli iş parçacığına bağlanmamış bir Windows hesabının kimliğine bürünmesi gereken durumlarda, bu hesabın belirtecini elde etmeniz ve hesabı etkinleştirmek için kullanmanız gerekiyor. Bunu yapmak için aşağıdaki görevleri gerçekleştirebilirsiniz:
Yönetilmeyen LogonUser yöntemine çağrı yaparak belirli bir kullanıcı için hesap belirtecini alın. Bu yöntem .NET temel sınıf kitaplığında değil, yönetilmeyen advapi32.dllbulunur. Yönetilmeyen koddaki yöntemlere erişmek gelişmiş bir işlemdir ve bu tartışmanın kapsamı dışındadır. Daha fazla bilgi için bkz. Yönetilmeyen Kod ile Birlikte Çalışma. LogonUser yöntemi ve advapi32.dllhakkında daha fazla bilgi için Platform SDK belgelerine bakın.
Belirteci geçirerek WindowsIdentity sınıfının yeni bir örneğini oluşturun. Aşağıdaki kod, bir Windows belirtecini temsil eden
hTokenbu çağrıyı gösterir.WindowsIdentity impersonatedIdentity = new WindowsIdentity(hToken);Dim impersonatedIdentity As New WindowsIdentity(hToken)Sınıfın WindowsImpersonationContext yeni bir örneğini oluşturup, ardından başlatılan sınıfın WindowsIdentity.Impersonate yöntemiyle başlatarak kimliğe bürünme işlemine başlayın, aşağıdaki kodda gösterildiği gibi.
WindowsImpersonationContext myImpersonation = impersonatedIdentity.Impersonate();WindowsImpersonationContext myImpersonation = impersonatedIdentity.Impersonate()Artık kimliğe bürünmeye gerek kalmadığında, aşağıdaki kodda gösterildiği gibi kimliğe bürünme işlemini geri almak için WindowsImpersonationContext.Undo yöntemini çağırın.
myImpersonation.Undo();myImpersonation.Undo()
Eğer güvenilir kod iş parçacığına zaten bir WindowsPrincipal nesne eklemişse, hesap belirteci gerektirmeyen Impersonate örnek yöntemini çağırabilirsiniz. Bu yalnızca şu koşulda işe yarar: WindowsPrincipal nesnesi iş parçacığında işlemin şu anda çalıştığı kullanıcıdan farklı bir kullanıcıyı temsil ediyorsa. Örneğin, Windows kimlik doğrulaması açıkken ve kimliğe bürünme kapalıyken ASP.NET kullanarak bu durumla karşılaşabilirsiniz. Bu durumda, işlem, Internet Information Services (IIS) içinde yapılandırılmış bir hesap altında çalışırken, geçerli ana kullanıcı sayfaya erişen Windows kullanıcısını temsil eder.
Taklit Et veya Geri Al'ın, geçerli çağrı bağlamıyla ilişkili Principal nesnesini (IPrincipal) değiştirmediğini unutmayın. Bunun yerine, kimliğe bürünme ve geri döndürme, geçerli işletim sistemi işlemiyle ilişkili belirteci değiştirir.