我正在尝试为数据库模式找到一个好的标准,它可以让我做几件事。主要是,我正在编写一个需要处理各种类型登录的网络应用程序。第一个是标准的 ASP 应用程序服务登录,第二个是 OpenId/oAuth 登录,第三个是 Active Directory 登录。
对于处理其中大部分的数据模式有什么好的建议?我计划将 DotNetOpenAuth 用于 oAuth 和 OpenId。我已经知道如何让所有这些项目单独工作,但我正在努力寻找一种方法来完成它们,而无需通过黑客将它们捆绑在一起。
应用程序还必须根据这些用户管理各种权限。基本上,如果有一个“Admin”组,则可以将用户(无论是 AD 帐户、OpenId 帐户还是 Forms Auth 帐户)添加到该组,应用程序可以在页面或方法级别(使用 MVC)检查权限。
愿意接受建议吗?
编辑:由于我没有收到任何建议,我会尝试澄清一下。基本上,如果我得到一个 Identifer(假设它是 OpenId 用户 key 、oAuth 用户 key 或 AD 域/用户),我如何将其绑定(bind)到标准 ASP Membership Profider 配置文件/用户?我是否应该使用随 secret 码创建一个新的成员(member)用户并通过属性将 OpenId/oAuth/AD 帐户链接到配置文件?
基本上,我正在寻找与此网站类似的内容。用户通过某些东西登录,创建一个配置文件,存储一些东西,所以我们知道它是什么。本质上,我只需要知道如何让所有这些身份验证方法协同工作。
谢谢!
最佳答案
我想我会尝试解释我为解决这个问题所做的工作。
首先,我决定放弃标准的 ASP Sql 服务表,为此我创建了自己的 User、AuthenticationServices 和 AuthenticationServicesUsers 表。
User 表几乎是“asp_Users 和 asp_Membership”表的组合。 AuthenticationServices 表是一个列表,我计划在其中放置包含我希望使用的身份验证服务(即 Facebook、MySpace、MyOpenId、Google 等...)的信息
因为我希望用户将尽可能多的服务链接到他们的帐户,所以我设置了第三个表 AuthenticationServicesUsers,我在其中存储 UserId 和 AuthenticationServiceId。
由于此实现不适用于标准 SqlMembershipProvider,因此我继续编写自己的自定义成员资格提供程序。在这里,我扩展了接受各种方法的功能,例如 CreateUser 方法,它允许我不传入密码信息,而是传入从服务返回的标识符。
这就是我现在所在的位置,正在通过 atm 进行调试。我有一些与用户和 MembershipUsers 相关的问题,但一旦我弄明白了,我想我就可以解决了。
谢谢你的回复!
关于database-design - 什么是带有 OpenId 的 Forms 身份验证的良好数据库架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4001936/