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:
Egy tanúsítványobjektum, amely megvalósítja a
ICertificate
felületet:GetCertificatePfx()
egy tanúsítványtároló bináris tartalmátPKCS#12
kell visszaadnia. A.pfx
fájlok adatokat tartalmaznakPKCS#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).
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ávalCertificateReceived()
.
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ívniaValidationCompleted()
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ódustTokenReceived()
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 visszaadniatrue
, 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 átadvaValidateCertificate()
.ValidateCertificate()
ellenőriznie kell a tanúsítványláncot, majd meg kell hívniaCertificateValidated()
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.