2009-02-04 2 views
0

Flex을 통해 액세스 할 수 있어야하므로 공개적으로 액세스 할 수있는 .NET 웹 서비스가 있습니다. 현재 읽기 작업 만 있습니다.서비스 URL이있는 최종 사용자로부터 WSDL을 숨길 수있는 방법

나는 그런 UpdateWeatherStartRainstorm와 같은 웹 서비스에 전용 웹 방법 일부 관리자를 추가 할 http://www.example.com/webservices/weather.asmx?wsdl

. 분명히 최종 사용자가 날씨 패턴을 변경할 수 없도록하고 싶지 않습니다.

표준 ?wsdl 매개 변수를 통해 액세스 할 수 없도록 wsdl을 숨기려고합니다. 궁극적으로 나는 더 나은 보안 등을 추가 할 것이지만 나는 지금 당장 빠른 수정이 필요하다. 메소드 이름을 모르면 액세스 할 수 없다는 것을 알 수 있습니다.

WSDL 생성을 비활성화하고 싶습니다. web.config에 <add name="Documentation" />을 추가하면됩니다. 그러나 나는 내가 알고있는 다른 '비밀'방식으로 WSDL에 액세스 할 수 있기를 원하므로 서버에 계속 가지 않아야한다. 어떻게 이럴 수 있겠 어. 나는 그것의 비밀 URL 또는 비밀 매개 변수 또는 무엇이든간에 좋다.

지금은이 security through obfuscation 접근 방식으로 문제가 없습니다.

답변

1

당신이 할 수있는 한 가지 일은 관리 계약을위한 다른 끝점을 노출하는 것이다. 그런 다음 해당 관리 끝점에서 WSDL 게시자를 해제하십시오. 궁극적으로 원하는 경우 관리 끝점에서 보안을 구성 할 수 있습니다.

이것은 WCF를 사용한다고 가정합니다.

업데이트 : 체크 아웃이 WCF getting started tutorial입니다. WCF에 대해 조금 배우면 ASP.NET/ASMX 서비스 이상의 것을 좋아할 것입니다.

+0

표준 웹 서비스를 사용하고 있지만 WCF 서비스 참조를 사용하여 소비하고 있습니다. WCF는 내가 아직 많이 배운 그 기술 중 하나입니다. 일반 웹 서비스를 WCF 서비스로 쉽게 만들 수 있습니까? –

1

왜 다른 웹 서비스를 만들지 않습니까? 더 단순 해 보인다

+0

어떤 경우에는 확실히 의미가 있습니다. 나는 실제로 WSDL을 최종 사용자로부터 완전히 숨기고 싶지만 여전히 액세스 할 수 있으므로 업데이트 할 때 프록시를 생성 할 수 있습니다. '관리자'작업은 지금 솔루션을 가져야하는 이유입니다.하지만 사람들이 내 WSDL을 스누핑하고 싶지 않습니다. –

0

업데이트 참조를 위해 개발 서버를 사용할 수 있습니다. 공개 서버를 제공하지 않으면 프로덕션 서버에서 wsdl 문서를 노출 할 수 없습니다.

wcf 어셈블리에 액세스 할 수있는 경우 wcf 어셈블리에 대해 svcutil을 사용할 수 있습니다. 그러면 응용 프로그램에서 사용할 언어 코드가 생성됩니다.

wsdl을 제한된 사용자에게 공개하려는 경우 iis url 재 작성을 사용하여 승인되지 않은 IP 주소로부터의 액세스를 차단할 수 있습니다.

관련 문제