【发布时间】: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 接受密码,则更新它。
如果您喜欢这个想法,我们会征求您的意见。
【问题讨论】: