Share via


연결의 보안을 유지하고 요청을 인증하는 방법(HTML)

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

이 항목에서는 Windows 런타임 앱이 연결의 보안을 유지하고 보안된 네트워크 연결 설정 및 사용에 필요한 인증 자격 증명을 제공하도록 하기 위해 Windows 런타임에서 사용하는 주요 방법에 대해 간략하게 설명합니다.

기술

보안 소켓 연결 만들기

SSL(Secure Sockets Layer) 및 더 최근의 TLS(전송 계층 보안)는 네트워크 통신에 인증 및 암호화를 제공하도록 설계된 암호화 프로토콜입니다. 이러한 프로토콜은 네트워크 데이터를 보내고 받을 때 도청 및 변조를 방지하도록 설계되었습니다. 이러한 프로토콜은 프로토콜 교환에 클라이언트-서버 모델을 사용합니다. 이러한 프로토콜은 또한 디지털 인증서 및 인증 기관을 사용하여 서버가 인증이 필요한 개체인지 확인합니다. TLS 프로토콜에 대해서는 IETF RFC 5246에 설명되어 있습니다. 이전의 SSL 프로토콜은 Netscape Communications의 문서에 기록되어 있습니다. SSL은 일반적으로 이러한 프로토콜을 모두 나타내는 데 사용됩니다.

클라이언트와 서버 간 통신에 SSL/TLS를 사용하도록 StreamSocket 개체를 구성할 수 있습니다. SSL/TLS에 대한 이 지원은 클라이언트가 SSL/TLS 협상 중일 때 StreamSocket 개체를 사용하는 것으로 제한됩니다. 서버로서의 SSL/TLS 협상이 StreamSocket에 대해 구현되어 있지 않으므로 연결을 받을 때 StreamSocket이 생성되는 StreamSocketListener가 현재 SSL/TLS를 통해 StreamSocket에서 SSL/TLS를 사용하도록 설정할 수 없습니다.

네트워크 서비스에 대한 보안 소켓 연결을 만들거나 해당 연결로 업그레이드하는 방법에 대한 예는 TLS/SSL을 통해 소켓 연결의 보안을 유지하는 방법을 참조하세요.

보안 WebSocket 연결 만들기

기존 소켓 연결과 마찬가지로 WebSocket 연결도 Windows 스토어 앱용 Windows 8에서 StreamWebSocketMessageWebSocket 기능을 사용할 경우 TLS(전송 계층 보안)/SSL(Secure Sockets Layer)을 통해 암호화할 수 있습니다. 대부분의 경우 보안 WebSocket 연결을 사용합니다. 이 경우 많은 프록시가 암호화되지 않은 WebSocket 연결을 거부하므로 연결이 성공할 가능성이 높아집니다.

네트워크 서비스에 대한 보안 소켓 연결을 만들거나 해당 연결로 업그레이드하는 방법에 대한 예는 TLS/SSL을 통해 WebSocket 연결의 보안을 유지하는 방법을 참조하세요.

서버에서 초기 핸드셰이크를 완료하려면 TLS/SSL 암호화 외에도 Sec-WebSocket-Protocol 헤더 값이 필요할 수 있습니다. StreamWebSocketInformation.ProtocolMessageWebSocketInformation.Protocol 속성으로 표시되는 이 값은 연결의 프로토콜 버전을 나타내며 서버에서 여는 핸드셰이크 및 나중에 교환할 데이터를 올바르게 해석할 수 있도록 합니다. 이 프로토콜 정보를 사용하면 서버가 들어오는 데이터를 안전한 방식으로 해석할 수 없는 모든 지점에서 연결을 닫을 수 있습니다.

클라이언트의 초기 요청에 이 값이 포함되어 있지 않거나 서버에서 예상하는 값과 일치하지 않는 값을 제공하면 WebSocket 핸드셰이크 오류 시 예상한 값이 서버에서 클라이언트로 전송됩니다.

웹 서비스에 인증 자격 증명 제공

Windows 런타임 앱이 보안 웹 서비스와 상호 작용할 수 있도록 하는 Windows 런타임 네트워킹 API는 각각 서버 및 프록시 인증 자격 증명으로 클라이언트를 초기화하거나 요청 헤더를 설정하는 고유한 메서드를 제공합니다. 각 메서드는 이러한 자격 증명이 사용되는 사용자 이름, 암호 및 리소스를 나타내는 PasswordCredential 개체로 설정됩니다. 다음 표에서는 이러한 API의 매핑을 제공합니다.

WebSockets

Background Transfer

Syndication

AtomPub

 

관련 항목

TLS/SSL을 통해 소켓 연결의 보안을 유지하는 방법

TLS/SSL을 통해 WebSocket 연결의 보안을 유지하는 방법

네트워크 서비스에 연결