2010-12-15 20 views
0

正しく認証/承認を設定する方法については、WCFのサポートが必要です。私はできるだけ多くのことをできるだけ多く使って、これを実現したいと思っています。WCF認証/承認 - 必要なヘルプ

私はWCF 4.0アプリケーションサービスをセットアップしており、4.0のWebクライアントと4.0のSilverlightクライアントを同じサービスに接続します。私はクライアントが認証メソッドを呼び出して(データベースに対するユーザー名/パスワードを確認する)サービスに呼び出してから、トークンをクライアントに返すことを望みます。クライアントはこのトークンを保存し、それ以降のすべてのサービスコールと共に(透過的に)送信します。サービスでは、このトークンはすべての呼び出しで検証されます。また、私はUserIDを使用して各操作呼び出しの間にいくつかのセキュリティーチェック(サーバー側)を行う必要があるので、トークンに含める必要があるかもしれません。

これを達成するためのクライアント/サーバーの例をお見せしたいと思います。ありがとう!

+0

あなたが記述しているシナリオはおそらく、すべての中で最も「アウト・オブ・ザ・ボックス」です - あなたは基本的にあなた自身のカスタムコードですべて(認証、承認)をしています.... –

答えて

0

WSHttpBindingを使用してカスタムユーザー名パスワードバリデーターを記述することができます。これにより、ユーザー名のパスワードを検証することができます。ただし、認証が行われると共有されるトークンにデータを追加することはできません。

これはセッションが有効なバインディングです。これは、クライアントがサーバー上に関連する状態を持っていることを意味します。認証部分は、あなたができるので、トリッキーな部分である

http://www.pnpguidance.net/post/WCF35SecurityGuidelinesNowAvailable.aspx

(要求が別のサーバーに行く場合は、認証をrestablishが必要になる場合がありますので、これは、間にロードバランサとスケールアウトのシナリオに有利ではありません)プリンシパルのアクセス許可を明示的に指定するか、必須のオプションを指定します。 http://msdn.microsoft.com/en-us/library/ff647503.aspx#AuthorizationOptionsWCF

3

私は最終的に、カスタムセキュアトークンサービスを使用していました。私のクライアントはSTSを呼び出し、認証し、ストアであるトークンを取得します。次に、メッセージインスペクタを使用して、すべての発信wcfサービスコールにトークンを挿入し、サーバー側でメッセージインスペクタを使用して、トークンを検証することによってすべての呼び出しを傍受し、検証しました。これはかなりうまくいった。