什么是OpenId的Forms auth的良好数据库模式?

时间:2010-10-23 00:55:47

标签: database-design openid oauth dotnetopenauth security

我正在尝试为数据库架构找到一个很好的标准,让我做一些事情。主要是,我正在编写一个需要处理各种类型登录的Web应用程序。首先是标准的ASP Application Services登录,第二个是OpenId / oAuth登录,第三个是Active Directory登录。

处理大部分数据模式的数据模式有什么好建议?我打算在oAuth和OpenId上使用DotNetOpenAuth。我已经知道如何让所有这些项目单独工作,但我正在尝试一种方法来完成它们而不需要将它们组合在一起。

应用程序还必须根据这些用户管理各种权限。基本上,如果存在“管理”组,则可以将用户是AD帐户,OpenId帐户还是Forms Auth帐户添加到组中,并且应用程序可以在页面或方法级别(使用MVC)检查权限。

开放给建议?

编辑:由于我没有得到任何建议,我会尽力澄清。基本上,如果我得到一个Identifer(比如它是OpenId用户密钥,oAuth用户密钥或AD域/用户),我该如何将其与标准的ASP Membership Profider配置文件/用户联系起来?我是否应该使用随机密码创建新的会员用户并通过属性将OpenId / oAuth / AD帐户链接到个人资料?

基本上,我正在寻找类似于这个网站的东西。用户通过某些东西登录,创建一个配置文件,存储一些内容,以便我们知道它是什么。基本上我只需要了解如何让所有这些身份验证方法协同工作。

谢谢!

1 个答案:

答案 0 :(得分:0)

想想我会尝试解释我为解决这个问题所做的工作。

首先,我决定放弃标准的ASP Sql Services表,为此我创建了自己的User,AuthenticationServices和AuthenticationServicesUsers表。

User表几乎是“asp_Users和asp_Membership”表的组合。 AuthenticationServices表是一个列表,我计划放置包含我想使用的身份验证服务的信息(即Facebook,MySpace,MyOpenId,Google等等)

由于我希望用户将他们想要的服务链接到他们的帐户,我设置了第三个表AuthenticationServicesUsers,我存储了UserId和AuthenticationServiceId。

由于此实现不适用于标准的SqlMembershipProvider,因此我开始编写自己的自定义成员资格提供程序。在这里,我扩展了功能以接受各种方法,例如CreateUser方法,它允许我传入无密码信息,而不是我从服务中返回的标识符。

这就是我现在所处的位置,我正在通过atm进行调试。我有几个问题将用户与MembershipUsers联系起来,但只要我能想到这一点,我想我就会被设置。

感谢您的回复!