共用方式為


使用全像攝影遠端處理和 Windows Mixed Reality API 的安全連線

請記住,如果您想要啟用連線安全性,就必須實作自定義遠端和播放機應用程式。 您可以使用提供的範例作為您自己應用程式的起點。

若要啟用安全性,請呼叫 ,而不是Listen()呼叫 ListenSecure()ConnectSecure()而不是 Connect() 建立遠端連線。

這些呼叫需要您提供特定介面的實作,以提供和驗證安全性相關信息:

  • 伺服器必須實作憑證提供者和驗證驗證程式
  • 用戶端必須實作驗證提供者和憑證驗證程式。

所有介面都有函式,要求您採取動作,以接收回呼對象作為參數。 使用此物件,您可以輕鬆地實作要求的異步處理。 保留這個對象的參考,並在異步動作完成時呼叫完成函式。 您可以從任何線程呼叫完成函式。

提示

您可以使用 C++/WinRT 輕鬆地實作 WinRT 介面。 使用 C++/WinRT 撰寫 API 一章會詳細說明這一點。

重要事項

build\native\include\HolographicAppRemoting\Microsoft.Holographic.AppRemoting.idl NuGet 套件內的 包含與安全連線相關的 API 詳細檔。

實作憑證提供者

憑證提供者為伺服器應用程式提供要使用的憑證。 實作包含兩個部分:

  1. 實作 介面的 ICertificate 憑證物件:

    • GetCertificatePfx() 應該會傳回證書存儲的 PKCS#12 二進位內容。 .pfx檔案包含PKCS#12數據,因此其內容可以直接在這裡使用。
    • GetSubjectName() 應該傳回識別要使用之憑證的易記名稱。 如果未將易記名稱指派給憑證,此函式應該會傳回憑證的主體名稱。
    • GetPfxPassword() 應該傳回開啟證書存儲 (所需的密碼,如果不需要密碼,則應該傳回空字串) 。
  2. 實作 介面的 ICertificateProvider 憑證提供者:

    • GetCertificate() 應該建構憑證物件,並在回呼物件上呼叫 CertificateReceived() 來傳回它。

實作驗證驗證程式

驗證驗證程式會接收用戶端所傳送的驗證令牌,並以驗證結果回復。

實作 介面, IAuthenticationReceiver 如下所示:

  • GetRealm() 應該傳回驗證領域名稱, (遠端連線交握) 期間使用的 HTTP 領域。
  • ValidateToken() 應該驗證客戶端驗證令牌,並使用驗證結果呼叫 ValidationCompleted() 回呼物件。

實作驗證提供者

驗證提供者會產生或擷取要傳送至伺服器的驗證令牌。

實作 介面, IAuthenticationProvider 如下所示:

  • GetToken() 應該產生或擷取要傳送的驗證令牌。 一旦令牌就緒,請在回呼物件上呼叫 TokenReceived() 方法。

實作憑證驗證程式

憑證驗證程式會接收伺服器所傳送的憑證鏈結,並判斷是否可以信任伺服器。

若要驗證憑證,您可以使用基礎系統的驗證邏輯。 此系統驗證可以支援您自己的驗證邏輯,或完全取代它。 如果您在要求安全連線時未傳遞自己的憑證驗證程式,系統驗證將會自動使用。

在 Windows 上,系統驗證會檢查下列專案:

  • 憑證鏈結的完整性:憑證會形成以受信任跟證書結尾的一致鏈結
  • 憑證有效性:伺服器的憑證在其有效時間範圍內,且會針對伺服器驗證發出
  • 撤銷:憑證尚未撤銷
  • 名稱比對:伺服器的主機名符合憑證簽發的其中一個主機名

實作 介面, ICertificateValidator 如下所示:

  • PerformSystemValidation() 如果應執行如上所述的系統驗證,則應該傳回 true 。 在此情況下,系統驗證結果會傳遞為 方法的 ValidateCertificate() 輸入。
  • ValidateCertificate() 應該驗證憑證鏈結,然後以 CertificateValidated() 最終驗證結果呼叫傳遞的回呼。 這個方法會接受憑證鏈結、要建立連線的伺服器名稱,以及是否應該強制撤銷檢查。 如果憑證鏈結包含多個憑證,則第一個憑證是主體憑證。

注意事項

如果您的使用案例需要不同形式的驗證 (請參閱上述憑證使用案例 #1) ,請完全略過系統驗證。 請改用任何可以處理 DER 編碼 X.509 憑證的 API 或連結庫來譯碼憑證鏈結,並執行使用案例所需的檢查。

另請參閱