Holographic Uzaktan İletişim ve Windows Mixed Reality API'siyle Güvenli Bağlantı
Bağlantı güvenliğini etkinleştirmek istiyorsanız özel uzak ve oynatıcı uygulamaları uygulamanız gerektiğini unutmayın. Sağlanan örnekleri kendi uygulamalarınız için başlangıç noktası olarak kullanabilirsiniz.
Güvenliği etkinleştirmek için, uzaktan iletişim bağlantısını kurmak yerine yerine öğesini ConnectSecure()
çağırın.ListenSecure()
Listen()
Connect()
Bu çağrılar, güvenlikle ilgili bilgileri sağlamak ve doğrulamak için belirli arabirimlerin uygulamalarını sağlamanızı gerektirir:
- Sunucunun bir sertifika sağlayıcısı ve kimlik doğrulama doğrulayıcısı uygulaması gerekir
- İstemcinin bir kimlik doğrulama sağlayıcısı ve sertifika doğrulayıcı uygulaması gerekir.
Tüm arabirimler, bir geri çağırma nesnesini parametre olarak alan eylem gerçekleştirmenizi isteyen bir işleve sahiptir. Bu nesneyi kullanarak, isteğin zaman uyumsuz işlenmesini kolayca uygulayabilirsiniz. Bu nesneye bir başvuru tutun ve zaman uyumsuz eylem tamamlandığında tamamlama işlevini çağırın. Tamamlama işlevi herhangi bir iş parçacığından çağrılabilir.
İpucu
WinRT arabirimlerini uygulamak C++/WinRT kullanılarak kolayca yapılabilir. C++/WinRT ile YAZMA API'leri bölümü bunu ayrıntılı olarak açıklar.
Önemli
build\native\include\HolographicAppRemoting\Microsoft.Holographic.AppRemoting.idl
NuGet paketinin içinde güvenli bağlantılarla ilgili API için ayrıntılı belgeler bulunur.
Sertifika sağlayıcısı uygulama
Sertifika sağlayıcıları, sunucu uygulamasına kullanılacak sertifikayı sağlar. Uygulama iki bölümden oluşur:
Arabirimini uygulayan
ICertificate
bir sertifika nesnesi:GetCertificatePfx()
birPKCS#12
sertifika deposunun ikili içeriğini döndürmelidir. Bir.pfx
dosya veri içerdiğindenPKCS#12
içeriği doğrudan burada kullanılabilir.GetSubjectName()
kullanılacak sertifikayı tanımlayan kolay adı döndürmelidir. Sertifikaya kolay ad atanmamışsa, bu işlev sertifikanın konu adını döndürmelidir.GetPfxPassword()
sertifika depoyu açmak için gereken parolayı (veya parola gerekmiyorsa boş bir dizeyi) döndürmelidir.
Arabirimi uygulayan
ICertificateProvider
bir sertifika sağlayıcısı:GetCertificate()
bir sertifika nesnesi oluşturup geri çağırma nesnesi üzerinde çağırarakCertificateReceived()
döndürmelidir.
Kimlik doğrulama doğrulayıcı uygulama
Kimlik doğrulama doğrulayıcıları, istemci tarafından gönderilen kimlik doğrulama belirtecini alır ve doğrulama sonucuyla yanıt verir.
IAuthenticationReceiver
Arabirimi aşağıdaki gibi uygulayın:
GetRealm()
kimlik doğrulama alanının adını (uzaktan iletişim bağlantısı el sıkışması sırasında kullanılan http bölgesi) döndürmelidir.ValidateToken()
istemci kimlik doğrulama belirtecini doğrulamalı ve doğrulama sonucuyla geri çağırma nesnesinde çağrısıValidationCompleted()
yapmalıdır.
Kimlik doğrulama sağlayıcısı uygulama
Kimlik doğrulama sağlayıcıları, sunucuya gönderilecek kimlik doğrulama belirtecini oluşturur veya alır.
IAuthenticationProvider
Arabirimi aşağıdaki gibi uygulayın:
GetToken()
gönderilecek kimlik doğrulama belirtecini oluşturmalıdır veya almalıdır. Belirteç hazır olduğunda geri çağırma nesnesinde yöntemini çağırınTokenReceived()
.
Sertifika doğrulayıcı uygulama
Sertifika doğrulayıcıları, sunucu tarafından gönderilen sertifika zincirini alır ve sunucuya güvenilip güvenilemeyeceğini belirler.
Sertifikaları doğrulamak için, temel alınan sistemin doğrulama mantığını kullanabilirsiniz. Bu sistem doğrulaması kendi doğrulama mantığınızı destekleyebilir veya tamamen değiştirebilir. Güvenli bağlantı isteğinde bulunurken kendi sertifika doğrulayıcınızı geçirmezseniz sistem doğrulaması otomatik olarak kullanılır.
Windows'da sistem doğrulaması şunları denetler:
- Sertifika zincirinin bütünlüğü: sertifikalar, güvenilir bir kök sertifikayla biten tutarlı bir zincir oluşturur
- Sertifika geçerliliği: Sunucunun sertifikası geçerlilik süresi içindedir ve sunucu kimlik doğrulaması için verilir
- İptal: Sertifika iptal edilmemiş
- Ad eşleşmesi: Sunucunun ana bilgisayar adı, sertifikanın verildiği ana bilgisayar adlarından biriyle eşleşir
ICertificateValidator
Arabirimi aşağıdaki gibi uygulayın:
PerformSystemValidation()
yukarıda açıklandığı gibi bir sistem doğrulaması gerçekleştirilecekse döndürmelidirtrue
. Bu durumda, sistem doğrulama sonucu yöntemineValidateCertificate()
giriş olarak geçirilir.ValidateCertificate()
sertifika zincirini doğrulamalı ve son doğrulama sonucuyla geçirilen geri çağırmayı çağırmalıdırCertificateValidated()
. Bu yöntem sertifika zincirini, bağlantının kurulmakta olduğu sunucunun adını ve iptal denetiminin zorlanıp zorlanmayacağını kabul eder. Sertifika zinciri birden çok sertifika içeriyorsa, ilki konu sertifikasıdır.
Not
Kullanım örneğiniz farklı bir doğrulama biçimi gerektiriyorsa (yukarıdaki sertifika kullanım örneği #1'e bakın), sistem doğrulamayı tamamen atla. Bunun yerine, sertifika zincirinin kodunu çözmek ve kullanım örneğiniz için gereken denetimleri gerçekleştirmek için DER ile kodlanmış X.509 sertifikalarını işleyebilen herhangi bir API veya kitaplık kullanın.