授权代码流,将代码从移动应用程序发送到 REST API
Authorization Code Flow, sending the code from a mobile app to a REST API
我正在构建一个使用 REST API 来处理所有逻辑的移动应用程序(可能还有一个网站)。
也就是说,REST api 本身应该调用第三方 REST API(Spotify 之一)来处理 app/website.
的逻辑
所以基本上用户应该使用其 Spotify 帐户登录到我的 app/website,而我的 API 应该调用 Spotify Web Api
以使用其访问令牌检索用户数据,并且然后将它们发送回 app/website.
现在我花了很多时间研究有关身份验证的 Spotify 指南 here,看起来 Authorization Code Flow
应该适合我的用例。
我确实需要调用 /authorize
端点来从我的应用程序中检索 code
,因为我需要为此进行用户交互。在那之后,我确实拿回了 **code**
,我应该用 access_token
和 refresh_token
.
交换
但正如我所说,调用 Spotify API 的不是应用程序本身,而是我的 API。所以理论上我应该将收到的 code
发送到我的 API 并让他处理检索和刷新 access_token
和 refresh_token
.
所以我的问题是这是否有意义?可以将 code
从应用程序发送到我的 api 吗?
不确定是否清楚,所以我将附上一张我打算做什么的图表。
也可能在收到代码后,我会将自己的令牌发送回应用程序,以供以后的每个请求使用(某种程度上类似于您在处理 Facebook 或其他社交网站的授权时所做的事情)
嗯 - 以下是一些假设,但我的目标是使用标准流程。虽然有些解决方案不是很好。
业务解决方案
您是否正在尝试构建一个将用户的 Spotify 数据与您自己的用户数据相结合的应用程序?
目标架构
您自己的 UI 和 API 应该使用您发行的令牌,而不是 Spotify。仅在需要访问 Spotify 资源时使用 Spotify 令牌。这导致代码简单可靠。
标准选项 1
这是基于您可以控制来自多个来源的数据:
您应该有自己的登录和令牌发布系统。 UI 首先登录到您的应用程序,这使它能够使用令牌调用您的 API。
当您想要访问 Spotify 时,您需要再次重定向用户。然后用户可以同意您在您的应用程序中使用 Spotify 资源,之后您的网络/移动设备 UIs 获得 Spotify 令牌并可以调用 Spotify APIs。
标准选项 2
这是基于允许用户使用熟悉的凭据登录,该凭据通过联合登录工作:
- 用户需要登录
- 您的应用重定向到您的授权服务器
- 有第二次重定向到 Spotify
- 用户在 Spotify 登录
- Spotify 向您的授权服务器发布一个令牌
- 您的授权服务器将自己的令牌发布到您的移动应用程序
与此同时,您的网站 API 有自己的使用客户端凭证流的 Spotify 连接。
双跳码/令牌
这不是不安全,但会增加很多复杂性并且不标准。您需要维护某种 API 会话,每个用户有 2 种类型的令牌,访问令牌过期将是一个可怕的领域。
移动流量
对于移动应用程序,您应该使用授权代码流 (PKCE) - 我的 blog posts 有一些关于消息和用户体验的东西。
我正在构建一个使用 REST API 来处理所有逻辑的移动应用程序(可能还有一个网站)。
也就是说,REST api 本身应该调用第三方 REST API(Spotify 之一)来处理 app/website.
的逻辑所以基本上用户应该使用其 Spotify 帐户登录到我的 app/website,而我的 API 应该调用 Spotify Web Api
以使用其访问令牌检索用户数据,并且然后将它们发送回 app/website.
现在我花了很多时间研究有关身份验证的 Spotify 指南 here,看起来 Authorization Code Flow
应该适合我的用例。
我确实需要调用 /authorize
端点来从我的应用程序中检索 code
,因为我需要为此进行用户交互。在那之后,我确实拿回了 **code**
,我应该用 access_token
和 refresh_token
.
但正如我所说,调用 Spotify API 的不是应用程序本身,而是我的 API。所以理论上我应该将收到的 code
发送到我的 API 并让他处理检索和刷新 access_token
和 refresh_token
.
所以我的问题是这是否有意义?可以将 code
从应用程序发送到我的 api 吗?
不确定是否清楚,所以我将附上一张我打算做什么的图表。
也可能在收到代码后,我会将自己的令牌发送回应用程序,以供以后的每个请求使用(某种程度上类似于您在处理 Facebook 或其他社交网站的授权时所做的事情)
嗯 - 以下是一些假设,但我的目标是使用标准流程。虽然有些解决方案不是很好。
业务解决方案
您是否正在尝试构建一个将用户的 Spotify 数据与您自己的用户数据相结合的应用程序?
目标架构
您自己的 UI 和 API 应该使用您发行的令牌,而不是 Spotify。仅在需要访问 Spotify 资源时使用 Spotify 令牌。这导致代码简单可靠。
标准选项 1
这是基于您可以控制来自多个来源的数据:
您应该有自己的登录和令牌发布系统。 UI 首先登录到您的应用程序,这使它能够使用令牌调用您的 API。
当您想要访问 Spotify 时,您需要再次重定向用户。然后用户可以同意您在您的应用程序中使用 Spotify 资源,之后您的网络/移动设备 UIs 获得 Spotify 令牌并可以调用 Spotify APIs。
标准选项 2
这是基于允许用户使用熟悉的凭据登录,该凭据通过联合登录工作:
- 用户需要登录
- 您的应用重定向到您的授权服务器
- 有第二次重定向到 Spotify
- 用户在 Spotify 登录
- Spotify 向您的授权服务器发布一个令牌
- 您的授权服务器将自己的令牌发布到您的移动应用程序
与此同时,您的网站 API 有自己的使用客户端凭证流的 Spotify 连接。
双跳码/令牌
这不是不安全,但会增加很多复杂性并且不标准。您需要维护某种 API 会话,每个用户有 2 种类型的令牌,访问令牌过期将是一个可怕的领域。
移动流量
对于移动应用程序,您应该使用授权代码流 (PKCE) - 我的 blog posts 有一些关于消息和用户体验的东西。