0

私は、何かを行うメインサービスを持つアーキテクチャを設計しています(はい、まだ設計中です)。ユーザーの認証、データのインポート、結果の取得などを行います。それと対話する ASP MVC3 UI モジュールもあります。ここで重要なのは、将来的には SharePoint またはサービスを使用する単なる一括インポート アプリになる可能性があるため、注意が必要ですが、現時点では ASP MVC3 です。

私が決定するのに苦労しているのは、認証です。SqlProvider よりも MembershipProvider の方が好きです。私たちはM $の家なので、その道を進んで喜んでいます. 私がやりたいことは、UI にログインしているユーザーの認証と、実際のサービス呼び出しの認証を結びつけることです。大まかに「通常」と「管理者」の 2 種類のユーザーがあり、認証を処理する最もエレガントな方法を決めることはできません。

私は自分が持っているものが本当に好きです。WCF サービスによって提供される SqlProvider とサービス呼び出しへのアクセスもすべてそれに関連付けられています (現在、すべてのサービス呼び出しはサービス コントラクトごとではなく構成によってロックされているため、これを整理する必要があります)。

これに関する問題は、クリア テキストでユーザー名とパスワードを渡す必要があり、証明書の世界にいることを防ぐ必要があることです。ここでの私の調査では、dev 証明書は悪く、実際の証明書は高価であるため、真の場合はどちらもオプションではありません。

問題は次のとおりです。最良のアプローチは何ですか? i) 許可されていないものを呼び出すことができないように、各呼び出しで認証するサービスが必要です-可能な限りエレガントに処理されますii) ステートレスであるため、サービスをスケーリング/クラスター化できます。iii) クライアント側で制御できないため、置き換えることができます。

証明書に代わるものとして、何らかのトークンを返すサービスへのログイン呼び出しを考えました。このトークンは、他の呼び出しと共に渡され、カスタム プリンシパル プロバイダーを使用して認証されます。これの長所は、UI とサービスの間で Windows 暗号化を使用し、ロールの認証を一緒に渡すことができることです。私が避けたいのは、醜いように見えるので、各呼び出しのパラメーターに u/n の詳細を渡すことです。

助けてください!

4

1 に答える 1

0

WCF はカスタム フィールドを SOAP ヘッダーに追加する機能を提供します。これにより、認証などの分野横断的な問題をメッセージ パラメーターから引き出して、わずかに高いレベルで処理することができます。

しかし、それだけではありません。WCF では、これらのヘッダーを暗号化することもできます。これにより、ヘッダーがプレーン テキストでネットワーク経由で送信されるのを防ぐことができます。Steven Cheng によるこのブログ投稿では、これを実現する方法について適切な説明が提供されています。

基本的に、既存のサービスに簡単に適用できるカスタム コントラクト動作を作成します。

于 2012-08-29T13:30:27.750 に答える