实施MembershipProvider

时间:2013-02-20 00:57:42

标签: ria membership-provider

我想使用Silverlight / Connect / Passport(我是否想念任何人?)与Silverlight / RIA的身份。

这有许多优点:

  • 避免在用户上添加另一个用户名/密码对
  • 用户帐户管理完全委托给Passport,不构成我的应用程序或其UI的一部分
  • 安全性和可用性的责任被移除给每个人都喜欢讨厌的公司

现在,RIA使用ASP.NET中的成员资格堆栈,默认情况下会回退到SQL Server中的aspnetdb。

我正在考虑实施MembershipProvider。到目前为止,我已经设置了适当的引用并覆盖了MembershipProvider,让IDE存根需要实现的所有方法。

我已将EnablePasswordReset和EnablePasswordRetrieval设置为false,因为我的应用不提供这些服务。 ValidateUser(用户名,密码)已实现并正常工作,使用WebClient将检查委派给Microsoft的服务器。然而,大量的方法仍然存在,都威胁到NotImplementedException,我不知道RIA可能会调用哪些方法。这导致我......

问题

有没有人知道我实际需要实施的MembershipProvider有多少,因为用户帐户管理完全委托给Passport?

我认为即使授权身份验证和帐户管理,也可以谨慎地缓存凭据。一旦建立了身份,最好是在没有互联网连接的情况下使用它。例如,当没有Internet连接时,您仍然可以使用Passport凭据登录Surface RT。

也许我应该从SqlMembershipProvider继承,以便ValidateUser检查用户名是否是本地已知的,如果没有尝试使用Passport的凭据,并且 - 如果它们通过 - 隐式创建本地用户,如果它确实存在但凭据失败,如果本地密码是陈旧的,请用护照检查,如果Passport接受密码则更新它。

如果您喜欢这个主意,请征求您的意见。

1 个答案:

答案 0 :(得分:0)

使用Custom MembershipProvider,您只需要实现

  • 的getUser
  • 的ValidateUser

另一个想法,使用LiveID,它支持安全令牌服务,因此您可以使用Windows Identity Framework查看此处 Getting Live ID to work via WIF