6

JSON データを生成する REST サービスとして機能するエンドポイントを公開する、IIS でホストされる WCF サービスをセットアップしようとしています。HTTPS を使用したいと考えています。ユーザーはデータベースに保存されているため、UserNamePasswordValidator を使用して自分でユーザー認証を処理したいと考えています。

現時点では、webhttpbinding を使用して REST フルネスを実現しています。HTTPS を有効にしようとすると (セキュリティ モードをトランスポートに設定すると)、問題が発生します。サーバー側に SSL 証明書 (今のところ自己署名済み) があるので問題ありませんが、バインディングのトランスポート clientCredentialType を構成して、資格情報が UserNamePasswordValidator の実装に渡されるようにする方法がわかりません。

私はたくさんグーグルで検索しましたが、良いものが見つからないようです。私が正しく理解している場合、IIS は WCF の前に認証を処理しますが、それについて何もすることはありませんか? ASP.Net メンバーシップ プロバイダーを使用したくないのですが、それがアプローチなのか、それとも別の方法があるのでしょうか。

ありがとうございました!

編集:これを見つけまし。本当に私が望んでいたものではありません...

4

2 に答える 2

1

認証情報は使用できませんUserName。これは、SOAP ヘッダーによるメッセージ レベルの認証ですが、JSON データ交換にはそのようなヘッダーがありません。Basicトランスポート要素 (= トランスポート レベル認証) で資格情報を設定してみてください。.NET 3.5 以降のカスタム パスワード バリデータで動作するはずです。基本認証を正常に認証するには、有効な HTTP ヘッダーを渡す必要があります。

編集:

カスタムバリデーターが実行される前にIISが認証をトリガーするため、IISでテストしなかったため、いくつかの問題が発生する可能性があります。このような場合、認証用のカスタム HTTP モジュールが必要になります。

于 2011-06-15T08:47:14.180 に答える
1

たくさんのグーグル検索の後、いくつかの可能な解決策を見つけました。

IIS でホストされている RESTful WCF サービスで認証を解決するための推奨される方法は、トークンを使用することです。OAuth のサード パーティの実装の助けを借りて、または自分で何かを実装します。ただし、これにより nettcp エンドポイントでいくつかの問題が発生し、おそらく両方のエンドポイントで同じ実装を使用することはできなくなります (webhttp エンドポイント経由の呼び出しでトークンの検証を行う必要があるため)。

Ladislav Mrnka によって与えられた解決策も有効であるようです。

于 2011-06-16T12:16:13.170 に答える