Nasıl yapılır: Bir Hizmette İstemci Kimliğine Bürünme
Windows Communication Foundation (WCF) hizmetinde bir istemcinin kimliğine bürünmek, hizmetin istemci adına eylemler gerçekleştirmesini sağlar. Bir makinedeki dizinlere ve dosyalara erişim veya SQL Server veritabanına erişim gibi erişim denetim listesi (ACL) denetimlerine tabi eylemler için, ACL denetimi istemci kullanıcı hesabına karşıdır. Bu konu başlığında, Windows etki alanındaki bir istemcinin istemci kimliğe bürünme düzeyini ayarlamasını sağlamak için gereken temel adımlar gösterilmektedir. Bunun çalışan bir örneği için bkz . İstemcinin Kimliğine Bürünme. İstemci kimliğe bürünme hakkında daha fazla bilgi için bkz . Temsilci seçme ve Kimliğe Bürünme.
Not
İstemci ve hizmet aynı bilgisayarda çalışırken ve istemci bir sistem hesabı (veyaNetwork Service
) altında çalışıyorsa, Local System
durum bilgisi olan Güvenlik Bağlamı belirteçleriyle güvenli bir oturum oluşturulduğunda istemci kimliğine bürünilemez. WinForms veya konsol uygulaması genellikle şu anda oturum açmış olan hesabın altında çalıştırılır, böylece hesap varsayılan olarak kimliğine bürünülebilir. Ancak, istemci bir ASP.NET sayfası olduğunda ve bu sayfa IIS 6.0 veya IIS 7.0'da barındırıldığında, istemci varsayılan olarak hesap altında Network Service
çalışır. Güvenli oturumları destekleyen sistem tarafından sağlanan tüm bağlamalar varsayılan olarak durum bilgisi olmayan bir Güvenlik Bağlamı belirteci kullanır. Ancak, istemci bir ASP.NET sayfasıysa ve durum bilgisi olan Güvenlik Bağlamı belirteçleriyle güvenli oturumlar kullanılıyorsa, istemci kimliğine bürünilemez. Güvenli bir oturumda durum bilgisi olan Güvenlik Bağlamı belirteçlerini kullanma hakkında daha fazla bilgi için bkz . Nasıl yapılır: Güvenli Oturum için Güvenlik Bağlam Belirteci Oluşturma.
Bir hizmette önbelleğe alınmış bir Windows belirtecinden istemcinin kimliğine bürünme özelliğini etkinleştirmek için
Hizmeti oluşturun. Bu temel yordamın öğreticisi için bkz . Başlarken Öğreticisi.
Windows kimlik doğrulaması kullanan ve veya WSHttpBindinggibi NetTcpBinding bir oturum oluşturan bir bağlama kullanın.
Hizmet arabiriminin uygulamasını oluştururken, istemci kimliğe bürünme gerektiren yöntemine sınıfını uygulayın OperationBehaviorAttribute . Impersonation özelliğini Required olarak ayarlayın.
[OperationBehavior(Impersonation=ImpersonationOption.Required)] public double Add(double a, double b) { return a + b; }
<OperationBehavior(Impersonation:=ImpersonationOption.Required)> _ Public Function Add(ByVal a As Double, ByVal b As Double) As Double _ Implements ICalculator.Add Return a + b End Function
İstemcide izin verilen kimliğe bürünme düzeyini ayarlamak için
ServiceModel Meta Veri Yardımcı Programı Aracı'nı (Svcutil.exe) kullanarak hizmet istemci kodu oluşturun. Daha fazla bilgi için bkz . WCF İstemcisi Kullanarak Hizmetlere Erişme.
WCF istemcisini oluşturduktan sonra sınıfının özelliğini WindowsClientCredential numaralandırma değerlerinden TokenImpersonationLevel birine ayarlayınAllowedImpersonationLevel.
Not
kullanmak Delegationiçin, üzerinde anlaşmaya varılan Kerberos kimlik doğrulaması (bazen çok bacaklı veya çok adımlı Kerberos olarak da adlandırılır) kullanılmalıdır. Bunun nasıl uygulanacaklarına ilişkin bir açıklama için bkz . Güvenlik için En İyi Yöntemler.
CalculatorClient client = new CalculatorClient("CalculatorEndpoint"); client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
Dim client As New CalculatorClient("CalculatorEndpoint") client.ClientCredentials.Windows.AllowedImpersonationLevel = _ System.Security.Principal.TokenImpersonationLevel.Impersonation