0

我是 OAuth 的新手,无法将其工作原理的过程可视化。

据我了解,当我尝试通过 OAuth 验证凭据时,我向登录服务器发送了一个请求,该服务器接管并让用户登录网站本身。如果凭据有效,则访问 OAuth 请求的回调 URL,并将令牌附加到回调 URL。此令牌必须与所有未来的 HTTP 请求一起传递给服务器,并用作用户凭据的验证。

我感到困惑的是,如何使这个过程适应没有服务器的桌面应用程序?我将什么用于回调 URL,如果我只是在桌面上运行 .NET 应用程序,如何检索令牌?

谢谢!

4

1 回答 1

2

这取决于您要支持的服务提供商。

谷歌在这里很好地描述了如何将 OAuth 2.0 与“已安装的应用程序”一起使用: https ://developers.google.com/accounts/docs/OAuth2InstalledApp

一般来说,有几种不同的策略:

  1. 执行上述 OAuth 流程 - 使用标准 URL 处理程序弹出浏览器,但要求用户将授权代码从浏览器复制/粘贴回您的应用程序。这需要提供者支持 urn:ietf:wg:oauth:2.0:oob 的 redirect_url。
  2. 打开浏览器窗口,并自动从浏览器的标题窗口捕获服务器返回的授权代码,而不需要复制/粘贴。这也需要支持 OOB redirect_url。
  3. 在您的应用程序中作为嵌入式浏览器窗口执行 OAuth 请求,并像 #2 中一样捕获授权代码。

如果您的 OAuth 2.0 提供程序不支持 OOB,您还可以重定向到您拥有的 Web 服务器以完成类似的任务。

最大的问题是您这样做是为了身份验证(获取用户身份)还是授权(通过 Web API 访问用户数据)。如果您尝试对用户进行身份验证,则需要一些您可以信任的服务器端逻辑来传递授权代码或访问令牌以进行验证。

于 2012-05-15T18:59:13.760 回答