oauth2 redirect url 如何用于桌面应用程序?
How does oauth2 redirect url work for desktop applications?
对于使用桌面应用程序的人,他们如何处理需要重定向 url 的第三方服务的 oauth2 流?
我想通过 Discord 的 oauth2 登录来验证用户。但我正在开发一个桌面应用程序,它背后没有网络服务。
我已经阅读了看起来像
的重定向方案
urn:ietf:wg:oauth:2.0:oob
但是 discord 说它是通过 oauth2..
登录后不匹配的 重定向 url
如果您使用桌面应用程序,您有两种选择:
- 您可以在本地启动网络服务器并使用
localhost
作为 redirectUri。缺点是您通常还需要在允许的重定向 Uris 列表中提供端口号,并且您不一定知道客户端上某个端口是否可用。
-
urn:ietf:wg:oauth:2.0:oob
指示服务器根本不重定向用户,而是在浏览器 windows 标题中输出代码。如果您有阅读其他 windows 标题的适当权限,那么您可以在那里自动检测更改。此外,代码通常会显示给用户,以便作为后备,他可以将代码复制并粘贴到您的应用程序中。但是您的服务可能不支持此功能。
- 设置一个为您转发令牌的网络服务。基本上,您设置了一个网络服务,您的应用程序将根据该网络服务进行身份验证,并且该网络服务 returns 一个 URL 到身份验证服务,包括一个适当的
state
给您,您将用户发送给您。然后身份验证服务会将您的用户发送回您的网络服务,该网络服务再次将代码报告给您的应用程序,例如通过长轮询、网络套接字或在整个过程中保持打开的真实 TCP 连接。请注意,web 服务需要仔细设计,以免服务被 third-parties 滥用。由于您无法在技术上根据 Web 服务对您的桌面应用程序进行身份验证,因此您无法阻止其他应用程序调用您的 Web 服务,但您可以在同意屏幕上向用户提供一些信息,帮助用户确定请求是否合法。
对于使用桌面应用程序的人,他们如何处理需要重定向 url 的第三方服务的 oauth2 流?
我想通过 Discord 的 oauth2 登录来验证用户。但我正在开发一个桌面应用程序,它背后没有网络服务。
我已经阅读了看起来像
的重定向方案urn:ietf:wg:oauth:2.0:oob
但是 discord 说它是通过 oauth2..
登录后不匹配的 重定向 url如果您使用桌面应用程序,您有两种选择:
- 您可以在本地启动网络服务器并使用
localhost
作为 redirectUri。缺点是您通常还需要在允许的重定向 Uris 列表中提供端口号,并且您不一定知道客户端上某个端口是否可用。 -
urn:ietf:wg:oauth:2.0:oob
指示服务器根本不重定向用户,而是在浏览器 windows 标题中输出代码。如果您有阅读其他 windows 标题的适当权限,那么您可以在那里自动检测更改。此外,代码通常会显示给用户,以便作为后备,他可以将代码复制并粘贴到您的应用程序中。但是您的服务可能不支持此功能。 - 设置一个为您转发令牌的网络服务。基本上,您设置了一个网络服务,您的应用程序将根据该网络服务进行身份验证,并且该网络服务 returns 一个 URL 到身份验证服务,包括一个适当的
state
给您,您将用户发送给您。然后身份验证服务会将您的用户发送回您的网络服务,该网络服务再次将代码报告给您的应用程序,例如通过长轮询、网络套接字或在整个过程中保持打开的真实 TCP 连接。请注意,web 服务需要仔细设计,以免服务被 third-parties 滥用。由于您无法在技术上根据 Web 服务对您的桌面应用程序进行身份验证,因此您无法阻止其他应用程序调用您的 Web 服务,但您可以在同意屏幕上向用户提供一些信息,帮助用户确定请求是否合法。