Windows Phone 푸시 알림 서비스로 인증된 메시지를 보내는 방법
최초 문서 게시일: 2012년 6월 5일 화요일
푸시 알림 서비스는 Windows Phone 응용 프로그램에 대해 알림 메시지를 보내거나 라이브 타일을 업데이트하는 등의 작업을 수행할 수 있도록 하는 Windows Phone의 유용한 기능입니다. 추가 전송 보안 프로토콜 없이도 이 서비스를 사용할 수 있지만, 이 경우에는 하루에 메시지를 500개까지만 보낼 수 있습니다. 그러나 SSL을 사용하여 푸시 알림 서비스에 대한 상호 인증 세션을 설정하는 경우에는 메시지를 무제한으로 보낼 수 있습니다. 이 기능을 통해 대화의 보안을 훨씬 효율적으로 유지할 수 있습니다. 현재 이러한 메시지 보내기 프로세스에 대한 유용한 문서는 제공되지 않고 있는 실정입니다. 그러나 Windows Phone 앱 허브의 공개 포럼에서 유용한 정보가 다수 제공되므로 포럼을 통해 관련 정보를 확인할 수 있습니다. 이 메시지 보내기 프로세스에 대해 전반적으로 이해하기 위한 시간을 절약할 수 있도록 이 게시물에서는 모든 관련 정보를 요약하여 제공합니다. 제품 팀 소속이라면 이 정도는 해야겠죠? :-) 아래 내용을 참고하시기 바랍니다.
- 이 보안 통신을 설정하는 데 사용되는 인증서에 대한 요구 사항은 https://msdn.microsoft.com/ko-kr/library/ff941099(VS.92).aspx에서 확인할 수 있습니다. 해당 문서 내용을 일일이 확인하기가 어려운 분을 위해 요점만 말씀드리자면, 지원되는 인증 기관 중 하나의 SSL 인증서가 있으면 됩니다. 지원되는 인증 기관 목록은 https://msdn.microsoft.com/ko-kr/library/gg521150(VS.92).aspx를 참조하십시오.
- 이 인증서를 가져와서 앱 허브에 업로드해야 합니다. 개인 키가 포함된 PFX는 필요하지 않으며 인증서의 공용 버전(.cer 파일)만 있으면 됩니다. 인증서를 업로드하려면 앱 허브에 로그인한 다음 왼쪽 위의 계정 이름을 클릭합니다. 계정 관리 페이지가 표시되면 내 계정 배너 아래에 인증서라는 링크가 있을 것입니다. 해당 링크를 클릭하고 지시에 따라 인증서를 업로드합니다.
- Windows Phone 응용 프로그램에서 HttpNotificationChannel 클래스 인스턴스를 만듭니다. 새 HttpNotificationChannel을 만들 때는 SSL 인증서의 CN(일반 이름)을 새 채널의 두 번째 매개 변수로 사용합니다. 인증서의 일반 이름을 확인하려면 .cer 파일을 두 번 클릭하여 열고 자세히 탭을 클릭한 후에 주체 속성을 클릭합니다. 그러면 아래쪽 창에 값이 표시되며, 그 중 첫 번째 값이 "CN = www.contoso.com"과 같은 항목일 것입니다. 이 예제에서는 "www.contoso.com"만 사용하면 됩니다. 이 이름을 사용하여 만드는 새 채널은 pushChannel = new HttpNotificationChannel("myChannelName", "www.contoso.com");과 같습니다.
- 참고: 다른 장치용으로 채널을 이미 만든 경우에는 HttpNotificationChannel.Find 메서드를 사용하여 채널을 찾은 다음 채널에 대해 .Close 및 .Dispose를 수행해야 합니다. 그런 후에 연결과 일반 이름을 연관시킬 수 있도록 채널을 다시 만들어야 합니다.
- 서버 쪽 코드를 실행할 때는 개인 키가 포함된 인증서(.pfx 파일)를 설치해야 합니다. 또한 응용 프로그램 풀용 계정에 해당 인증서의 개인 키에 대한 액세스 권한이 있는지도 확인해야 합니다. 이렇게 하려면 MMC 도구를 열고 로컬 컴퓨터에 대해 인증서 스냅인을 추가합니다. 인증서를 개인 노드에 설치한 후 MMC에서 인증서를 마우스 오른쪽 단추로 클릭하고 모든 작업...개인 키 관리를 선택합니다. 그런 후 응용 프로그램에서 사용하는 응용 프로그램 풀에 대한 계정을 추가하고 키에 대한 읽기 이상의 권한을 해당 계정에 부여해야 합니다.
- 참고: ApplicationPoolIdentity와 같은 IIS 7.5의 새로운 기본 제공 계정을 사용하는 경우에는 IIS apppool\ASP.NET v4.0에 대한 액세스 권한을 부여해야 합니다. 여기서 "ASP.NET v4.0"은 응용 프로그램 풀의 이름입니다.
- 푸시 알림 서비스로 메시지를 보내는 코드에서 HttpWebRequest 개체에 인증서를 추가해야 합니다. 일반적으로 이 작업을 수행할 때는 X509 저장소를 열고, 내 저장소에 대한 인증서 컬렉션을 가져온 다음, 지문으로 컬렉션에 대한 찾기를 수행하고(인증서 지문을 인증서 속성에서 복사하여 코드에 붙여 넣어야 함), 반환되는 컬렉션(예: myCollection[0])의 첫 번째 인증서를 사용합니다. 인증서를 가져온 후에는 myRequest..ClientCertificates.Add(mySslCertificate);와 같이 요청에 추가할 수 있습니다.
다음과 같은 두 가지 중요한 추가 참고 사항이 있습니다.
- 업로드하는 인증서는 4개월 동안만 사용됩니다. 인증서를 사용하는 인증용 응용 프로그램을 마켓플레이스로 전송하지 않으면 인증서를 다시 업로드해야 합니다. 인증용 응용 프로그램을 마켓플레이스로 전송하면 이전에 업로드한 인증서 목록에서 해당 응용 프로그램용 인증서를 선택할 수 있습니다. 이러한 통신용으로 업로드한 인증서를 선택하면 됩니다.
- 이 통신이 작동하는지는 어떻게 확인할 수 있을까요? Windows Phone 클라이언트에서 HttpNotificationChannel 클래스 인스턴스를 만들면 메시지를 보낼 알림 채널 URI가 반환됩니다. 해당 URI를 잘 살펴보십시오. 인증된 연결을 사용하고 있지 않으면 경로에 "throttledthirdparty"가 포함되어 있을 것입니다. 그러나 클래스 인스턴스를 올바르게 만든 경우에는 경로에 "unthrottledthirdparty"가 포함되며 프로토콜이 HTTP가 아닌 HTTPS로 표시됩니다. 물론 통신이 작동하는지를 확실하게 확인하려면 URI가 반환된 후 메시지를 정상적으로 보낼 수 있는지를 확인해야 합니다. 메시지가 장치에 도착하면 통신이 작동하는 것입니다.
이 문서는 번역된 블로그 게시물입니다. 원본 문서는 How To Send An Authenticated Message to the Windows Phone Push Notification Service를 참조하십시오.