web-dev-qa-db-ja.com

WCF RESTfulサービスでHTTPSを有効にする方法

Https上でwcfを動作させる方法。私はhttpsでこのwcfを使用したいと思います。答えが得られなかった多くの記事を検索しました。wcfの概念に新しいiamを助けてください。私はajax、jqueryからそれを呼び出したい

 <system.serviceModel >
<services>
  <service
    name="WcfRestfulService.HttpService" behaviorConfiguration="ServiceBehaviour" >
    <endpoint address="" binding="webHttpBinding" behaviorConfiguration="web"
              contract="WcfRestfulService.IHttpService">
    </endpoint>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehaviour">
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpsGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="web">
      <webHttp/>
    </behavior>
  </endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
16
Tajkumar

WCFを使用してRESTfulサービスを構築していて、セキュリティで保護されていることは本当に近いのようです。

セキュリティを確保するために必要なことは次のとおりです。

  1. セキュリティモードがWebHttpBindingに設定されている新しいTransport構成を追加します。
  2. その新しいWebHttpBinding構成をサービスエンドポイントバインディングに割り当てます。
  3. httpGetEnabled="false"を設定して、RESTfulサービスにHTTPS経由でのみアクセスできることを確認してください。
  4. HTTPSを使用するようにメタデータ公開エンドポイントを設定します。

これらの変更はすべて、修正された構成ファイルにまとめられています(変更された点についてはコメントを参照)。また、サービスエンドポイントはHTTPではなくHTTPSスキームを使用する必要があることに注意してください。

<system.serviceModel >
  <services>
     <service name="WcfRestfulService.HttpService"
              behaviorConfiguration="ServiceBehaviour" >
         <endpoint address="" 
                   binding="webHttpBinding"
                   <!-- Add reference to secure WebHttpBinding config -->
                   bindingConfiguration="webHttpTransportSecurity"
                   behaviorConfiguration="web"
                   contract="WcfRestfulService.IHttpService" />
         <!-- Need to make sure that our metadata 
              publishing endpoint is using HTTPS as well -->
         <endpoint address="mex"
                   binding="mexHttpsBinding"
                   contract="IMetadataExchange" />
     </service>
  </services>
  <!-- Add secure WebHttpBinding config -->
  <bindings>
     <webHttpBinding>
        <binding name="webHttpTransportSecurity">
           <security mode="Transport" />
         </binding>
      </webHttpBinding>
  </bindings>
  <behaviors>
      <serviceBehaviors>
         <behavior name="ServiceBehaviour">
             <serviceMetadata httpsGetEnabled="true"
                              <!-- Make sure the service can 
                                 be accessed only via HTTPS -->
                              httpGetEnabled="false"/>
             <serviceDebug includeExceptionDetailInFaults="false"/>
         </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
         <behavior name="web">
             <webHttp/>
         </behavior>
      </endpointBehaviors>
  </behaviors>
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
</system.serviceModel>
35
Derek W

バインディングにsecurity mode="Transport"を設定する必要があります

  <basicHttpBinding>
    <binding name="secureHttpBinding">
      <security mode="Transport">
        <transport clientCredentialType="None"/>
      </security>
    </binding>
  </basicHttpBinding>

詳しくは [〜#〜] msdn [〜#〜]

2

私も同じ問題を抱えていましたが、サービスが内部にあるため、HTTP get要求をテストしたかったのです。

HTTPSを有効にすることも忘れないでください。 httpsGetEnabled="true"

私の設定は例として以下です:

   <bindings >
      <basicHttpBinding>
        <binding name="secureHttpBinding" >
          <security mode="Transport" />
        </binding>
   </bindings>
    .....
    <behaviors>
      <serviceBehaviors>
        <behavior >
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
       </serviceBehaviors>
     </behaviors>
0
Dai Bok