2

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 を使用しています。

アドバイスをいただければ幸いです。

ありがとう!

4

2 に答える 2

0

複数の OpenID のサポートが重要なのだろうか。これは、OpenID プロバイダーの役割のようです。たとえば、ClaimID を使用して、本質的に "転送の識別" (電子メール転送の意味で) に相当するものを取得して、それを別の ID に再バインドできるようにします。現在、プロバイダーを頻繁に再バインドすることはありませんが、プロバイダーはこれを行うことができます (つまり、ログイン ページにリダイレクトされたときに、最終的に提示したい ID を尋ねられる可能性があります)。問題は、これは本当にアプリケーションの実装の仕事なのかということです。

于 2009-05-15T14:20:15.640 に答える