我想在 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 接受密码,则更新它。
如果您喜欢这个想法,我们会征求您的意见。