一个简单的场景:

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

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

有的是 DotNetOpenAuth 还有 Windows 身份基础, ,我们还有 CardSpace 等。
但我到底该从哪里开始呢?我需要其中哪一个?我需要全部 3 个吗?
那么STS呢,有OpenID / Windows Live ID的吗?

有谁看到使用这些技术的示例可以实现我正在寻找的功能?有什么指点吗?

有帮助吗?

解决方案

在您的脑海中区分身份验证和授权的概念。您在您的网站上对用户进行身份验证 仅有的. 。您可以使用 OpenID、InfoCard、STS 或用户名+密码来执行此操作。调用您的服务以获取用户特定信息的客户端应用程序必须 授权的, ,这传统上意味着他们要求用户提供用户名+密码,这是一种反模式,当您使用更强的或替代的凭据(例如 OpenID 或 InfoCard)时,就会崩溃,正如您所看到的。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top