database-design - 什么是带有 OpenId 的 Forms 身份验证的良好数据库架构?

标签 database-design openid oauth dotnetopenauth security

我正在尝试为数据库模式找到一个好的标准,它可以让我做几件事。主要是,我正在编写一个需要处理各种类型登录的网络应用程序。第一个是标准的 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/

相关文章:

php - 如何将 OpenID 添加到 php 站点?

mysql - 错误 1215 : database design with foreign key

database - 数据库架构的目的是什么?

database - 你能在一个好的数据库模式中有 2 个具有相同结构的表吗?

c# - 如何保护 ASP.NET Web API

java - Google 使用 Post 方法端点 OAuth

oauth - gosimple/oauth2 和谷歌 OAuth2

sql - 列名中应该使用下划线吗?

java - 我们如何使用 Amazon cognito 作为其他应用程序(例如 google 或 facebook)的身份提供商

openid - Keycloak 和身份代理 (OpenId) IdentityBrokerException "Token no longer valid"