0

我想在 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 没有 Internet 连接时,您仍然可以使用您的 Passport 凭据登录它。

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

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

4

1 回答 1

0

使用自定义 MembershipProvider,您只需要实现,

  • 获取用户
  • 验证用户

另一个想法是,使用 LiveID,它支持安全令牌服务,因此您可以使用 Windows 身份框架,请参阅此处 让 Live ID 通过 WIF 工作

于 2013-02-20T01:32:01.740 回答