2011-12-29 10 views
2

WCFサービスがHTTPS経由であり、すべての通信がHTTPS経由であることを確認するにはどうすればよいですか?WCFにHTTPSの使用を強制する

言うサービスの私のweb.configファイル内

Theresのは何もHTTP :// ...またはhttps:// ....

は、IISで設定されていないHTTPSと私は、Webサービスにアクセスすることができますhttpとhttpsで

とにかくメッセージレベルのセキュリティで暗号化されている場合、これは必須ではありませんか? httpsGetEnabledがtrueに設定されているとhttpGetEnabledがfalseに設定されている

<services> 
    <service name="WcfTransport.Service1" behaviorConfiguration="MyHttpsBehaviour"> 
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="TransportSecurityBinding" contract="WcfTransport.IService1"/> 
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" /> 
    </service> 
</services> 

<behaviors> 
    <serviceBehaviors > 
    <behavior name="MyHttpsBehaviour" > 
     <serviceMetadata httpsGetEnabled="true" httpGetEnabled="false" /> 
     <serviceDebug includeExceptionDetailInFaults="true"/> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

<bindings> 
    <wsHttpBinding> 
    <binding name="TransportSecurityBinding"> 
     <security mode="Transport"> 
     <transport clientCredentialType="Windows"></transport> 
     </security> 
    </binding> 
    </wsHttpBinding> 
</bindings> 

なお:ここ

<bindings> 
    <wsHttpBinding> 
    <binding name="Binding1" maxReceivedMessageSize="20000000"> 
     <security mode="Message"> 
     <message clientCredentialType="UserName"/> 
     </security> 
    </binding> 
    </wsHttpBinding> 
</bindings> 

答えて

2

HTTPSはHTTP over Transport-Layer Security(TLS)です。これを有効にするには、あなたは、既存のメッセージレベルのセキュリティに加えて、トランスポート・セキュリティを使用するようにバインディングを構成する必要があります。

<bindings> 
    <wsHttpBinding> 
    <binding name="Binding1" maxReceivedMessageSize="20000000"> 
     <security mode="TransportWithMessageCredential"> 
     <message clientCredentialType="UserName"/> 
     </security> 
    </binding> 
    </wsHttpBinding> 
</bindings> 
+0

ありがとう、私は@Vano Maisuradzeの答えも '' ''に変更する必要がありますか?それはうまくいくようでした。 – Marcus

+0

これは、メタデータの交換やユーザーがサービスディスカバリページを参照する機能(ブラウザでhttp://domain/myservice.svcにアクセスした場合)ではなく、サービス自体(Webサービスビット)のみを変更します。これらがHTTPS経由で動作する必要がある場合は、Vano氏が説明したように、さらに進む必要があります。 –

1

はhttpsのための設定です。メタデータを交換する必要がない場合は、mexエンドポイントを削除することもできます。

P.S.メッセージセキュリティはメッセージ暗号化用ですが、もちろんhttpsでメッセージセキュリティを使用することもできます。

+0

はだから '作る'やっそれはHTTPS経由ですか?それは動作するように見えましたが、私は今、英雄の答えをプログラミングに基づいて不明です – Marcus

+0

はい。 https要求のみを受け入れます。また、IISでhttpバインディングを削除し、httpsバインディングのみを追加することもできます。 –

関連する問題