Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Tenere presente che è necessario implementare app remote e player personalizzate se si vuole abilitare la sicurezza della connessione. È possibile usare gli esempi forniti come punti di partenza per le proprie app.
Per abilitare la sicurezza, chiamare ListenSecure() invece di Listen()e ConnectSecure() anziché Connect() stabilire la connessione remota.
Queste chiamate richiedono di fornire implementazioni di determinate interfacce per fornire e convalidare le informazioni relative alla sicurezza:
- Il server deve implementare un provider di certificati e un validator di autenticazione
- Il client deve implementare un provider di autenticazione e un validator di certificati.
Tutte le interfacce hanno una funzione che richiede di eseguire un'azione, che riceve un oggetto di callback come parametro. Usando questo oggetto, è possibile implementare facilmente la gestione asincrona della richiesta. Mantenere un riferimento a questo oggetto e chiamare la funzione di completamento al termine dell'azione asincrona. La funzione di completamento può essere chiamata da qualsiasi thread.
Suggerimento
L'implementazione di interfacce WinRT può essere eseguita facilmente usando C++/WinRT. Il capitolo Author APIs with C++/WinRT (Creare API con C++/WinRT ) descrive in dettaglio questo aspetto.
Importante
L'oggetto build\native\include\HolographicAppRemoting\Microsoft.Holographic.AppRemoting.idl all'interno del pacchetto NuGet contiene documentazione dettagliata per l'API correlata alle connessioni sicure.
Implementazione di un provider di certificati
I provider di certificati forniscono all'applicazione server il certificato da usare. L'implementazione è costituita da due parti:
Oggetto certificato che implementa l'interfaccia
ICertificate:-
GetCertificatePfx()deve restituire il contenuto binario di unPKCS#12archivio certificati. Un.pfxfile contienePKCS#12dati, quindi il relativo contenuto può essere usato direttamente qui. -
GetSubjectName()deve restituire il nome descrittivo che identifica il certificato da usare. Se al certificato non viene assegnato alcun nome descrittivo, questa funzione deve restituire il nome soggetto del certificato. -
GetPfxPassword()deve restituire la password necessaria per aprire l'archivio certificati (o una stringa vuota se non è necessaria alcuna password).
-
Provider di certificati che implementa l'interfaccia
ICertificateProvider:-
GetCertificate()deve costruire un oggetto certificato e restituirlo chiamandoCertificateReceived()sull'oggetto callback.
-
Implementazione di un validator di autenticazione
I validator di autenticazione ricevono il token di autenticazione inviato dal client e rispondono con il risultato della convalida.
Implementare l'interfaccia IAuthenticationReceiver come indicato di seguito:
-
GetRealm()deve restituire il nome dell'area di autenticazione (un'area di autenticazione HTTP usata durante l'handshake della connessione remota). -
ValidateToken()deve convalidare il token di autenticazione client e chiamareValidationCompleted()l'oggetto callback con il risultato della convalida.
Implementazione di un provider di autenticazione
I provider di autenticazione generano o recuperano il token di autenticazione da inviare al server.
Implementare l'interfaccia IAuthenticationProvider come indicato di seguito:
-
GetToken()deve generare o recuperare il token di autenticazione da inviare. Quando il token è pronto, chiamare ilTokenReceived()metodo sull'oggetto di callback.
Implementazione di un validator di certificati
I validator di certificati ricevono la catena di certificati inviata dal server e determinano se il server può essere considerato attendibile.
Per convalidare i certificati, è possibile usare la logica di convalida del sistema sottostante. Questa convalida del sistema può supportare la logica di convalida personalizzata o sostituirla completamente. Se non si passa un validator di certificato personalizzato quando si richiede una connessione sicura, la convalida del sistema verrà usata automaticamente.
In Windows, la convalida del sistema verificherà la presenza di:
- Integrità della catena di certificati: i certificati costituiscono una catena coerente che termina con un certificato radice attendibile
- Validità del certificato: il certificato del server rientra nell'intervallo di validità e viene emesso per l'autenticazione server
- Revoca: il certificato non è stato revocato
- Corrispondenza del nome: il nome host del server corrisponde a uno dei nomi host per cui è stato emesso il certificato
Implementare l'interfaccia ICertificateValidator come indicato di seguito:
-
PerformSystemValidation()deve restituiretruese deve essere eseguita una convalida di sistema come descritto in precedenza. In questo caso, il risultato della convalida del sistema viene passato come input alValidateCertificate()metodo . -
ValidateCertificate()deve convalidare la catena di certificati e quindi chiamareCertificateValidated()il callback passato con il risultato finale della convalida. Questo metodo accetta la catena di certificati, il nome del server in cui viene stabilita la connessione e se è necessario forzare un controllo di revoca. Se la catena di certificati contiene più certificati, il primo è il certificato soggetto.
Nota
Se il caso d'uso richiede una forma diversa di convalida (vedere il caso d'uso del certificato n. 1 precedente), ignorare completamente la convalida del sistema. Usare invece qualsiasi API o libreria in grado di gestire certificati X.509 con codifica DER per decodificare la catena di certificati ed eseguire i controlli necessari per il caso d'uso.