0

私は現在、WCF Web サービスに大きく依存する Web アプリケーションを保守しています。現在、これらのサービスにはセキュリティが設定されていないため、サービスのアドレスとパラメーターを知っていれば、Web アプリケーションにログインしなくても、サービスのデータにアクセスできてしまいます。

例:

http://www.mydomain.com/webservices/holidays.svc/GetHolidaysForUser?id=1234

この例では、認証なしで JSON 文字列をブラウザに送り返すだけです。

残念ながら、私は WCF にあまり詳しくないので、どこから始めればよいかわかりません。

注:可能であればフォーム認証を使用するように依頼されました。

4

2 に答える 2

1

1 つのオプションは、clientcertificates を使用することです。

このソリューションは、現在の実装を変更できない場合のオプションになる可能性があります (「フォーム認証」ルートを使用する場合に必要なもの)。証明書を扱うには、IT オペレーションが証明書を生成し、サーバーとクライアントの両方にインストールする必要があることに注意してください。あなたの状況でこれが実現可能かどうかは、あなたの質問からは不明です。

最初に証明書を作成します (購入せずに自分で作成する場合は、信頼できるストアにルート証明書を追加できるように IT 担当者が準備されていることを確認してください。これは、サービスのユーザーにも当てはまります!)

このエンドポイントの動作をクライアント側に追加します

 <behaviors>
      <endpointBehaviors>
        <behavior name="ClientCertificateBehavior">
          <clientCredentials>
            <clientCertificate findValue="client.com"   
                               storeLocation="CurrentUser" 
                               storeName="My" 
                               x509FindType="FindBySubjectName" />
          </clientCredentials>
        </behavior>
      </endpointBehaviors>
    </behaviors>

このサーバー側を追加/変更します:

 <wsHttpBinding>
      <binding name="wsHttpEndpointBinding">
        <security mode="Transport">
          <transport clientCredentialType="Certificate" />
        </security>
      </binding>
    </wsHttpBinding>

<endpoint binding="wsHttpBinding" bindingConfiguration="wsHttpEndpointBinding"
        name="wsHttpEndpoint" contract="IService" />

SSL を使用し、クライアント証明書を要求するように Web サーバーを構成します。

この回答は、このガイドの短縮版です

于 2013-08-19T10:23:28.857 に答える
0

どのような認証を実装しますか? Active Directory またはカスタム データベース? セキュリティを実装するには多くの方法があります。サービスと Web サイトが企業環境内でホストされている場合は、Active Directory Windows 認証を使用することを強くお勧めします。ステップを 1 つずつ詳細に説明する例がたくさんあります。

于 2013-08-19T09:30:04.220 に答える