2010-03-29 9 views
0

고객을위한 서비스를 개발하려고합니다. 이 서비스는 방화벽 뒤의 인트라넷에 위치하며 자체 데이터베이스를 가지고 있습니다. 이 서비스는 DMZ에있는 다른 웹 응용 프로그램에서 사용합니다. 이제 문제는 DMZ에서 인트라넷으로 포트를 열지 않는 엄격한 정책을 갖고 있다는 것입니다.DMZ에서 방화벽 뒤의 WCF 서비스에 액세스

1) DMZ의 웹 응용 프로그램이 포트를 열지 않고도 인트라넷의 WCF 서비스에 액세스 할 수 있습니까?

2) 그렇지 않은 경우 포트 열기가 완료 될 수 있으며 여전히 안전한 솔루션이 있다고 설명하는 참조 아키텍처가 있습니까? 인증서와 일종의 위임 등이 포함될 수 있습니다. 다른 앱이 서비스를 사용할 필요가 없으므로 (적어도 현재는 필요하지 않음) 소비자를이 단일 웹 앱으로 제한하는 구성을 사용하는 것이 좋습니다.

안부 /발레

답변

1

내가 그것을 삭제하여, 조금 내 이전 대답을 "수정"을 가진 모든 :)

그래서 여기의 짧은 더 나은 버전입니다. 가장 좋은 것은 아니지만 꽤 잘 작동합니다. 설명을 더 간단하게하기 위해 하나의 서비스와이를 사용하려는 클라이언트가 있다고 가정 해 보겠습니다.

  1. 는 방화벽 외부에 실행 2 개 서비스 노출 프록시 서버 애플리케이션 추가 두번째는 듀플렉스 서비스
    처음 원래 서비스 (동일한 주소 바인딩, 계약)
    동일 그런 콜백으로 위의 서비스와 동일한 계약을합니다.
  2. 방화벽 내부에서 실행되는 프록시 클라이언트 응용 프로그램을 추가하고 프록시 서버와 원래 서비스의 두 번째 서비스를 사용합니다.
  3. 원래 클라이언트는 대신 프록시 서버를 사용합니다 원래 서비스
  4. ,

작동 방식 :

  1. 프록시 클라이언트는 프록시 서버에 연결하여 프록시 클라이언트는 원래 서비스
  2. 원래 클라이언트는 프록시 서비스에 연결에 연결하는 콜백
  3. 등록
  4. 프록시 서버는 서비스의 모든 호출을 콜백으로 전달합니다 (계약 내용은 동일 함을 기억하십시오)
  5. 프록시 클라이언트는 모든 콜백 구현에서 원래 서비스의 클라이언트에 대한 호출 (다시 계약이 동일 함)
  6. 원래 서비스가 호출을 처리하고 결과를 반환합니다.
  7. 응답이 원래 클라이언트와 반대 순서로 다시 전달됩니다. 원래 클라이언트가 프록시 서버 대신 원래 서비스

    또 다른 메모가 전달이 아주 좋은 아닌 코드에서 발생한다는 것입니다 연결한다는 생각이 없다고

참고. .NET 4.0의 WCF는 라우팅 지원을 지원하지만 직접 콜백 채널을 라우팅 할 수는 없으며 직접 연결할 수도 없습니다.

희망 하시겠습니까? Gicanu

관련 문제