3

一个简单的场景:

假设我们在云中有一个 Web 应用程序,允许用户使用 OpenID 进行注册。(我愿意使用 Windows Live ID 作为替代)他们可以登录并更新一些元数据,例如他们最喜欢的颜色是什么。

如果我现在想从桌面客户端获取此信息,我该怎么做?我可能必须公开一个 Web 服务才能查询这些信息,但是身份验证如何呢?

DotNetOpenAuthWindows Identity Foundation,我们有 CardSpace 等。
但是我该从哪里开始呢?我需要哪一个?我需要全部 3 个吗?
那么 STS 呢,有没有用于 OpenID / Windows Live ID 的?

有没有人看到使用这些技术的样本可以满足我的要求?任何指针?

4

1 回答 1

2

将身份验证和授权的概念分开。您仅在您的网站上验证用户。您可以使用 OpenID、InfoCard、STS 或用户名+密码来执行此操作。调用您的服务以获取用户特定信息的客户端应用程序必须经过授权,这传统上意味着它们会要求用户输入用户名+密码,这是一种反模式,并且当您使用更强大或替代的凭据(例如 OpenID 或 InfoCard)时会崩溃,如您所见。

授权应用程序应使用授权协议(例如 OAuth),该协议允许用户访问允许桌面应用程序访问用户私人数据的网页,而无需用户将其凭据暴露给应用程序。

DotNetOpenAuth 支持这个完整的场景。它带有示例 OAuth 和 OpenID 站点。我建议您查看任何一个演示 OpenID 登录的项目模板(Web 表单甚至包括 InfoCard 登录作为选项)以及 OAuth 服务提供程序,使其适用于 Web 用户并直接授权这些客户端应用程序盒子。

于 2010-03-02T03:41:05.163 回答