本地主机上的HTTPS用于桌面应用程序的OAuth

问题描述:

我正在创建使用Spotify的oauth api的桌面应用程序。我正在使用这里描述的隐式授权流程:https://developer.spotify.com/web-api/authorization-guide/#implicit_grant_flow本地主机上的HTTPS用于桌面应用程序的OAuth

我的想法是有一个“验证”按钮,单击它并打开浏览器。您登录/批准与Spotify的连接。然后它会将您发送到重定向网址。

我想将此重定向url设置为127.0.0.1:58212或环回设备上的某个端口。

我的问题是,我应该使用https吗?

我倾向于是。一种是因为访问令牌需要安全,并且我相信系统中的其他用户在发送邮件时可能会读取该邮件,另外两个用户则因为用户登录所用的时间,可能会有人接管端口。

所以我想SSL加密的消息,我想确保我实际上在跟我的应用程序交谈。

如何在这种情况下生成证书?我认为应用程序的每个实例都需要拥有自己的证书,并且我需要以某种方式通知计算机在应用程序的生命周期中信任该证书。

我也可以在安装过程中生成证书,并在安装过程中执行一些操作,使系统信任该证书。

我在想这是否正确的方法,还是我在谈论这一切都是错误的?

我正在使用电子并用JavaScript表达我的应用程序。

感谢您的任何建议。

安装Oauth与安装的应用程序(如桌面应用程序)的最佳方式是为已安装的应用程序使用Oauth 2流程。但是这个选项必须由服务提供商来实施。 Google提供了这个选项。

https://developers.google.com/api-client-library/python/auth/installed-app

不幸的是,很多服务没有实现的OAuth2。

要将Oauth 1.0与已安装的应用程序一起使用,而不是返回到callback_url,服务提供程序会向用户显示授权码,然后用户可以将该授权码复制并粘贴到桌面应用程序。检查出Trello Ouath整合,允许这一点。

您试图实现的Web Api流程在桌面应用程序中不起作用。重定向uri 127.0.0.1:port是你当地的uri。服务提供商至少需要您的公共IP将流量重定向回您的系统。

AFAIK,对于桌面或本地应用程序,实现Oauth授权代码流要好得多。隐式授权旨在用于设备浏览器而不是Web视图。

如果您的应用程序使用Web Service进行连接,那么您的Web Service需要使用https的重定向URL。幸运的是,大多数托管平台,如Heroku免费提供给你(否则你需要购买一份SSL证书,这可能是很多工作)。

在授权码流上,令牌不需要看到客户端,它都存储在后端。

大多数服务允许您使用http测试localhost。 我写了一个tutorial,可以给你一些关于流程的指导。