Webセキュリティ(Microsoftのwebmatrixフレームワーク)と組み合わせたマルチテナンシーの概念に頭を悩ませています。私は次のようにマルチテナントのウェブサイトを構築しています:
- mvc4
- entityframework6
- websecurity(webmatrixから)
認証する
WebSecurityメソッドを使用してユーザーが登録およびログインできるようにすることができます。ユーザーがログインしているかどうか、またはを介して認証されているかどうかを確認できますUser.Identy.IsAuthenticated
。
テナントを決定する
URL()でテナントを決定し[companyname].domain.com
ます。
新規顧客を登録する
新規のお客様は、アプリケーションの登録フォームからテナントを作成できます。ユーザーが登録する場合(URLに会社名が含まれていない場合)、会社の入力としてアカウントの入力を指定する必要があります。次に、companyname.domain.comに準拠する新しいエイリアスを作成します。つまり、簡単に言うと、テナントは常に1人以上のユーザー(1-N)に結合されます。
要件
テナント「abc」のユーザーがテナント「xyz」にログインできないことを保証する必要があります。(したがって、WebSecurityフレームワークは、すべてのテナントの共有データベースのように見えるので、あまり好きではありません(または私は間違っていますか?))。
私の質問
実世界のマルチテナントアプリケーションで「テナント」と「認証されたユーザー」のチェックを処理する方法について、いくつかの洞察を共有できますか?
私にとってのホットなトピック:
- テナントと認証されたユーザーを1回検証しますか、それともすべてのコントローラーのすべてのアクションで検証しますか?
- デフォルトのWebセキュリティクラスに依存するのは安全ですか、それとも独自のユーザーテーブルを設計する方が良いですか、それとも顧客のMembershipProvidersがより良い代替手段ですか?
- 私はクッキーを使うべきですか、それともそれは非常に悪い選択です。
これらの質問についてすべて読むことができるドキュメントを共有していただければ、非常に助かります。私は、実際の設計(おそらくコード例でさえ)に飛び込むマルチテナンシーについてのより詳細なドキュメントを見たいと強く望んでいます。
私はすでにほとんどの「一般的なドキュメント」/「商業プレゼンテーション」を読みました:
- http://msdn.microsoft.com/en-us/library/aa479086.aspx
- http://www.businesscloud9.com/content/identifying-tenant-multi-tenant-azure-applications-part-2/10245
- http://msdn.microsoft.com/en-us/library/windowsazure/hh689716.aspx
- http://www.developer.com/design/article.php/3801931/Introduction-to-Multi-Tenant-Architecture.htm
必要に応じて、言い換えたり、コードを追加したり、助けを得るために必要なことは何でもします。
よろしくお願いします。