2

ServiceContractインターフェイスとOperationContractそのすべてのメソッドでインターフェイスを作成しました。このインターフェイスをクラスに実装し、asp.net Web サイトに svc ファイルを作成する wcf サービスを追加しました (Web サイトで IIS でホストしたかったため)。これで、サービスが稼働し、 でアクセスできるようになりましたhttp://localhost:8732/webui/webservice/camservice.svc。ここで、このサービスのユーザー名とパスワードによる認証を有効にしたいと考えています。実行するために web.config で構成を行う必要がなかったため、svc使用していると思います。basicHttpBindingこのサービスでユーザー名/パスワード認証を有効にするにはどうすればよいですか? インターネット上には多くの記事がありますが、wcf セキュリティは非常に巨大であるため、私が使用した方法ではユーザー名/パスワード認証に焦点を当てた説明を得ることができないと思います。vs 2010で.net 4.0を使用しています

編集:わかりました、問題を少し絞り込みました。メッセージレベルのセキュリティは私が必要としているものだと思います

<security mode="Message">
                <message clientCredentialType="Certificate" />
            </security>

SSL を使用することもできましたが、そのためには、サービス呼び出しごとに db に移動し、ユーザーを認証する必要があります。私が好むのは、有効な証明書を持つクライアントがサービスによって提供されることです。この記事から多くの情報を得ました。説明されていないのは、クライアントとサーバーで x509 証明書をセットアップする方法と、クライアントだけが有効な証明書を取得できるように制御する方法です。

4

1 に答える 1

4

SSL を使用せずにユーザー名パスワードの検証を行いたい場合は、ClearUsernameBindingと呼ばれるものを使用して、http 経由でユーザー名/パスワードを転送できます。

: これは、サービスをホストするサーバーに十分なセキュリティを提供する会社のファイアウォールの背後にサービスがある場合にのみ使用してください。

双方向 SSL の使用に関しては、信頼できる機関によって発行されたサービス証明書 .pfx をサーバーにインストールするか、ローカル マシン アカウントの個人ストア フォルダーの下に自己署名証明書をインストールする必要があります。

次に、クライアント証明書については、クライアントに .cer ファイルを送信するように要求し、それをサーバーのローカル マシン アカウントの Trusted People ストア フォルダーの下にインストールする必要があります。

クライアント マシンでは、クライアント証明書 .pfx を現在のユーザーの個人ストア フォルダーにインストールする必要があります。

注: サーバーで自己署名証明書を使用する場合、コードを介して Web サービスへの呼び出しを実行するクライアントには、自己署名証明書で発生するセキュリティ例外をバイパスする以下のコードが必要です。

    System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) =>
                                                                             {
                                                                                 return true;
                                                                             };
于 2012-04-05T15:29:53.580 に答える