.NET Framework 4.5에서 WCF 서비스에 WCF 클라이언트에서 ICredentials의 암호 데이터를 전달할 수 없습니다.

이 문서는 Microsoft 기계 번역 소프트웨어를 이용하여 번역되었으며 Microsoft Community에 의한 Community Translation Framework(CTF) 기술 혹은 사람이 번역한 내용에 의하여 사후 편집될 수 있습니다. Microsoft는 Knowledge Base에 있는 모든 문서에 다양한 언어로 접근할 수 있도록 하기 위하여 기계 번역, 사람에 의한 번역 및 커뮤니티가 편집한 내용을 모두 제공합니다. 번역된 문서는 어휘, 구문 및/혹은 문법에 오류가 있을 수 있습니다. Microsoft는 번역 오류로 인한 부정확성, 오류 및/또는 손해와 이를 고객이 사용하는 데에 대하여 책임을 지지 않습니다.

이 문서의 영문 버전 보기:3082119
현상
Windows 통신 Foundation (WCF) 클라이언트의 이름과 지정 된 암호를 사용 하 여NetworkCredential 클래스에서 새로운 ICredentials 인터페이스를 만듭니다. 그런 다음 ICredentials 인수를 사용 하는 WCF 계약 메서드를 호출을 하면 됩니다. WCF 서비스는 네트워크 자격 증명을 다시 받은 ICredentials를 캐스팅 한 후 Password 속성에 빈 문자열을 찾았으면 합니다. 그러나 Username속성은 유효 하 고 올바른 값을 계속 유지 하는.
원인
이것은 Microsoft.NET Framework 4.0 새 속성에 도입 된 알려진된 문제를 SecurePasswordNetworkCredential클래스에 추가 되었습니다. 이 이때는 SecurePassword 속성 서비스 쪽에서 deserialize 된 경우 원래 암호 문자열을 덮어씁니다. SecureString 형식의 SecurePassword속성이입니다. 기본적으로 직렬화 하 고 전송 되지 않습니다 그. 그러나 빈 값을 사용 하 여 암호 문자열은 원래 문자열을 덮어씁니다. 이 동작은 의도적으로 설계 이기도합니다.
해결 방법
이 문제를 해결 하려면 네트워크 자격 증명에 관계 없이 서비스에 사용자 이름 및 암호 정보를 전달 해야 합니다. 이렇게 하려면 자격 증명을 저장 하 고 메서드 인수로 개체를 받아들이는 새 WCF 서비스 방법으로 자격 증명을 전달 하는 응용 프로그램 정의 개체를 생성 합니다. 이 응용 프로그램 정의 개체의 중요 한 정보가 있기 때문에 보안 또는 메시지 계층 보안 https 중 하나를 사용 하 여 WCF 서비스에 암호화 된 연결을 통해 데이터를 보낼 수 있는 werecommend를 전송 합니다.
추가 정보
Followingexample는 문제를 재현할 수 있는 WCF 서비스를 보여 줍니다. WCF 서비스에는 다음과 같은 계약.

[ServiceContract]
[ServiceKnownType(typeof(NetworkCredential))]
공용 인터페이스 IService
{

[OperationContract]
문자열 GetData(ICredentials value);
}

클라이언트가 사용 하는 서비스는 다음과 같습니다.

iCredService.ServiceClient svcClient = 새 iCredService.ServiceClient();
ICredentials iCred = 새 System.Net.NetworkCredential ("ABC", "1234");
문자열 결과 = 결과 = svcClient.GetData(iCred);

Visual Studio 사용 하 여 한 값은 서비스에 중단점을 설정 합니다. 암호는 비어 있게 됩니다. Microsoft Visual Studio 지역 창을 검사할 때 다음 텍스트 표시:

-{System.Net.NetworkCredential} value{System.Net.NetworkCredential}System.Net.ICredentials
-[System.Net.NetworkCredential]{System.Net.NetworkCredential}System.Net.NetworkCredential
"도메인"문자열
"암호" "문자열
+SecurePassword{System.Security.SecureString}System.Security.SecureString
사용자 이름 "ABC" 문자열입니다.
WCF ICredentials NetworkCredential SecurePassword

경고: 이 문서는 자동으로 번역되었습니다.

Proprietà

ID articolo: 3082119 - Ultima revisione: 08/28/2015 19:16:00 - Revisione: 1.0

Microsoft .NET Framework 4.0, Microsoft .NET Framework 4.5, Windows Communication Foundation 4, Windows Communication Foundation 4.5

  • kbmt KB3082119 KbMtko
Feedback