Aracılığıyla paylaş


İstemci Doğrulama

Hizmetler, istemci proxy türlerinin otomatik olarak oluşturulmasını ve yapılandırılmasını sağlamak için sık sık meta veriler yayımlar. Hizmete güvenilmediğinde, istemci uygulamaları meta verilerin istemci uygulamasının güvenlik, işlemler, hizmet sözleşmesi türü vb. ile ilgili ilkesine uygun olduğunu doğrulamalıdır. Aşağıdaki örnek, hizmet uç noktasının güvenli olduğundan emin olmak için hizmet uç noktasını doğrulayan bir istemci uç noktası davranışının nasıl yazıldığını gösterir.

Hizmet dört hizmet uç noktasını kullanıma sunar. İlk uç nokta WSDualHttpBinding'i, ikinci uç nokta NTLM kimlik doğrulamasını, üçüncü uç nokta işlem akışını etkinleştirir ve dördüncü uç nokta ise sertifika tabanlı kimlik doğrulamasını kullanır.

İstemci, hizmetin meta verilerini almak için sınıfını kullanır MetadataResolver . İstemci, doğrulama davranışı kullanarak çift yönlü bağlamaları, NTLM kimlik doğrulamasını ve işlem akışını yasaklayan bir ilke uygular. Hizmetin meta verilerinden içeri aktarılan her ServiceEndpoint örneği için, istemci uygulaması, uç noktaya bağlanmak üzere bir Windows Communication Foundation (WCF) istemcisi kullanmaya çalışmadan önce, InternetClientValidatorBehavior'ye uç nokta davranışının bir örneğini ServiceEndpoint ekler. Davranış Validate yöntemi, hizmetteki herhangi bir işlem çağrılmadan önce çalışır ve fırlatarak istemcinin politikasını zorlar InvalidOperationExceptions.

Örneği oluşturmak için

  1. Çözümü oluşturmak için Windows Communication Foundation Örnekleri Oluşturma başlığındaki yönergeleri izleyin.

Örneği aynı bilgisayarda çalıştırmak için

  1. Visual Studio için yönetici ayrıcalıklarıyla bir Geliştirici Komut İstemi açın ve örnek yükleme klasöründen Setup.bat çalıştırın. Bu, örneği çalıştırmak için gereken tüm sertifikaları yükler.

  2. \service\bin\Debug konumundan hizmet uygulamasını çalıştırın.

  3. \client\bin\Debug konumundan istemci uygulamasını çalıştırın. İstemci etkinliği, istemci konsol uygulamasında görüntülenir.

  4. İstemci ve hizmet iletişim kuramıyorsa bkz. WCF Örnekleri için Sorun Giderme İpuçları.

  5. Örnekle işiniz bittiğinde Cleanup.bat çalıştırarak sertifikaları kaldırın. Diğer güvenlik örnekleri aynı sertifikaları kullanır.

Örneği bilgisayarlar arasında çalıştırmak için

  1. Visual Studio için bir Geliştirici Komut İstemi'ni yönetici ayrıcalıklarıyla sunucuda çalıştırırken setup.bat service yazın. setup.bat bağımsız değişkeniyle service çalıştırmak, bilgisayarın tam etki alanı adına sahip bir hizmet sertifikası oluşturur ve hizmet sertifikasını Service.cer adlı bir dosyaya aktarır.

  2. Sunucuda, App.config yeni sertifika adını yansıtacak şekilde düzenleyin. Diğer bir ifadeyle, findValue öğesindeki < özelliğini bilgisayarın tam nitelikli etki alan adıyla değiştirin.

  3. Service.cer dosyasını hizmet dizininden istemci bilgisayardaki istemci dizinine kopyalayın.

  4. İstemcide, yönetici ayrıcalıklarıyla Visual Studio için Bir Geliştirici Komut İstemi açın ve yazın setup.bat client. setup.bat öğesini client bağımsız değişkeniyle çalıştırmak, Client.com adlı bir istemci sertifikası oluşturur ve istemci sertifikasını Client.cer adlı bir dosyaya aktarır.

  5. client.cs dosyasında MEX uç noktasının adres değerini ve findValue varsayılan sunucu sertifikasını hizmetinizin yeni adresiyle eşleşecek şekilde ayarlamak için değerini değiştirin. Bunu, localhost'u sunucunun tamamen nitelikli etki alanı adıyla değiştirerek yaparsınız. Yeniden inşa et.

  6. Client.cer dosyasını istemci dizininden sunucudaki hizmet dizinine kopyalayın.

  7. İstemcide, yönetici ayrıcalıklarıyla açılan Visual Studio için Geliştirici Komut İstemi'nde ImportServiceCert.bat çalıştırın. Bu, hizmet sertifikasını Service.cer dosyasından CurrentUser - TrustedPeople deposuna aktarır.

  8. Sunucuda, yönetici ayrıcalıklarıyla açılan Visual Studio için Geliştirici Komut İstemi'nde ImportClientCert.bat çalıştırın. Bu, istemci sertifikasını Client.cer dosyasından LocalMachine - TrustedPeople deposuna aktarır.

  9. Hizmet bilgisayarında, Visual Studio'da hizmet projesini derleyin ve service.exeçalıştırın.

  10. İstemci bilgisayarda client.exeçalıştırın.

    1. İstemci ve hizmet iletişim kuramıyorsa bkz. WCF Örnekleri için Sorun Giderme İpuçları.

Örnekten sonra temizlik yapmak için

  • Örneği çalıştırmayı bitirdikten sonra örnekler klasöründe Cleanup.bat çalıştırın.

    Uyarı

    Bu betik, bu örneği bilgisayarlar arasında çalıştırırken istemcideki hizmet sertifikalarını kaldırmaz. Bilgisayarlar arasında sertifika kullanan WCF örnekleri çalıştırdıysanız CurrentUser - TrustedPeople deposuna yüklenmiş hizmet sertifikalarını temizlediğinizden emin olun. Bunu yapmak için şu komutu kullanın: certmgr -del -r CurrentUser -s TrustedPeople -c -n <Fully Qualified Server Machine Name>. For example: certmgr -del -r CurrentUser -s TrustedPeople -c -n server1.contoso.com.

Ayrıca bakınız