【问题标题】:Implementing MembershipProvider实现 MembershipProvider
【发布时间】:2013-02-20 09:32:01
【问题描述】:

我想在 Silverlight/RIA 中使用 Microsoft Live/Connect/Passport(我想念任何人吗?)身份。

这有很多优点:

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

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

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

我已将 EnablePasswordReset 和 EnablePasswordRetrieval 设置为返回 false,因为我的应用程序不提供这些服务。 ValidateUser(username, password) 已实现并正常工作,使用 WebClient 将检查委托给 Microsoft 的服务器。然而仍然存在大量方法,所有方法都威胁到 NotImplementedException,我不知道 RIA 可能会调用哪些方法。这让我...

问题

鉴于用户帐户管理完全委托给 Passport,有谁知道我实际需要实施多少 MembershipProvider?

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

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

如果您喜欢这个想法,我们会征求您的意见。

【问题讨论】:

    标签: ria membership-provider


    【解决方案1】:

    有了Custom MembershipProvider,你只需要实现,

    • 获取用户
    • 验证用户

    另一个想法,使用 LiveID,它支持 Security Token Service,所以你可以使用 Windows Identity Framework 看这里 Getting Live ID to work via WIF

    【讨论】:

    • 看起来这样是个好主意,但学习曲线和依赖关系是噩梦般的。如果您已经在开发 Azure 应用程序,那将是值得的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多