3

ASP.NETで構築しているWebアプリがあり、次のセキュリティ要件があります。

  1. ユーザーがサードパーティのサイトを介してログインしたことを示すために、アプリケーションに一意のキーを返すマスター認証スキームと統合できる必要があります。
  2. 既存のuser/rolesテーブルを使用できる必要があります。
  3. フォーム認証を使用し、ユーザーがサードパーティのサイトのメンバーでない場合は、別のログインページからログインできるようにすることができます。

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

カスタムメンバーシッププロバイダーの実装を放棄し、代わりにCookie /セッションを使用する必要がありますか?組み込みの機能を本当に使いたいのですが、うまくいかないようです。

4

3 に答える 3

1

あなたがしたいと思うかもしれないことは、既存の機能の上にあなたのアイテム1を構築することです、最初にそれを試みてください。返された情報を使用して、ユーザーを自動的にログインします。最初のプロセスが失敗した場合は、組み込みコードを使用して標準認証を実行します。

DotNetNukeを使用するクライアントのために、ASP.NETメンバーシッププロバイダー上にこのタイプのシステムを何度も構築しましたが、非常にうまく機能します。

于 2009-04-20T18:52:28.060 に答える
0

これが、ScottGuthrieのブログにある組み込みのASP.NET2.0メンバーシッププロバイダーのソースです。

于 2009-04-20T18:54:38.773 に答える
0

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

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

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

このアプローチでもFormsAuthenticationを使用できます。

asp.netメンバーシッププロバイダーに依存するほとんどのシステムは、ある意味で本当に統合失調症です。2つのUsersテーブルがあります。たとえば、CommunityServerにはaspnet_usersとcs_Usersがあり、cs_Usersはaspnet_usersのMembershipIdを参照し、さらに別のUserIdを導入します。また、ユーザー名などもミラーリングします。

于 2009-05-08T09:05:11.820 に答える