소개
Windows 통신 Foundation (WCF) 기능이 보안 된 메시지를 보내고 다음 보안 되지 않은 응답을 받을 수 또는 보안 되지 않은 메시지 보내기 및 보안 된 응답을 수신 하는 수 없습니다. 이 문서에 설명 되어 있는 핫픽스는 새 enableUnsecuredResponse 특성을 추가 합니다. EnableUnsecuredResponse 특성의 기본값은 false입니다. 이 특성의 값을 true로 설정한 경우 WCF에 다음과 같은 새로운 기능이 활성화 됩니다.
-
WCF 클라이언트는 보내는 메시지는 메시지 본문에 서명 하 고 보안 소켓 레이어 (SSL) 프로토콜을 사용 하 여 보호 되는 경우에 보안 되지 않은 응답을 받을 수 있습니다.
-
WCF 서비스 요청 보안을 유지 하는 경우에 보안 헤더에 없습니다 SOAP 봉투에 있는 보안 되지 않은 응답을 보낼 수 있습니다.
참고: EnableUnsecuredResponse 특성은만 CustomBinding 형식에만 적용 됩니다.
해결 방법
.NET Framework 3.0을 사용 하는 Microsoft 기술 기준으로 문서의 설명 되어 있는 핫픽스를 설치:
967105 수정: WCF 보안 된 메시지를 보내고 받을 수 있도록 하는 핫픽스에 반응, 보안 되지 않은 및 보안 되지 않은 메시지 보내기 및 보안 된 응답을 수신 하는.NET Framework 3.0을 사용할 수.NET Framework 3.5 서비스 팩 1에서 Windows 7 또는 Windows Server 2008 r 2를 사용 하는 Microsoft 기술 기준으로 문서의 설명 되어 있는 핫픽스를 설치:
977420 핫픽스 롤업 Windows Communication Foundation에서.NET Framework 3.5 s p 1에 대 한 Windows 7 및 Windows Server 2008 r 2에서 문제를 해결 하려면 사용할 수 있는 됩니다.
다른 운영 체제에서.NET Framework 3.5 서비스 팩 1을 사용 하 여 문제를 해결 하려면 다음 핫픽스를 설치 합니다.
지원 되는 핫픽스를 Microsoft에서 출시 되었습니다. 그러나이 문서에서 설명 하는 문제를 해결 하는 데 사용 됩니다. 이러한 특정 문제가 발생 한 시스템에만 적용 됩니다. 이 핫픽스는 추가 테스트가 필요할 수 있습니다. 따라서이 문제로 심각 하 게 영향을 받지 않습니다이 핫픽스가 포함 된 다음 서비스 팩이 나올 때까지 기다리는 것이 좋습니다.
이 문제를 즉시 해결 하려면 핫픽스를 얻으려면 Microsoft 고객 지원 서비스에 문의 합니다. Microsoft 고객 기술 지원부 전화 번호 및 지원 비용에 대 한 정보를 전체 목록은 다음 Microsoft 웹 사이트를 방문.
http://support.microsoft.com/contactus/?ws=support참고: 특별 한 경우에 Microsoft 기술 지원 전문가가 특정 업데이트로 문제를 해결할 수 있는지 결정 하는 경우 일반적으로 지원 요청에 따른 비용이 취소 될 수도 있습니다. 추가 지원 질문과 특정 업데이트가 필요 하지 않은 문제에는 일반 지원 비용이 적용 됩니다.
전제 조건
이 핫픽스를 적용 하려면.NET Framework 3.5 서비스 팩 1 있어야 합니다.
다시 시작 요구 사항
.NET Framework 인스턴스가 사용 중인 경우이 핫픽스를 적용 한 후 컴퓨터를 다시 시작할 필요가 없습니다.
핫픽스 대체 정보
이 핫픽스는 다른 핫픽스를 대체하지 않습니다.
파일 정보
이 핫픽스의 영어 버전은 다음 표에 열거된 파일 특성 (또는 그 이후의 파일 특성)을 가지고 있습니다. 이러한 파일의 시간과 날짜는 협정 세계시(UTC)로 나열되었습니다. 파일 정보를 볼 때는 로컬 시간으로 변환됩니다. UTC와 로컬 시간의 시차는 제어판의 날짜 및 시간 항목에서 표준 시간대 탭을 사용하여 찾을 수 있습니다.
모든 x86 기반 버전의 Windows Server 2003 및 Windows XP의 파일 정보
파일 이름 |
파일 버전 |
파일 크기 |
날짜 |
시간 |
플랫폼 |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
17,240 |
2009 년 6 월 01 일 |
22:56 |
x86 |
System.runtime.serialization.dll |
3.0.4506.4119 |
970,752 |
2009 년 6 월 01 일 |
22:56 |
x86 |
System.servicemodel.dll |
3.0.4506.4119 |
5,931,008 |
2009 년 6 월 01 일 |
22:56 |
x86 |
모든 x64 기반 버전의 Windows Server 2003 및 Windows XP의 파일 정보
파일 이름 |
파일 버전 |
파일 크기 |
날짜 |
시간 |
플랫폼 |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
19,304 |
2009 년 6 월 01 일 |
22:28 |
x64 |
System.runtime.serialization.dll |
3.0.4506.4119 |
847,872 |
2009 년 6 월 01 일 |
22:28 |
x64 |
System.servicemodel.dll |
3.0.4506.4119 |
5,267,456 |
2009 년 6 월 01 일 |
22:28 |
x64 |
모든 x86 기반 버전의 Windows Vista s p 2와 Windows Server 2008 s p 2의 파일 정보
파일 이름 |
파일 버전 |
파일 크기 |
날짜 |
시간 |
---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4120 |
17,240 |
10-Jun-2009 |
06:55 |
System.runtime.serialization.dll |
3.0.4506.4120 |
970,752 |
10-Jun-2009 |
06:55 |
System.servicemodel.dll |
3.0.4506.4120 |
5,935,104 |
10-Jun-2009 |
06:55 |
모든 x64 기반 버전의 Windows Vista s p 2와 Windows Server 2008 s p 2의 파일 정보
파일 이름 |
파일 버전 |
파일 크기 |
날짜 |
시간 |
플랫폼 |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4120 |
19,288 |
10-Jun-2009 |
06:56 |
x64 |
System.runtime.serialization.dll |
3.0.4506.4120 |
847,872 |
10-Jun-2009 |
06:56 |
x64 |
System.servicemodel.dll |
3.0.4506.4120 |
5,271,552 |
10-Jun-2009 |
06:56 |
x64 |
모든 Itanium 기반 버전의 Windows Server 2008 s p 2에 대 한 파일 정보
파일 이름 |
파일 버전 |
파일 크기 |
날짜 |
시간 |
플랫폼 |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4120 |
33,640 |
10-Jun-2009 |
06:56 |
IA-64 |
System.runtime.serialization.dll |
3.0.4506.4120 |
847,872 |
10-Jun-2009 |
06:56 |
IA-64 |
System.servicemodel.dll |
3.0.4506.4120 |
5,271,552 |
10-Jun-2009 |
06:56 |
IA-64 |
상태
Microsoft는 이 문제가 '적용 대상' 섹션에 나열된 Microsoft 제품의 문제임을 확인했습니다.
자세한 내용
다음 예제 코드를 사용 하 여 enableUnsecuredResponse 속성을 테스트 하려면:
서비스
BindingElementCollection serviceBec = new BindingElementCollection();
SecurityBindingElement serviceSbe = SecurityBindingElement.CreateUserNameForCertificateBindingElement();
serviceSbe.EnableUnsecuredResponse = true;
serviceBec.Add(serviceSbe);
serviceBec.Add(new TextMessageEncodingBindingElement());
serviceBec.Add(new HttpTransportBindingElement());
Binding serviceBinding = new CustomBinding(serviceBec);
ServiceHost serviceHost = new ServiceHost(typeof(RequestReply));
…
serviceHost.Open();
클라이언트
BindingElementCollection clientBec = new BindingElementCollection();
SecurityBindingElement clientSbe = SecurityBindingElement.CreateUserNameForCertificateBindingElement();
clientSbe.EnableUnsecuredResponse = true;
clientBec.Add(clientSbe);
clientBec.Add(new TextMessageEncodingBindingElement());
clientBec.Add(new HttpTransportBindingElement());
Binding clientBinding = new CustomBinding(clientBec);
IRequestReply channel = cf.CreateChannel();
try
{
channel.SendString("Hello");
cf.Close();
}