SSL이없는 메시지 자격 증명을 전달하기 위해 WCF 클라이언트를 해킹 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1667882

  •  13-09-2019
  •  | 
  •  

문제

썼다 내로드 밸런스 팜이 IIS를 통해 호스트 서비스를 제공 할 수 있도록 맞춤형 WCF 바인딩. 사용자 정의 바인딩의 이유는 각 서버에 SSL이 없지만 사용자 이름 + 비밀번호의 클라이언트 자격 증명을 수락 할 수있는 기능이 필요했기 때문입니다. 이 농장 앞 프록시에는 SSL이있어 트래픽이 방화벽 밖에서 암호화됩니다. 이 맞춤형 바인딩은 잘 작동하지만 이제는 컴퓨터에서 트래픽을 현지에서 볼 필요가 있고 믹스 에서이 SSL을 사용하고 싶었던 시점에 있습니다.

문제는 이것입니다 - .NET 클라이언트에서 보안 모드를 설정하면 "TransportWithMessAgeCredential"SSL이 있어야합니다. 그렇지 않으면 재미있는 오류가 발생합니다.

클라이언트가 SSL이 누락되었지만 여전히 비누 헤더를 통해 사용자 이름 + 비밀번호를 전달할 수 있도록 클라이언트가 사용자 정의를 작성할 수 있습니까?

도움이 되었습니까?

해결책

그래, 나는 이것에 대한 블로그 게시물을 썼다. "방법 : WCF를 사용한 SSL 통과-또는 일반 HTTP를 통한 전송 위원성 전환".

짧은 것은 당신이 당신의 자신을 만들어야한다는 것입니다. HttpTransportBindingElement 보안 제공에 대한 "거짓말"하위 클래스.

다른 팁

이있다 핫픽스 .NET 3.5 SP1의 경우 allowInseceRetransport 속성을 보안 결합에 추가합니다. 이것은 또한 .NET 4 베타 2에 있습니다.

사용자 정의 바인딩에서 보안 모드 = "메시지"를 사용하는 경우 오류가 발생한다고 가정합니다. 사용자 정의 바인딩은 실제로 필요하지 않았습니다.

또 다른 대안은 SSL 인증서를 직접 생성하고 IIS에 설치하고 통화 코드에서 모든 인증서 정책을 신뢰하는 것입니다. 그러나 일반적으로 불안한 채널을 통해 사용자 이름과 비밀번호를 보내는 것처럼 이는 일반적으로 눈살을 찌푸립니다.

세 번째 옵션은 계약의 운영을 변경하여 사용자 이름 및 비밀번호 (또는 일종의 토큰)를 매개 변수로 받아들이거나 데이터 계약을 변경하여 이미 보내는 객체와 함께 정보를 보낼 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top