OAuth和Handshakes混乱

时间:2012-05-15 15:12:29

标签: .net oauth oauth-2.0

我是OAuth的新手,无法直观地了解其工作原理。

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

我感到困惑的是,如何在没有服务器的桌面应用程序中调整此过程?我如何使用回调URL,如果我只是在桌面上运行.NET应用程序,如何检索令牌?

谢谢!

1 个答案:

答案 0 :(得分:2)

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

Google在此处详细介绍了如何将OAuth 2.0与“已安装的应用程序”结合使用: https://developers.google.com/accounts/docs/OAuth2InstalledApp

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

  1. 如上所述执行OAuth流程 - 使用标准URL处理程序弹出浏览器,但要求用户将授权代码从浏览器复制/粘贴回应用程序。这需要提供者对urn的redirect_url的支持:ietf:wg:oauth:2.0:oob。
  2. 打开浏览器窗口,自动从浏览器的标题窗口中捕获服务器返回的授权码,而不需要复制/粘贴。这也需要支持OOB redirect_url。
  3. 在您的应用中将OAuth请求作为嵌入式浏览器窗口执行,并捕获授权代码,如#2中所示。
  4. 如果您的OAuth 2.0提供程序不支持OOB,您还可以重定向到您拥有的Web服务器以完成类似的任务。

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