考虑废弃我编写自定义成员资格和角色提供者的想法。意见?

时间:2009-04-20 18:48:11

标签: authentication cookies authorization membership roles

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

  1. 必须能够与主要身份验证方案集成,该方案将唯一密钥传递回应用程序,以指示用户已通过第三方站点登录。
  2. 必须能够使用现有的用户/角色表。
  3. 可以使用表单身份验证,如果用户不是第三方站点的成员,则允许用户通过单独的登录页面登录。
  4. 我已经尝试过自定义SQL角色和成员资格提供程序,但是我遇到了一些问题,特别是有一个强类型的MembershipUser对象,它有一个uniqueIdentifier(providerKey)并且没有我自己的自定义集的空间。用于识别用户的密钥(将有两个)。

    我应该废弃我的自定义成员资格提供程序实现,而只是使用Cookie / session吗?我真的很想使用内置功能,但它似乎并不可行。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

答案 2 :(得分:0)

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

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

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

您仍然可以使用此方法使用FormsAuthentication。

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