2009-09-01 9 views
5

나는 (intranet.mydomain.net에서 호스팅) 실버 애플 리케이션과에서 WCF 서비스가 (webservices.mydomain.net)실버 WCF 서비스 도메인 간 질문

내가 크로스 사이트 정책 파일이 필요하십니까? 그렇다면 intranet.mydomain.net의 액세스 만 허용하는 것이 어떻게됩니까?

답변

4

예, 서비스 도메인 (webservices.mydomain.net)의 ROOT에 clientaccesspolicy.xml 파일이 필요합니다.

기본적으로 Silverlight는 동일한 도메인 또는 사이트에서 웹 서비스에 대한 호출을 지원합니다. 동일한 도메인은 호출이 동일한 하위 도메인, 프로토콜 및 포트를 사용해야 함을 의미합니다. 이는 보안상의 이유로 도메인 간 위조를 방지합니다.

<?xml version="1.0" encoding="utf-8" ?> 
<access-policy> 
    <cross-domain-access> 
    <policy> 
     <allow-from http-request-headers="*"> 
     <domain uri="http://intranet.mydomain.net"/> 
     </allow-from> 
     <grant-to> 
     <resource path="/" include-subpaths="true"/> 
     </grant-to> 
    </policy> 
    </cross-domain-access> 
</access-policy> 

이는 intranet.mydomain.net의 요청 허용 것 : 여기

는 예제 파일입니다.

편집

그것은 요구되었습니다 어떻게 것이라고 나는 두 WCF 서비스가있는 경우이 작동합니까? /ServiceA/a.svc 및 /ServiceB/b.svc이고 ServiceA는 누구든지, 어디서나, ServiceB는 내 인트라넷에서만 작동하도록하고 싶습니다.

정책 파일은 다음과 같을 것이다 :

<?xml version="1.0" encoding="utf-8" ?> 
<access-policy> 
    <cross-domain-access> 
    <policy> 
     <allow-from http-request-headers="*"> 
     <domain uri="http://*"/> 
     </allow-from> 
     <grant-to> 
     <resource path="/ServiceA/" include-subpaths="true"/> 
     </grant-to> 
    </policy> 

    <policy> 
     <allow-from http-request-headers="*"> 
     <domain uri="http://intranet.mydomain.net"/> 
     </allow-from> 
     <grant-to> 
     <resource path="/ServiceB/" include-subpaths="true"/> 
     </grant-to> 
    </policy> 
    </cross-domain-access> 
</access-policy> 
+0

어떻게 것 내가 두 WCF 서비스가있는 경우이 작동합니까? '/ ServiceA/a.svc'와'/ServiceB/b.svc'를 사용하고 ServiceA를 누구든지, 어디서나, 그리고 ServiceB가 내 인트라넷에서만 작동하도록하고 싶습니다. 크로스 도메인 파일에서 가능합니까? – Nate

+1

나는 나의 대답을 편집했다. – DaveB

+0

Safari에서 작동합니까? 사파리가 크로스 도메인 xml-s를 기본적으로 지원하지 않는 것 같습니다. 물론, 중요하지 않을 수도 있습니다 ... – Gyuri

5

다음과 같은 링크를 체크 아웃 할 수 있습니다에 대한 팀 호이어으로 '실버 크로스 도메인 정책 파일을 사용하는 방법'.

http://timheuer.com/blog/archive/2008/04/06/silverlight-cross-domain-policy-file-snippet-intellisense.aspx

alt text

나는 자신의 WCF 서비스를 작성 고려할 것 : 여기

http://silverlight.net/learn/videos/all/how-to-use-cross-domain-policy-files-with-silverlight/

그뿐만 아니라 예를 가지고 통해 당신이 읽을 수있는 팀 호이어의 블로그에서 다른 페이지입니다 실버 라이트 앱과 함께 살며 외부 WCF 서비스 요청을 처리합니다. 이렇게하면 아무 것도 열어 두지 않고 제어 서비스에 대한 통신 만 허용됩니다 (언급 한 서비스가 사용자의 통제하에있을지라도).

이 방법은 다른 서비스가 손에없고 자주 변경 될 수있는 경우에도 유용합니다. 당신은 자신의 서비스를 통해 이것이 어떻게 처리되는지를 제어 할 수 있으며 실버 라이트 컨트롤을 업데이트 할 필요가 없습니다 (변경 사항이 과감하지 않다는 가정하에).