一个简单的场景:
假设我们在云端部署了一个Web应用程序,允许用户使用OpenID进行注册。 (我愿意使用Windows Live ID作为替代方案) 他们可以登录并更新一些元数据,例如他们最喜欢的颜色。
如果我现在想从桌面客户端获取此信息,我该怎么做? 我可能不得不公开一个Web服务来查询这些信息,但是如何进行身份验证?
有DotNetOpenAuth,而且Windows Identity Foundation,我们有CardSpace等。
但是,我从哪里开始?我需要哪一个?我需要全部3吗?
那么STS,OpenID / Windows Live ID有什么用?
有没有人看过使用这些技术的样本会做我想要的? 有什么指针吗?
答案 0 :(得分:2)
将您的身份验证和授权概念分开。您只能在 网站上对用户进行身份验证。您可以使用OpenID,InfoCard,STS或用户名+密码执行此操作。为您的服务调用特定于用户的信息的客户端应用必须授权,这通常意味着他们要求用户输入用户名+密码,这是一种反模式,并且当您使用更强或者正如您所见,替代凭证,如OpenID或InfoCard。
授权应用程序应使用OAuth之类的委派协议,该协议允许用户访问允许桌面应用程序访问用户私有数据的网页,而无需用户将其凭据公开给应用程序。
DotNetOpenAuth支持这种完整方案。它带有示例OAuth和OpenID站点。我建议您查看演示OpenID登录的project templates(以及一个甚至包括InfoCard登录的网络表单)以及OAuth服务提供商,使其适用于两个Web用户并授权这些客户端应用程序开箱即用。