Biztonságos kapcsolat a Holographic Remoting és a Windows Mixed Reality API használatával

Ne feledje, hogy egyéni távoli és lejátszóalkalmazásokat kell implementálnia, ha engedélyezni szeretné a kapcsolat biztonságát. A megadott mintákat kiindulási pontként használhatja saját alkalmazásaihoz.

A biztonság engedélyezéséhez hívja ListenSecure() meg a parancsot a Listen()helyett, és ConnectSecure() a Connect() helyett a távoli kapcsolat létrehozásához.

Ezekhez a hívásokhoz bizonyos interfészek implementációit kell megadnia a biztonsággal kapcsolatos információk biztosításához és érvényesítéséhez:

  • A kiszolgálónak tanúsítványszolgáltatót és hitelesítés-érvényesítőt kell implementálnia
  • Az ügyfélnek egy hitelesítési szolgáltatót és egy tanúsítvány-érvényesítőt kell implementálnia.

Minden csatoló rendelkezik egy olyan függvénnyel, amely beavatkozást kér, amely egy visszahívási objektumot fogad paraméterként. Ezzel az objektummal egyszerűen implementálhatja a kérés aszinkron kezelését. Őrizze meg az objektumra mutató hivatkozást, és hívja meg a befejezési függvényt, ha az aszinkron művelet befejeződött. A befejezési függvény bármely szálból meghívható.

Tipp

A WinRT-felületek implementálása egyszerűen elvégezhető a C++/WinRT használatával. A C++/WinRT kóddal rendelkező Szerzői API-k című fejezet részletesen ismerteti ezt.

Fontos

A build\native\include\HolographicAppRemoting\Microsoft.Holographic.AppRemoting.idl NuGet-csomagon belül található a biztonságos kapcsolatokhoz kapcsolódó API részletes dokumentációja.

Tanúsítványszolgáltató implementálása

A tanúsítványszolgáltatók biztosítják a kiszolgálóalkalmazásnak a használni kívánt tanúsítványt. A megvalósítás két részből áll:

  1. Egy tanúsítványobjektum, amely megvalósítja a ICertificate felületet:

    • GetCertificatePfx() egy tanúsítványtároló bináris tartalmát PKCS#12 kell visszaadnia. A .pfx fájlok adatokat tartalmaznak PKCS#12 , így tartalma közvetlenül itt használható.
    • GetSubjectName() A felhasználóbarát nevet kell visszaadnia, amely azonosítja a használni kívánt tanúsítványt. Ha a tanúsítványhoz nincs felhasználóbarát név rendelve, ennek a függvénynek a tanúsítvány tulajdonosának nevét kell visszaadnia.
    • GetPfxPassword() a tanúsítványtároló megnyitásához szükséges jelszót kell visszaadnia (vagy egy üres sztringet, ha nincs szükség jelszóra).
  2. A felületet megvalósító ICertificateProvider tanúsítványszolgáltató:

    • GetCertificate() létre kell állítania egy tanúsítványobjektumot, és vissza kell állítania a visszahívási objektum meghívásával CertificateReceived() .

Hitelesítési érvényesítő implementálása

A hitelesítés-érvényesítők megkapják az ügyfél által küldött hitelesítési jogkivonatot, és az érvényesítési eredményekkel válaszolnak vissza.

Implementálja a felületet az IAuthenticationReceiver alábbiak szerint:

  • GetRealm() a hitelesítési tartomány nevét kell visszaadnia (a kapcsolati kézfogás során használt HTTP-tartományt).
  • ValidateToken() ellenőriznie kell az ügyfél-hitelesítési jogkivonatot, és meg kell hívnia ValidationCompleted() a visszahívási objektumot az érvényesítési eredménnyel.

Hitelesítési szolgáltató implementálása

A hitelesítésszolgáltatók létrehoznak vagy lekérnek egy hitelesítési jogkivonatot, amelyet a kiszolgálóra kell küldeni.

Implementálja a felületet az IAuthenticationProvider alábbiak szerint:

  • GetToken() hozza létre vagy kérje le az elküldendő hitelesítési jogkivonatot. Ha a jogkivonat elkészült, hívja meg a metódust TokenReceived() a visszahívási objektumon.

Tanúsítvány-érvényesítő implementálása

A tanúsítvány-érvényesítők megkapják a kiszolgáló által küldött tanúsítványláncot, és meghatározzák, hogy a kiszolgáló megbízható-e.

A tanúsítványok érvényesítéséhez használhatja az alapul szolgáló rendszer érvényesítési logikáját. Ez a rendszerérvényesítés támogathatja a saját érvényesítési logikáját, vagy teljes egészében lecserélheti azt. Ha nem adja át a saját tanúsítvány-érvényesítőt a biztonságos kapcsolat kérésekor, a rendszer automatikusan érvényesíti a rendszert.

Windows rendszeren a rendszerérvényesítés a következőket ellenőrzi:

  • A tanúsítványlánc integritása: a tanúsítványok egy konzisztens láncot alkotnak, amely egy megbízható főtanúsítványra végződik
  • Tanúsítvány érvényessége: a kiszolgáló tanúsítványa az érvényességi időkereten belül van, és kiszolgálóhitelesítésre van kiállítva
  • Visszavonás: A tanúsítványt nem vonták vissza
  • Névegyeztetés: A kiszolgáló állomásneve megegyezik az egyik gazdagépnévvel, amelyre a tanúsítványt kiállították

Implementálja a felületet az ICertificateValidator alábbiak szerint:

  • PerformSystemValidation() akkor kell visszaadnia true , ha a fent leírt rendszerérvényesítést végre kell hajtani. Ebben az esetben a rendszerérvényesítési eredmény a metódus bemeneteként lesz átadva ValidateCertificate() .
  • ValidateCertificate() ellenőriznie kell a tanúsítványláncot, majd meg kell hívnia CertificateValidated() az átadott visszahívást a végső érvényesítési eredménnyel. Ez a módszer elfogadja a tanúsítványláncot, annak a kiszolgálónak a nevét, amellyel a kapcsolatot létesíteni kell, valamint hogy kényszerítse-e a visszavonási ellenőrzést. Ha a tanúsítványlánc több tanúsítványt tartalmaz, az első a tulajdonos tanúsítványa.

Megjegyzés

Ha a használati esethez más típusú érvényesítés szükséges (lásd a fenti 1. tanúsítványhasználati esetet), teljes egészében megkerülheti a rendszerérvényesítést. Ehelyett használjon bármilyen API-t vagy kódtárat, amely képes a DER-kódolású X.509-tanúsítványok kezelésére a tanúsítványlánc dekódolásához és a használati esethez szükséges ellenőrzések végrehajtásához.

Lásd még: