【问题标题】:How does oauth2 redirect url work for desktop applications?oauth2 重定向 url 如何用于桌面应用程序?
【发布时间】:2016-09-30 09:06:10
【问题描述】:

对于使用桌面应用程序的人,他们如何处理需要重定向 url 的第三方服务的 oauth2 流?

我想通过 Discord 的 oauth2 登录对用户进行身份验证。但我正在开发一个桌面应用程序,背后没有网络服务。

我已经阅读了看起来像这样的重定向方案,

urn:ietf:wg:oauth:2.0:oob

但 discord 说这是一个不匹配的通过 oauth2 登录后的重定向 url

【问题讨论】:

  • 我认为您需要开发一个用于oauth2登录的服务器端应用程序。实际上,Oauth2 是为使用指定 URL 进行访问的基于 Internet 的应用程序制作的。桌面应用程序无法以这种方式工作,因此您无法集成 Oauth2。

标签: javascript oauth electron oauth2


【解决方案1】:

如果您使用桌面应用程序,您有几个选择:

  1. 您可以在本地启动网络服务器并使用localhost 作为redirectUri。缺点是您通常还需要在允许的重定向 Uris 列表中提供端口号,并且您不必知道客户端上是否有某个端口可用。
  2. urn:ietf:wg:oauth:2.0:oob 指示服务器根本不重定向用户,而是在浏览器窗口标题中输出代码。如果您有阅读其他窗口标题的适当权限,那么您可以在那里自动检测更改。此外,代码通常会显示给用户,以便作为备用,他可以将代码复制并粘贴到您的应用程序中。但是,您的服务可能不支持此功能。
  3. 设置为您转发令牌的 Web 服务。基本上,您设置了一个 Web 服务,您的应用程序根据该 Web 服务进行身份验证,并且该 Web 服务返回一个 URL 到身份验证服务,包括一个适当的 state 给您,您将用户发送到该 URL。然后身份验证服务会将您的用户发送回您的网络服务,该服务再次将代码报告给您的应用程序,例如通过长轮询、Web 套接字或在整个过程中保持打开的真实 TCP 连接。请注意,Web 服务需要仔细设计,以免第三方滥用该服务。由于您无法针对 Web 服务从技术上验证您的桌面应用程序,因此您无法阻止其他应用程序调用您的 Web 服务,但您可以在同意屏幕上向用户提供一些信息,以帮助用户识别请求是否合法。

【讨论】:

  • 所以如果我想重定向到 iOS/OS X 应用(比如 myapp://oauth/callback),我需要 webservice 作为代理来重定向到这个 URI?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 2011-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
相关资源
最近更新 更多