2009-09-01 14 views
5

私はSilverlightのWCFサービスのクロスドメインの質問

(webservices.mydomain.net)で(intranet.mydomain.netでホストされている)、SilverlightのアプリとWCFサービスを持っている私は、クロスサイトポリシーファイルが必要ですか?もしそうなら、intranet.mydomain.netからのアクセスのみを許可するように見えるでしょうか?

答えて

4

はい、サービスドメイン(webservices.mydomain.net)のROOTにclientaccesspolicy.xmlファイルが必要です。

デフォルトでは、Silverlightは同じドメインまたはサイトのWebサービスへの呼び出しをサポートしています。同じドメインとは、呼び出しで同じサブドメイン、プロトコル、およびポートを使用する必要があることを意味します。これはセキュリティ上の理由によるもので、クロスドメイン偽造を防止します。これが唯一のintranet.mydomain.netからのリクエストが可能になる

<?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> 

:ここ

は、サンプルファイルです。

編集

ことが求められています どうでしょう私は2つのWCFサービスを持っている場合は、この作品? /ServiceA/a.svcと/ServiceB/b.svcと私は、誰でもどこでもServiceBを開くことができ、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

どうでしょう私は2つのWCFサービスを持っている場合は、この作品? '/ ServiceA/a.svc'と'/ServiceB/b.svc'を使用して、誰でもどこでもServiceBを開くことができます。それはクロスドメインファイルから可能ですか? – Nate

+1

私は自分の答えを編集しました。 – DaveB

+0

これはSafariで動作しますか? Safariはデフォルトでクロスドメインxml-sをサポートしていないようです。もちろん、それは問題ではないかもしれません... – Gyuri

5

あなたはティム・ホイヤーによって「シルバーでクロスドメインポリシーファイルを使用する方法」について次のリンクをチェックアウトする場合があります。ここで

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

は、あなたがそれを読んですることができティム・ホイヤーのブログから他のページであるにも例があります。

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

alt text

私は自分自身のWCFサービスを作成することを検討しますSilverlightアプリケーションと一緒に生活し、外部WCFサービスへのリクエストを処理します。この方法では、何も開いておらず、被制御サービスへの通信だけが許可されます(あなたのサービスがあなたの管理下にあるかもしれませんが)。

この方法は、他のサービスがあなたの手に届かず、頻繁に変更される可能性がある場合にも役立ちます。あなた自身のサービスを介してどのようにこれが処理されるかを制御することができ、あなたのSilverlightコントロールを更新する必要はありません(変化が激しいと仮定して)。

関連する問題