3

我有一个在 ASP.NET 中构建的 Web 应用程序,它具有以下安全要求:

  1. 必须能够与将唯一密钥传回应用程序以指示用户已通过第三方站点登录的主身份验证方案集成。
  2. 必须能够使用现有的用户/角色表。
  3. 如果用户不是第三方站点的成员,则可以使用表单身份验证并允许用户通过单独的登录页面登录。

我尝试自定义 SQL 角色和成员资格提供程序,但遇到了问题,特别是有一个强类型的 MembershipUser 对象,它有一个 uniqueIdentifier (providerKey) 并且没有空间容纳我自己的自定义键集(有将是两个)识别用户。

我应该放弃我的自定义会员提供程序实施而只使用 cookie/session 吗?我真的很想使用内置功能,但它似乎不可行。

4

3 回答 3

1

您可能想要做的是在现有功能的基础上构建您的项目 1,请先尝试。使用返回的信息,自动登录用户。如果第一个过程失败,使用内置代码进行标准身份验证。

我已经为使用 DotNetNuke 的客户多次在 ASP.NET 成员资格提供程序之上构建了这种类型的系统,它运行良好。

于 2009-04-20T18:52:28.060 回答
0

我成功地放弃了会员提供者,并且根本不使用它。我创建了一个新的 IMembershipService 接口和一个实现,用于处理我的 Web 应用程序用户的创建和验证。

我已经创建了自己的用户模型。这使我可以在我的应用程序中拥有一个灵活的角色模型。我可以自由地创建上下文域角色并将它们与实际用户模型分离。

这真的没那么难。记得给你的密码加盐等等,并阅读一些安全书籍。

您仍然可以通过这种方法使用 FormsAuthentication。

大多数依赖 asp.net 会员提供程序的系统在某种程度上确实是精神分裂症。您将有 2 个用户表,例如在 CommunityServer 中,您有 aspnet_users 和 cs_Users,其中 cs_Users 引用 aspnet_users 的 MembershipId 并在其中引入另一个 UserId。它还反映了用户名等。

于 2009-05-08T09:05:11.820 回答
0

去吧,这里是来自 Scott Guthrie 博客的内置 ASP.NET 2.0 Membership 提供程序的源代码。

于 2009-04-20T18:54:38.773 回答