oauth2重定向url如何为桌面应用程序工作?

时间:2016-06-01 06:37:38

标签: javascript oauth electron oauth2

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

我想通过Discord的oauth2登录验证用户身份。但我正在开发桌面应用程序,其背后没有Web服务。

我已经读过看起来像的重定向方案,

urn:ietf:wg:oauth:2.0:oob

但discord表示,通过oauth2 登录后,它是一个不匹配的重定向网址。

1 个答案:

答案 0 :(得分:2)

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

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