홀로그램 원격 및 Windows Mixed Reality API를 사용하여 보안 연결

연결 보안을 사용하려면 사용자 지정 원격 및 플레이어 앱을 구현해야 합니다. 제공된 샘플을 사용자 고유의 앱의 시작점으로 사용할 수 있습니다.

보안을 사용하도록 설정하려면 대신 를 호출하고 ConnectSecure()Connect() 대신 를 호출 ListenSecure()Listen()하여 원격 연결을 설정합니다.

이러한 호출을 사용하려면 보안 관련 정보를 제공하고 유효성을 검사하기 위해 특정 인터페이스의 구현을 제공해야 합니다.

  • 서버는 인증서 공급자 및 인증 유효성 검사기를 구현해야 합니다.
  • 클라이언트는 인증 공급자 및 인증서 유효성 검사기를 구현해야 합니다.

모든 인터페이스에는 콜백 개체를 매개 변수로 수신하는 작업을 수행하도록 요청하는 함수가 있습니다. 이 개체를 사용하여 요청의 비동기 처리를 쉽게 구현할 수 있습니다. 이 개체에 대한 참조를 유지하고 비동기 작업이 완료되면 완료 함수를 호출합니다. 완료 함수는 모든 스레드에서 호출될 수 있습니다.

WinRT 인터페이스 구현은 C++/WinRT를 사용하여 쉽게 수행할 수 있습니다. C++/WinRT를 사용하는 작성자 API 챕터에서는 이를 자세히 설명합니다.

중요

build\native\include\HolographicAppRemoting\Microsoft.Holographic.AppRemoting.idl NuGet 패키지 내부의 에는 보안 연결과 관련된 API에 대한 자세한 설명서가 포함되어 있습니다.

인증서 공급자 구현

인증서 공급자는 서버 애플리케이션에 사용할 인증서를 제공합니다. 구현은 다음 두 부분으로 구성됩니다.

  1. 인터페이스를 구현 ICertificate 하는 인증서 개체:

    • GetCertificatePfx() 는 인증서 저장소의 PKCS#12 이진 콘텐츠를 반환해야 합니다. 파일에는 .pfxPKCS#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 또는 라이브러리를 사용하여 인증서 체인을 디코딩하고 사용 사례에 필요한 검사를 수행합니다.

참고 항목