2010-10-23 13 views
3

J'essaie de trouver un bon standard pour un schéma de base de données qui me permettra de faire quelques choses. Principalement, j'écris une application web qui doit gérer différents types de connexions. D'abord, le nom de connexion ASP Application Services standard, le second étant les connexions OpenId/oAuth et le troisième étant les connexions Active Directory.Qu'est-ce qu'un bon schéma de base de données pour Forms auth avec OpenId?

Quelle est une bonne suggestion pour un schéma de données qui gère la plupart d'entre eux? Je prévois d'utiliser DotNetOpenAuth pour oAuth et OpenId. Je sais déjà comment faire fonctionner tous ces éléments individuellement, mais j'essaie de trouver un moyen de les faire sans un hack pour les lier tous ensemble.

L'application doit également gérer diverses autorisations basées sur ces utilisateurs. Fondamentalement, s'il existe un groupe "Admin", l'utilisateur peut ajouter un compte AD, un compte OpenId ou un compte d'authentification Forms au groupe et l'application peut vérifier les autorisations au niveau de la page ou de la méthode (en utilisant MVC).

Ouvert aux suggestions?

EDIT: Comme je ne reçois aucune suggestion, je vais essayer de clarifier. Fondamentalement, si j'obtiens un identifiant (disons qu'il s'agit de la clé utilisateur OpenId, de la clé utilisateur oAuth ou du domaine/utilisateur AD), comment puis-je lier ceci à un profil/utilisateur ASP Membership Profider standard? Dois-je créer un nouvel utilisateur avec un mot de passe aléatoire et lier le compte OpenId/oAuth/AD au profil via les propriétés? Fondamentalement, je cherche quelque chose de semblable à ce site. L'utilisateur se connecte via quelque chose, un profil est créé, que quelque chose est stocké afin que nous sachions ce que c'est. Essentiellement, j'ai juste besoin d'une idée pour que toutes ces méthodes d'authentification fonctionnent ensemble.

Merci!

+0

Hmm faire des commentaires bump? – Dave

+0

Il y a aussi une réponse [ici] [1]. [1]: http: // stackoverflow.com/questions/493334/critique-mon-auth-system-db-schema –

Répondre

0

Figuré Je vais essayer d'expliquer ce que j'ai fait pour résoudre ce problème. D'abord, j'ai décidé d'abandonner les tables ASP Sql standard, pour cela j'ai créé mes propres tables User, AuthenticationServices et AuthenticationServicesUsers.

La table User est composée à peu près des tables "asp_Users et asp_Membership" combinées. La table AuthenticationServices est une liste où je prévois mettre des informations contenant les services d'authentification que je souhaite utiliser (par exemple Facebook, MySpace, MyOpenId, Google, etc ...)

Comme je voulais que les utilisateurs lient autant de services que ils voulaient thier comptes que je configure une troisième table AuthenticationServicesUsers où je stocke le UserId et AuthenticationServiceId.

Étant donné que cette implémentation ne fonctionnera pas avec le standard SqlMembershipProvider, j'ai commencé à coder mon propre fournisseur d'appartenances personnalisées. Ici j'ai étendu la fonctionnalité pour accepter diverses méthodes telles qu'une méthode CreateUser qui me laisse passer aucune information de mot de passe et à la place un identificateur que je reviens du service.

C'est où je suis maintenant, et je suis en train de déboguer à travers atm. J'ai quelques problèmes concernant les utilisateurs de MembershipUsers, mais dès que je peux comprendre cela, je pense que je serai prêt.

Merci pour votre réponse si!