2009-07-01 11 views
4

私はWCFの世界に比較的新しいので、初心者の質問のための私の賛美です。私は現在、WCFサービスのレイヤーを設計中です。そのうちの一つは、認証サービスですので、私は、次の認証メカニズムを思い付いた:WCF認証サービス

IUserService.TryAuthenticateUser(string username, string password, out string key) 

Basiclyユーザーが認証しようとすると、成功した場合 - 彼/彼女がSESSIONKEY/securitykey/whateverkey ...鍵を受け取り、それ以外の「WCFアクション」ごとに必要です

IService.GiveMeMyFeatures(string key); 
IService.Method1(string key); 

このメカニズムは、私にとって非常に直感的に検索し、また、実装するのは非常に簡単ですので、私は同様のWCFの例を見つけるカントなぜ何私を気にすることはありますか?このユニークなキー(実質的にwcf側の有効期限とすべてを持つセッションキー)は、アプリケーションのアーキテクチャに従って、さまざまなアプリケーションから使用できます。ASP.NEtでは、Winform/WPF /モバイル私はそれがフィールドのフォームクラスに格納することができると思います。

ここで質問1が来ます:この方法についてどう思いますか?

ビルドインASP.NET認証サービス(メンバーシッププロバイダなど...私が正しく理解している場合)を使用することもできます。 > WCF - - > ASP.NET認証サービス - >応答

で ASP.NET:ASP.NETページからの認証時のワークフローは次のようになりますので、アーキテクチャの観点から私は、この方法のように、本当にいけませんこのシナリオでは、WCFレイヤーをバイパスしてauthを呼び出すこともできます。 asp.netページから直接サービスメソッドを呼び出します。すべての認証要求に対してWCFレイヤーを通過することでパフォーマンスは低下しますが、素敵な階層化されたアーキテクチャを持つことが重要です。

ここに質問2があります。 /最初のものよりもこの方法の不利な点は、アーキテクチャの観点からはそれが間違っているときに、なぜそんなに人気がありますか?

また、WCFメソッド呼び出しごとにユーザー資格情報を送信し、組み込みのメカニズムを使用して要求を認証し、適切に応答できることも読んでいます。

質問3:この方法ならどうなりますか?

合計で、明らかに多くの認証方法がありますが、どちらが最もよく、最も一般的であると思いますか(WCFサービスはasp.net/wpf/mobile/etcから呼び出されると考えています) ?

おかげで事前:)

答えて

5

あなたはそれがベストプラクティスではありません例を見つけることができない理由である - それはステートフルな何かに、Webサービスをステートレスである必要があり、何かを回しています、とでうまくバランスをロードしません何かすべて。

Webサービスには標準のユーザー名とパスワードの機能が既に用意されているため、ほとんどすべてのSOAPスタック(Silverlightを除く)でサポートされています。標準的な.NETロールベースのセキュリティモデルを使用すると、この方法でもメソッドを保護できます。

+1

+1 - 「通話ごと」のシナリオを使用すると、それぞれの通話が前の通話と分離され、通話間で何も共有されません。 –

+0

私は間違って説明したと思う。私は呼び出し間で情報を共有したくない、私はちょうどその呼び出しが有効なユーザーから来ていることを確認したい。私は、毎回パスワードを送信するという考えを嫌います。したがって、私は「抽象的な」キーコンセプトを思いつきます... アイデアを少し改良しましたが、UserServiceを使用してユーザー名とパスワードからキーを取得しましたが、キーをwcfメソッドごとにパラメータとして渡すのではなく、カスタム資格情報 – Krassi

関連する問題