2012-03-16 7 views
0

オーバーのみアクセス:これらのサービスは、といくつかの相互運用性を許可するように設定されているASP.net - Webサービス - 私は、サイト内のフォルダ内のWebサービスのセットを公開サイトに取り組んでいますlocalhostの

services 
--- servicea.asmx 
--- serviceb.asmx 

私たちが管理している他のサイトは、すべて同じサーバー上にあります。

サイトではasp.netフォームベースの認証が使用されていますが、サービスフォルダはこれから免除されています。各サービスはメソッド呼び出し時に独自の認証を行い、ローカルアドレスからのアクセスであることを確認します良い。

ただし、外部アドレスからservices/servicea.asmxにアクセスすると、利用可能なメソッドのリストが表示されます。私は効果的にこれらのメソッドのどれかを外部アドレスから呼び出すことはできませんが、これは私たちの内部APIをこのように公開するのは快適ではありません。 asmxファイルがボックス外でアクセスされたときにメソッドのリストで応答するのを止める方法はありますか?

答えて

1

あなたのweb.configファイルに以下を追加することができるはずです。

<system.web.services> 
    <protocols> 
     <remove name="Documentation"/> 
    </protocols> 
</system.web.services> 

これは、サービスの説明ページを非表示にします。

詳細については、http://msdn.microsoft.com/en-us/library/b2c0ew36%28v=vs.100%29.aspxを参照してください。これにより、クライアントがWSDLプロキシクラスを生成できないため、実装が容易になります。

メソッド名を非表示にすることはセキュリティの代用にはなりませんが、そうする必要があるかどうかを検討することもできます。

+0

サービスレベルごとにこれを行う方法があるかどうかはわかります。外部にアクセス可能なその他の項目があります。 – Paddy

+0

1つのアイデアはlocation要素を使ってみることです:http://msdn.microsoft.com/en-us/library/b6x6shw7%28v=vs.100%29.aspx - 上記のブロックをという要素がありますが、これがうまくいくとは言いませんでした。それ以外の場合は、それぞれの仮想ディレクトリまたはそれに類するものをそれぞれのディレクトリに配置して、互いに効果的に分離する必要があります。 – dash

関連する問題