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.
Bulma belirtimi, bulma işlemine katılan uç noktaların güvenli olmasını gerektirmez. Bulma iletilerinin güvenlikle geliştirilmesi çeşitli saldırı türlerini (ileti değişikliği, hizmet reddi, yeniden yürütme, kimlik sahtekarlığı) azaltır.
DiscoveryScenario örneği, sıkıştırılmış imza biçimini kullanarak (WS-Discovery belirtiminin Bölüm 8.2'de açıklanan) ileti imzalarını hesaplayan ve doğrulayan özel kanallar uygular. Örnek hem 2005 Bulma belirtimini hem de 1.1 sürümünü destekler.
Bulma ve Duyuru uç noktaları için mevcut kanal yığınının üzerine özel kanal uygulanır. Bu şekilde, gönderilen her ileti için bir imza üst bilgisi uygulanır. alınan iletilerde imza doğrulanır ve eşleşmediğinde veya iletilerde imza olmadığında iletiler bırakılır. İletileri imzalamak ve doğrulamak için örnek sertifikaları kullanır.
Tartışma
WCF genişletilebilir ve kullanıcıların kanalları istediğiniz gibi özelleştirmesine olanak tanır. Örnek, güvenli kanallar oluşturan keşif amacıyla güvenli bağlama öğesi uygular. Güvenli kanallar, ileti imzalarını uygular ve doğrular, ayrıca mevcut yığının üzerinde çalıştırılır.
Güvenli bağlama öğesi, güvenli kanal fabrikaları ve kanal dinleyicileri oluşturur.
Güvenli Kanal Fabrikası
Güvenli kanal fabrikası, mesaj üst bilgilerine kompakt imza ekleyen çıkış veya çift yönlü kanallar oluşturur. İletileri olabildiğince küçük tutmak için sıkıştırılmış imza biçimi kullanılır. Sıkıştırılmış imzanın yapısı aşağıdaki örnekte gösterilmiştir.
<d:Security ... >
[<d:Sig Scheme="xs:anyURI"
[KeyId="xs:base64Binary"]?
Refs="..."
[PrefixList]="xs:NMTOKENS"
Sig="xs:base64Binary"
... />]?
...
</d:Security>
Uyarı
Bu PrefixList, 2008 Discovery sürümü protokolüne dahil edildi.
İmzayı hesaplamak için, örnek genişletilmiş imza öğelerini belirler. WS-Discovery belirtiminin SignedInfo gerektirdiği şekilde ad alanı ön eki kullanılarak bir XML imzası (ds) oluşturulur. İmza içerisinde gövde ve bulma ile adresleme ad alanlarındaki tüm üst bilgiler referans olarak kullanılır, bu nedenle değiştirilemez. Atıfta bulunulan her öğe Özel Kanonikleştirme http://www.w3.org/2001/10/xml-exc-c14n# kullanılarak dönüştürülür ve ardından bir SHA-1 özet değeri hesaplanır http://www.w3.org/2000/09/xmldsig#sha1. Başvuruda bulunan tüm öğelere ve özet değerlerine göre, imza değeri RSA algoritması (http://www.w3.org/2000/09/xmldsig#rsa-sha1) kullanılarak hesaplanır.
İletiler istemci tarafından belirtilen bir sertifikayla imzalandı. Bağlama öğesi oluşturulduğunda depo konumu, adı ve sertifika konu adı belirtilmelidir.
KeyId sıkıştırılmış imzada, imzalama belirtecinin anahtar tanımlayıcısını temsil eder ve imzalama belirtecinin Konu Anahtar Tanımlayıcısı (SKI) veya (SKI yoksa) imzalama belirtecinin ortak anahtarının SHA-1 karmasıdır.
Güvenli Kanal Dinleyicisi
Güvenli kanal dinleyicisi, alınan iletilerde sıkıştırılmış imzayı doğrulayan giriş veya çift yönlü kanallar oluşturur. İmzayı doğrulamak için, KeyId iletiye eklenen sıkıştırılmış imzada belirtilen, belirtilen depodan bir sertifika seçmek için kullanılır. İletide imza yoksa veya imza denetimi başarısız olursa, iletiler bırakılır. Güvenli bağlamayı kullanmak için, örnek güvenli bulma bağlama öğesi eklenmiş özel UdpDiscoveryEndpoint ve UdpAnnouncementEndpoint oluşturan bir fabrika tanımlar. Bu güvenli uç noktalar bulma duyurusu dinleyicilerinde ve bulunabilir hizmetlerde kullanılabilir.
Örnek Ayrıntılar
Örnek bir kitaplık ve 4 konsol uygulaması içerir:
DiscoverySecurityChannels: Güvenli bağlamayı kullanıma sunan bir kitaplık. Kitaplık, giden/gelen iletiler için sıkıştırılmış imzayı hesaplar ve doğrular.
Hizmet: ICalculatorService sözleşmesini sağlayan, kendi kendine barındırılan bir hizmet. Hizmet, Bulunabilir olarak işaretlenir. Kullanıcı, depolama konumunu ve adını, sertifikanın konu adını veya diğer benzersiz tanımlayıcısını ve istemci sertifikalarının bulunduğu depoyu (gelen iletilerin imzasını denetlemek için kullanılan sertifikalar) belirterek iletileri imzalamak için kullanılan sertifikanın ayrıntılarını belirtir. Bu ayrıntılara dayanarak, ek güvenlik içeren bir UdpDiscoveryEndpoint oluşturulur ve kullanılır.
İstemci: Bu sınıf bir ICalculatorService bulmayı ve hizmetteki yöntemleri çağırmayı dener. Yeniden, ek güvenlik içeren bir UdpDiscoveryEndpoint oluşturulur ve iletileri imzalamak ve doğrulamak için kullanılır.
AnnouncementListener: Çevrimiçi ve çevrimdışı duyuruları dinleyen ve güvenli duyuru uç noktasını kullanan kendinden barındırılan bir hizmet.
Uyarı
Setup.bat birden çok kez çalıştırılırsa, yinelenen sertifikalar olduğundan sertifika yöneticisi eklenecek sertifikayı seçmenizi ister. Bu durumda, yinelemeler zaten oluşturulduğundan Setup.bat durdurulmalı ve Cleanup.bat çağrılmalıdır. Cleanup.bat ayrıca silinecek bir sertifika seçmenizi ister. Listeden bir sertifika seçin ve hiçbir sertifika kalmayıncaya kadar Cleanup.bat yürütmeye devam edin.
Bu örneği kullanmak için
Visual Studio için Geliştirici Komut İsteminden Setup.bat betiği yürütülür. Örnek, iletileri imzalamak ve doğrulamak için sertifikaları kullanır. Betik, Makecert.exe kullanarak sertifikaları oluşturur ve Certmgr.exekullanarak yükler. Betik mutlaka yönetici yetkisiyle çalıştırılmalıdır.
Örneği derlemek ve çalıştırmak için Visual Studio'da Security.sln dosyasını açın ve Tümünü Yeniden Derle'yi seçin. Birden çok proje başlatmak için çözüm özelliklerini güncelleştirin: DiscoverySecureChannels dışındaki tüm projeler için Başlat'ı seçin. Çözümü normal şekilde çalıştırın.
Örneği tamamladıktan sonra, bu örnek için oluşturulan sertifikaları kaldıran Cleanup.bat betiğini yürütebilirsiniz.