2009-04-20 8 views
3

私は、次のセキュリティ要件を持つASP.NETで構築していたWebアプリを持っている:カスタムメンバーシップとロールプロバイダを作成するという私の考えを解消することを考えています。意見ですか?

  1. はへのアプリケーションに固有のキーをバック渡しマスター認証スキームと統合することができる必要がありますユーザーが第三者サイト経由でログインしたことを示します。
  2. 既存のユーザー/ロールテーブルを使用できる必要があります。
  3. フォーム認証を使用し、サードパーティのサイトのメンバーでないユーザーが別のログインページを使用してログインできるようにすることができます。

SQLロールとメンバーシッププロバイダをカスタマイズしようとしましたが、特にuniqueIdentifier(providerKey)を持ち、独自のスペースを持たない厳密に型指定されたMembershipUserオブジェクトがあります。ユーザーを識別するカスタムキーセット(2つあります)。

私のカスタムメンバーシッププロバイダの実装を廃止し、代わりにcookies/sessionを使用する必要がありますか?私は本当に組み込み機能を使用したいと思いますが、それは実行可能に見えません。

答えて

1

既存の機能の上にアイテム1を作成することをお勧めします。情報が返されると、自動的にユーザーがログインします。最初のプロセスが失敗した場合は、組み込みコードを使用して標準の認証を行います。

私は、DotNetNukeを使用するクライアントのために、このタイプのシステムをASP.NETメンバーシッププロバイダの上に何度も構築しています。

+0

ログイン/フォームクッキーで永続化するカスタムフィールドをどのように処理しますか?あなたがシステムから他のデータを引き出す必要があるIDのようなもの?言い換えれば、ASPメンバシッププロバイダが提供するものにどのように「追加」するのですか? – Caveatrob

+0

メンバーシッププロバイダーに存在するプロファイルプロパティー機能を使用して、余分なデータを保管します。 –

+0

プロファイルを使用して余分なフィールドを保存しますか?プロファイルをデータベースの既存のテーブルからロードできますか? – Caveatrob

0

私はメンバーシップ・プロバイダーを首尾よく捨てて、それをまったく使用しません。私は、新しいIMembershipServiceインターフェイスと、Webアプリケーションのユーザーの作成と検証を処理するための実装を作成しました。

自分のユーザーモデルを作成しました。これは私のアプリケーションの中で柔軟なロールモデルを持つことができます。コンテキストドメインの役割を自由に作成し、実際のユーザーモデルから切り離すことができます。

これは本当に難しいことではありません。あなたのパスワードなどを塩漬けし、いくつかのセキュリティブックを読むことを忘れないでください。

この方法でもFormsAuthenticationを使用できます。

asp.netメンバーシッププロバイダに依存しているほとんどのシステムは、本当に統合失調症です。 2つのUsersテーブルがあります。たとえば、CommunityServerにaspnet_usersとcs_Usersがあり、cs_Usersがaspnet_usersのMembershipIdを参照していて、別のUserIdを紹介しています。

+0

私はあなたが何を記述したかを正確に作成する過程にあります。すべてのポインタ?ゴッチャ? – Ben

関連する問題