asp.net mvc アプリケーションの構築を開始しました。アプリケーションは、ユーザー、プロジェクト、共通テーブルなどを含む 1 つのメイン データベースと、特定のプロジェクトに関連するデータを含む多くのデータベース (すべて同じ構造) で構成されます。いくつかのグローバル ロール (メイン データベースに格納) といくつかのプロジェクト固有のロール (プロジェクト データベースに格納) を使用でき、各ユーザーは多くのプロジェクトにリンクできます。
私の目標は、従来のユーザー名/パスワード認証と OpenID 認証 (この目的で DotNetOpenAuth を使用しています) をサポートする認証システムと、上記で説明した役割システムをサポートする承認システムを構築することです。
しかし、私はいくつかの質問に出くわします: 1.) 単一のユーザーに対して (ユーザー名/パスワードと Ppenid) 認証オプションの両方をサポートする必要があると思います。は OpenId を使用しますが、SO のように単一のユーザーに対して複数の OpenId をサポートする必要があると思います (一部のプロバイダーがダウンしている場合)。
2.) これに最適なデータベースは次のようになると思います。
table Users (UserId (PK), LastActivityDate)
table UsernameLogins (UserId (PK,FK), Username, Password, IsApproved, IsLockedOut, LastLoginDate, LastLockedOutDate, etc...)
table OpenIdLogins(OpenIdUrl (PK), UserId(FK),LastLoginDate)
table Profiles(UserId(PK,FK), DisplayName(Unique), Email (Unique), FirstName, LastName, Address, Country, etc...)
table Roles(RoleName (PK), RoleType(1=GlobalRole,2=ProjectRole).
table UserRoles(UserId(FK,PK), RoleName(PK)).
3.) 独自のプロバイダー (MembershipProvider、ProfileProvider、RoleProvider) を作成する必要がありますか? MembershipProvider は OpenId 認証にはあまり適していないようです (もちろん、基本的なメソッド (GetUser、ValidateUser) しかサポートできません)。ユーザー名/パスワードによるログインのためだけに MembershipProvider を実装する必要がありますか? ProfileProvider と RoleProvider の実装はそれほど難しくないと思いますか? FormsAuthentication を使用して、独自の「サービス」を使用する必要がありますか?
また、DI には NHibernate と Spring を使用しています。
アドバイスをいただければ幸いです。
ありがとう!