홀로그램 원격 및 Windows Mixed Reality API를 사용하여 보안 연결
연결 보안을 사용하려면 사용자 지정 원격 및 플레이어 앱을 구현해야 합니다. 제공된 샘플을 사용자 고유의 앱의 시작점으로 사용할 수 있습니다.
보안을 사용하도록 설정하려면 대신 를 호출하고 ConnectSecure()
Connect()
대신 를 호출 ListenSecure()
Listen()
하여 원격 연결을 설정합니다.
이러한 호출을 사용하려면 보안 관련 정보를 제공하고 유효성을 검사하기 위해 특정 인터페이스의 구현을 제공해야 합니다.
- 서버는 인증서 공급자 및 인증 유효성 검사기를 구현해야 합니다.
- 클라이언트는 인증 공급자 및 인증서 유효성 검사기를 구현해야 합니다.
모든 인터페이스에는 콜백 개체를 매개 변수로 수신하는 작업을 수행하도록 요청하는 함수가 있습니다. 이 개체를 사용하여 요청의 비동기 처리를 쉽게 구현할 수 있습니다. 이 개체에 대한 참조를 유지하고 비동기 작업이 완료되면 완료 함수를 호출합니다. 완료 함수는 모든 스레드에서 호출될 수 있습니다.
팁
WinRT 인터페이스 구현은 C++/WinRT를 사용하여 쉽게 수행할 수 있습니다. C++/WinRT를 사용하는 작성자 API 챕터에서는 이를 자세히 설명합니다.
중요
build\native\include\HolographicAppRemoting\Microsoft.Holographic.AppRemoting.idl
NuGet 패키지 내부의 에는 보안 연결과 관련된 API에 대한 자세한 설명서가 포함되어 있습니다.
인증서 공급자 구현
인증서 공급자는 서버 애플리케이션에 사용할 인증서를 제공합니다. 구현은 다음 두 부분으로 구성됩니다.
인터페이스를 구현
ICertificate
하는 인증서 개체:GetCertificatePfx()
는 인증서 저장소의PKCS#12
이진 콘텐츠를 반환해야 합니다. 파일에는.pfx
PKCS#12
데이터가 포함되어 있으므로 해당 콘텐츠는 여기에서 직접 사용할 수 있습니다.GetSubjectName()
은 사용할 인증서를 식별하는 식별 이름을 반환해야 합니다. 인증서에 이름이 할당되지 않은 경우 이 함수는 인증서의 주체 이름을 반환해야 합니다.GetPfxPassword()
는 인증서 저장소를 여는 데 필요한 암호를 반환해야 합니다(또는 암호가 필요하지 않은 경우 빈 문자열).
인터페이스를 구현하는
ICertificateProvider
인증서 공급자:GetCertificate()
는 인증서 개체를 생성하고 콜백 개체에서 를 호출CertificateReceived()
하여 반환해야 합니다.
인증 유효성 검사기 구현
인증 유효성 검사기는 클라이언트에서 보낸 인증 토큰을 수신하고 유효성 검사 결과로 다시 응답합니다.
다음과 같이 인터페이스를 IAuthenticationReceiver
구현합니다.
GetRealm()
는 인증 영역의 이름(원격 연결 핸드셰이크 중에 사용되는 HTTP 영역)을 반환해야 합니다.ValidateToken()
는 클라이언트 인증 토큰의 유효성을 검사하고 유효성 검사 결과를 사용하여 콜백 개체에서 를 호출ValidationCompleted()
해야 합니다.
인증 공급자 구현
인증 공급자는 서버로 보낼 인증 토큰을 생성하거나 검색합니다.
다음과 같이 인터페이스를 IAuthenticationProvider
구현합니다.
GetToken()
은 전송할 인증 토큰을 생성하거나 검색해야 합니다. 토큰이 준비되면 콜백 개체에서TokenReceived()
메서드를 호출합니다.
인증서 유효성 검사기 구현
인증서 유효성 검사기는 서버에서 보낸 인증서 체인을 수신하고 서버를 신뢰할 수 있는지 여부를 확인합니다.
인증서의 유효성을 검사하려면 기본 시스템의 유효성 검사 논리를 사용할 수 있습니다. 이 시스템 유효성 검사는 사용자 고유의 유효성 검사 논리를 지원하거나 완전히 바꿀 수 있습니다. 보안 연결을 요청할 때 자체 인증서 유효성 검사기를 전달하지 않으면 시스템 유효성 검사가 자동으로 사용됩니다.
Windows에서 시스템 유효성 검사는 다음을 위해 검사.
- 인증서 체인의 무결성: 인증서는 신뢰할 수 있는 루트 인증서에서 끝나는 일관된 체인을 형성합니다.
- 인증서 유효성: 서버의 인증서가 유효 시간 범위 내에 있으며 서버 인증을 위해 발급됩니다.
- 해지: 인증서가 해지되지 않았습니다.
- 이름 일치: 서버의 호스트 이름이 인증서가 발급된 호스트 이름 중 하나와 일치합니다.
다음과 같이 인터페이스를 ICertificateValidator
구현합니다.
PerformSystemValidation()
는 위에서 설명한 대로 시스템 유효성 검사를 수행해야 하는 경우 를 반환true
해야 합니다. 이 경우 시스템 유효성 검사 결과가 메서드에 대한 입력ValidateCertificate()
으로 전달됩니다.ValidateCertificate()
는 인증서 체인의 유효성을 검사한 다음 최종 유효성 검사 결과를 사용하여 전달된 콜백에서 를 호출CertificateValidated()
해야 합니다. 이 메서드는 인증서 체인, 연결이 설정된 서버의 이름 및 해지 검사 강제 적용해야 하는지 여부를 허용합니다. 인증서 체인에 여러 인증서가 포함된 경우 첫 번째 인증서는 주체 인증서입니다.
참고
사용 사례에 다른 형식의 유효성 검사가 필요한 경우(위의 인증서 사용 사례 #1 참조) 시스템 유효성 검사를 완전히 무시합니다. 대신 DER로 인코딩된 X.509 인증서를 처리할 수 있는 API 또는 라이브러리를 사용하여 인증서 체인을 디코딩하고 사용 사례에 필요한 검사를 수행합니다.