Kimlik Bilgisi Türü Seçme
Kimlik bilgileri, Windows Communication Foundation'ın (WCF) talep edilen bir kimlik veya yetenek oluşturmak için kullandığı verilerdir. Örneğin, pasaport, bir ülkede veya bölgede vatandaşlığı kanıtlamak için kamu tarafından karşılaşılan kimlik bilgileridir. WCF'de kimlik bilgileri kullanıcı adı belirteçleri ve X.509 sertifikaları gibi birçok form alabilir. Bu konuda kimlik bilgileri, WCF'de nasıl kullanıldıkları ve uygulamanız için doğru kimlik bilgilerinin nasıl seçılacağı açıklanmaktadır.
Birçok ülkede ve bölgede ehliyet, kimlik bilgisi örneğidir. Lisans, bir kişinin kimliğini ve özelliklerini temsil eden veriler içerir. Sahip olanın resmi şeklinde sahiplik kanıtı içerir. Lisans, genellikle bir devlet lisans departmanı olan güvenilen bir yetkili tarafından verilir. Lisans korumalıdır ve üzerinde oynanmadığını veya sahte olmadığını gösteren bir hologram içerebilir.
Kimlik bilgilerinin sunulması hem verilerin hem de verilerin sahip olduğuna ilişkin kanıtın sunulmasını içerir. WCF, hem aktarım hem de ileti güvenlik düzeylerinde çeşitli kimlik bilgisi türlerini destekler. Örneğin, WCF'de desteklenen iki kimlik bilgisi türünü göz önünde bulundurun: kullanıcı adı ve (X.509) sertifika kimlik bilgileri.
Kullanıcı adı kimlik bilgisi için, kullanıcı adı talep edilen kimliği temsil eder ve parola sahiplik kanıtı sağlar. Bu durumda güvenilen yetkili, kullanıcı adını ve parolayı doğrulayan sistemdir.
X.509 sertifika kimlik bilgileriyle, sertifikadaki konu adı, konu alternatif adı veya belirli alanlar kimlik talepleri olarak kullanılabilirken ve Valid To
alanları gibi Valid From
diğer alanlar sertifikanın geçerliliğini belirtebilir.
Aktarım Kimlik Bilgisi Türleri
Aşağıdaki tabloda, aktarım güvenliği modunda bağlama tarafından kullanılabilecek olası istemci kimlik bilgileri türleri gösterilmektedir. Hizmet oluştururken, istemcinin ClientCredentialType
hizmetinizle iletişim kurmak için sağlaması gereken kimlik bilgisi türünü belirtmek için özelliğini bu değerlerden birine ayarlayın. Türleri kod veya yapılandırma dosyalarında ayarlayabilirsiniz.
Ayar | Veri Akışı Açıklaması |
---|---|
Hiçbiri | İstemcinin herhangi bir kimlik bilgisi sunması gerekmediğini belirtir. Bu, anonim bir istemciye çevrilir. |
Temel | İstemci için temel kimlik doğrulamasını belirtir. Ek bilgi için bkz. RFC2617—HTTP Kimlik Doğrulaması: Temel ve Özet Kimlik Doğrulaması. |
Özet | İstemci için özet kimlik doğrulamasını belirtir. Ek bilgi için bkz. RFC2617—HTTP Kimlik Doğrulaması: Temel ve Özet Kimlik Doğrulaması. |
Ntlm | NT LAN Manager (NTLM) kimlik doğrulamayı belirtir. Bu, bir nedenle Kerberos kimlik doğrulamasını kullanamadığınızda kullanılır. Ayrıca özelliğini false olarak ayarlayarak AllowNtlm geri dönüş olarak kullanımını devre dışı bırakabilirsiniz. Bu, NTLM kullanılırsa WCF'nin özel durum oluşturmak için en iyi çabayı harcamasına neden olur. Bu özelliği false olarak ayarlamak, NTLM kimlik bilgilerinin kablo üzerinden gönderilmesini engellemeyebilir. |
Windows | Windows kimlik doğrulamayı belirtir. Bir Windows etki alanında yalnızca Kerberos protokolünü belirtmek için özelliğini false olarak ayarlayın AllowNtlm (varsayılan değerdirtrue ). |
Sertifika | X.509 sertifikası kullanarak istemci kimlik doğrulaması gerçekleştirir. |
Parola | Kullanıcının bir kullanıcı adı ve parola sağlaması gerekir. Windows kimlik doğrulamasını veya başka bir özel çözümü kullanarak kullanıcı adını/parola çiftini doğrulayın. |
İleti İstemcisi Kimlik Bilgisi Türleri
Aşağıdaki tabloda, ileti güvenliği kullanan bir uygulama oluştururken kullanabileceğiniz olası kimlik bilgisi türleri gösterilmektedir. Bu değerleri kod veya yapılandırma dosyalarında kullanabilirsiniz.
Ayar | Veri Akışı Açıklaması |
---|---|
Hiçbiri | İstemcinin bir kimlik bilgisi sunması gerekmediğini belirtir. Bu, anonim bir istemciye çevrilir. |
Windows | SOAP ileti alışverişlerinin bir Windows kimlik bilgileriyle oluşturulan güvenlik bağlamı altında gerçekleşmesini sağlar. |
Username | Hizmetin, istemcinin kimlik doğrulamasının bir kullanıcı adı kimlik bilgileriyle yapılmasını gerektirmesine izin verir. WCF'nin imza oluşturma veya verileri şifreleme gibi kullanıcı adlarıyla herhangi bir şifreleme işlemine izin vermediğini unutmayın. WCF, kullanıcı adı kimlik bilgileri kullanılırken aktarım güvenliğinin sağlanmasını sağlar. |
Sertifika | Hizmetin bir X.509 sertifikası kullanılarak istemcinin kimliğinin doğrulanmış olmasını gerektirmesine izin verir. |
Verilen Belirteç | Güvenlik ilkesine göre yapılandırılmış özel belirteç türü. Varsayılan belirteç türü Güvenlik Onayları biçimlendirme dilidir (SAML). Belirteç, güvenli bir belirteç hizmeti tarafından verilir. Daha fazla bilgi için bkz . Federasyon ve Verilen Belirteçler. |
Hizmet Kimlik Bilgilerinin Anlaşma Modeli
Anlaşma , kimlik bilgilerini değiştirerek istemci ile hizmet arasında güven oluşturma işlemidir. İşlem, yalnızca müzakere sürecindeki bir sonraki adım için gerekli bilgileri açıklamak için istemci ve hizmet arasında yinelemeli olarak gerçekleştirilir. Uygulamada sonuç, sonraki işlemlerde kullanılacak hizmetin kimlik bilgilerinin istemciye teslim edilmesidir.
Bir özel durumla birlikte, WCF'deki sistem tarafından sağlanan bağlamalar, ileti düzeyi güvenlik kullanılırken hizmet kimlik bilgilerini varsayılan olarak otomatik olarak belirler. (Özel durum, varsayılan olarak güvenliği etkinleştirmeyen 'dirBasicHttpBinding.) Bu davranışı devre dışı bırakmak için ve NegotiateServiceCredential özelliklerine NegotiateServiceCredential bakın.
Not
SSL güvenliği .NET Framework 3.5 ve üzeri ile kullanıldığında, WCF istemcisi hizmetin sertifikasında sertifika zinciri doğrulaması gerçekleştirmek için hem sertifika deposundaki ara sertifikaları hem de SSL anlaşması sırasında alınan ara sertifikaları kullanır. .NET Framework 3.0 yalnızca yerel sertifika deposunda yüklü olan ara sertifikaları kullanır.
Bant Dışı Anlaşma
Otomatik anlaşma devre dışı bırakılırsa, hizmete ileti göndermeden önce hizmet kimlik bilgisi istemcide sağlanmalıdır. Bu, bant dışı sağlama olarak da bilinir. Örneğin, belirtilen kimlik bilgisi türü bir sertifikaysa ve otomatik anlaşma devre dışıysa, istemcinin sertifikayı almak ve istemci uygulamasını çalıştıran bilgisayara yüklemek için hizmet sahibine başvurması gerekir. Bu, örneğin, işletmeler arası bir senaryoda hangi istemcilerin bir hizmete erişebileceğini kesin olarak denetlemek istediğinizde yapılabilir. Bu bant dışı anlaşma e-postayla yapılabilir ve X.509 sertifikası, Microsoft Yönetim Konsolu (MMC) Sertifikaları ek bileşeni gibi bir araç kullanılarak Windows sertifika deposunda depolanır.
Not
ClientCredentials özelliği, hizmete bant dışı anlaşma yoluyla ulaşılan bir sertifika sağlamak için kullanılır. Bağlama otomatik anlaşmaya izin vermediğinden sınıfı kullanılırken BasicHttpBinding bu gereklidir. özelliği, bağıntısız bir çift yönlü senaryoda da kullanılır. Bu, bir sunucunun istemciye önce istek göndermesine gerek kalmadan istemciye ileti gönderdiği bir senaryodur. Sunucunun istemciden gelen bir isteği olmadığından, istemciye ileti şifrelemek için istemcinin sertifikasını kullanması gerekir.
Kimlik Bilgisi Değerlerini Ayarlama
Bir güvenlik modu seçtikten sonra gerçek kimlik bilgilerini belirtmeniz gerekir. Örneğin, kimlik bilgisi türü "sertifika" olarak ayarlandıysa, belirli bir kimlik bilgilerini (belirli bir X.509 sertifikası gibi) hizmet veya istemciyle ilişkilendirmeniz gerekir.
Bir hizmeti mi yoksa istemciyi mi programlamanıza bağlı olarak, kimlik bilgisi değerini ayarlama yöntemi biraz farklılık gösterir.
Hizmet Kimlik Bilgilerini Ayarlama
Aktarım modunu kullanıyorsanız ve aktarım olarak HTTP kullanıyorsanız, Internet Information Services (IIS) kullanmanız veya bağlantı noktasını bir sertifikayla yapılandırmanız gerekir. Daha fazla bilgi için bkz . Aktarım Güvenliğine Genel Bakış ve HTTP Aktarım Güvenliği.
Kodda kimlik bilgileriyle bir hizmet sağlamak için sınıfının bir örneğini ServiceHost oluşturun ve özelliği aracılığıyla Credentials erişilen sınıfını kullanarak ServiceCredentials uygun kimlik bilgilerini belirtin.
Sertifika Ayarlama
İstemcilerde hizmetin kimliğini doğrulamak için kullanılacak bir X.509 sertifikasına sahip bir hizmet sağlamak için sınıfının yöntemini X509CertificateRecipientServiceCredential kullanınSetCertificate.
İstemci sertifikasıyla hizmet sağlamak için sınıfının yöntemini X509CertificateInitiatorServiceCredential kullanınSetCertificate.
Windows Kimlik Bilgilerini Ayarlama
İstemci geçerli bir kullanıcı adı ve parola belirtirse, istemcinin kimliğini doğrulamak için bu kimlik bilgisi kullanılır. Aksi takdirde, geçerli oturum açmış kullanıcının kimlik bilgileri kullanılır.
İstemci Kimlik Bilgilerini Ayarlama
WCF'de istemci uygulamaları, hizmetlere bağlanmak için bir WCF istemcisi kullanır. Her istemci sınıfından ClientBase<TChannel> türetilir ve ClientCredentials istemcideki özelliği, istemci kimlik bilgilerinin çeşitli değerlerinin belirtimine izin verir.
Sertifika Ayarlama
Bir hizmette istemcinin kimliğini doğrulamak için kullanılan bir X.509 sertifikasına sahip bir hizmet sağlamak için sınıfının yöntemini X509CertificateInitiatorClientCredential kullanınSetCertificate.
İstemci Kimlik Bilgileri Hizmette İstemciNin Kimliğini Doğrulamak için Nasıl Kullanılır?
Bir hizmetle iletişim kurmak için gereken istemci kimlik bilgileri özelliği veya Credentials özelliği kullanılarak ClientCredentials sağlanır. Güvenlik kanalı, hizmette istemcinin kimliğini doğrulamak için bu bilgileri kullanır. Kimlik doğrulaması iki moddan biriyle gerçekleştirilir:
İstemci kimlik bilgileri, güvenlik bağlamı oluşturmak için WCF istemci örneği kullanılarak ilk ileti gönderilmeden önce bir kez kullanılır. Ardından tüm uygulama iletileri güvenlik bağlamı aracılığıyla güvenli hale getirilir.
İstemci kimlik bilgileri, hizmete gönderilen her uygulama iletisinin kimliğini doğrulamak için kullanılır. Bu durumda, istemci ile hizmet arasında bağlam oluşturulmaz.
Oluşturulan Kimlikler Değiştirilemez
İlk yöntem kullanıldığında, oluşturulan bağlam istemci kimliğiyle kalıcı olarak ilişkilendirilir. Diğer bir ifadeyle, güvenlik bağlamı oluşturulduktan sonra istemciyle ilişkili kimlik değiştirilemez.
Önemli
Kimlik değiştirilemediğinde (yani güvenlik bağlamı açıkken varsayılan davranış) dikkat edilmesi gereken bir durum vardır. İkinci bir hizmetle iletişim kuran bir hizmet oluşturursanız, WCF istemcisini ikinci hizmete açmak için kullanılan kimlik değiştirilemez. Birden çok istemcinin ilk hizmeti kullanmasına izin verilirse ve hizmet ikinci hizmete erişirken istemcilerin kimliğine bürünüyorsa bu bir sorun haline gelir. Hizmet aynı istemciyi tüm arayanlar için yeniden kullanıyorsa, ikinci hizmete yapılan tüm çağrılar, istemciyi ikinci hizmete açmak için kullanılan ilk çağıranın kimliği altında yapılır. Başka bir deyişle hizmet, tüm istemcilerinin ikinci hizmetle iletişim kurması için ilk istemcinin kimliğini kullanır. Bu, ayrıcalıkların yükseltilmesine yol açabilir. Hizmetinizin istenen davranışı bu değilse, her çağıranı izlemeniz ve her farklı arayan için ikinci hizmete yeni bir istemci oluşturmanız ve hizmetin ikinci hizmetle iletişim kurmak için doğru arayan için yalnızca doğru istemciyi kullandığından emin olmanız gerekir.
Kimlik bilgileri ve güvenli oturumlar hakkında daha fazla bilgi için bkz . Güvenli Oturumlar için GüvenlikLe İlgili Önemli Noktalar.
Ayrıca bkz.
- System.ServiceModel.ClientBase<TChannel>
- ClientBase<TChannel>.ClientCredentials
- ClientCredentials.ClientCertificate
- BasicHttpMessageSecurity.ClientCredentialType
- HttpTransportSecurity.ClientCredentialType
- MessageSecurityOverHttp.ClientCredentialType
- MessageSecurityOverMsmq.ClientCredentialType
- MessageSecurityOverTcp.ClientCredentialType
- TcpTransportSecurity.ClientCredentialType
- X509CertificateInitiatorClientCredential.SetCertificate
- X509CertificateInitiatorServiceCredential.SetCertificate
- Güvenlik Kavramları
- Hizmet ve İstemcileri Güvenli Hale Getirme
- WCF Güvenliğini Programlama
- HTTP Aktarım Güvenliği