0

単純な xml、json、および SOAP で結果を返すことができる統合プロジェクト用の優れた WCF サービスを作成できました。これは、セキュリティの実装を開始するまではうまく機能します。wcf サービスに組み込まれている ws セキュリティ機能は、以下でうまく機能する WebHttpBindings を使用するとバイパスされます。

<webHttp defaultOutgoingResponseFormat="Json"/>

[OperationContract()]
[WebGet(UriTemplate = "GetSomething/{someID}/{anotherID}?somethingElse={somethingElse}")]
SomeResponse GetSomething(string someID,string anotherID, DateTime somethingElse)

私は最初の安らかな API で遊んで楽しんでいましたが、悲しいことに、プロジェクトを完了する必要があり、安全な認証ポリシーを含める必要があります。結果を json として返す必要はありませんし、休憩サービスである必要もありませんが、これは私の好奇心をかき立てました。

...認証戦略/WCF REST サービスに関する良いアイデアはありますか?

4

2 に答える 2

0

clientCredentialType="Certificate" または "Windows" が必要な場合があります

<webHttpBinding>
  <binding name ="RestSSL">
    <security mode ="Transport">
      <transport clientCredentialType= "Windows" />
    </security>
  </binding>                
</webHttpBinding>

証明書を使用する場合は、serviceBehavior の certificateValidationMode を PeerTrust、ChainTrust などに設定する必要もあります。http://msdn.microsoft.com/en-us/library/system.servicemodel.security.x509certificatevalidationmode.aspx

<behaviors>
  <serviceBehaviors>
    <behavior>
      <dataContractSerializer maxItemsInObjectGraph="1048576"/>
      <serviceMetadata httpGetEnabled="False" httpsGetEnabled="True"/>
      <serviceDebug includeExceptionDetailInFaults="False"/>
      <serviceCredentials>
        <!-- Please note: the app pool will need an identity with access to this cert-->
        <serviceCertificate findValue="myCertSubject.myDomain.com"
                            storeLocation="LocalMachine"
                            storeName="My"
                            x509FindType="FindBySubjectName"/>
        <clientCertificate>
          <authentication certificateValidationMode="PeerTrust"/>
        </clientCertificate>
      </serviceCredentials>
    </behavior>
  </serviceBehaviors>
于 2012-07-28T03:58:40.520 に答える
0

一般に、安らかな wcf サービスを保護する場合、ほとんどの人は OAuth を使用する傾向があります。OAuth は、デスクトップおよび Web アプリケーションからシンプルかつ標準的な方法で安全な API 認証を可能にするオープン プロトコルです。これにより、クライアントは、サービス呼び出しごとに送信する必要があるクライアントを識別するコンシューマ キーを提供できます。この情報は、HTTP Authorization ヘッダーの一部として送信されます。ここから OAuth クラスをダウンロードします。

実装の詳細については、このコード プロジェクトの記事を参照してください。

于 2012-07-28T06:54:26.340 に答える