【发布时间】:2021-03-05 00:58:40
【问题描述】:
Spotify Api 有一个authorize users 选项,我目前正在使用它。授权完成后,您将收到一个 Authentication Token,可用于交换 Access Token 和 Refresh Token。在我的用例中,访问令牌将被发送到使用/me 调用请求用户详细信息的后端,之后将根据 Spotify 数据创建或登录用户。 Spotify ID(在响应中)将用于在我的后端创建用户,因此基本上您的 Spotify ID 与后端的帐户相关联。
我目前面临的问题如下:为了获取用户的 Spotify ID,后端必须进行 /me 调用。这并不理想,因为 Spotify 有速率限制,可以通过这种方式轻松触发。通常,当您使用 OAuth 进行身份验证时,您会收到一个包含数据的 JWT 令牌,可能是一个 id。您还可以使用您的公钥/私钥验证 JWT 令牌是否已被篡改。在 Spotify 的案例中,我们没有收到 JWT 令牌,而是一个通用令牌。我似乎无法找到如何从令牌中获取任何信息,我只是不知道。我已经尝试使用 Base64 对其进行解码,然后 AES(以及 DES 和 TripleDES 以及 Rabbit 和 RC4)使用公钥/私钥对其进行解密,但没有检索到有用的数据。我找不到任何关于如何从中获取任何数据的信息,似乎还没有人尝试过..
Auth0 有一个Spotify integration,他们也(据我所见)在后端使用/me 调用。我想他们正在使用代理等来绕过速率限制,但这暂时不适用。我预见的问题是来自互联网的任何 Spotify 令牌都可能登录到我的后端,因为我无法验证令牌是否已使用我的客户端 ID 创建...
希望 StackOverflow 上的一些陌生人知道答案或知道如何提供帮助,我列出了我检索到的所有公钥/私钥和响应(注意:这些是测试密钥,而不是我的应用程序的密钥?? ??):
Client ID: 6577d59d8dd643d5b2e53b25b0d5211e
Client Secret: c04640db6312400c9611229a81e65c6b
Authorization code: AQAGm98h91D9AsvavJXAL_V5DK-r6BtybDPbg7B31vZocO7TjOXqLQwhVSOmrHViXkippOPFjtrNjEjCQG6D0n1ImYbFXaTUNYGK4uIaeqqUdGne-KTZBE3MmBUP0iagpCY5HVjtTnty2FnL_JjD1a6omPAvSqTds1iexV6a
Access Token: BQAdbMy4Dhj0VCfnFS_VcEgjmMHBb9Sekjcal5F8T9HaXb7zIJjtsIRgjuzp4x3SGvAXgBw1NWdURSGGGHP5wPSU0Baqc9Zz4b5AvPGOX6aZy6w5c15GktTT_bvB-3wA3rfOqjYsrAGuzHuqxz0simNcYiQNiIyuhw
Refresh Token: AQApR35msEEcgq0pH7TWPXefcA8bHvc2rApA-mxRAuPo3QJVu5ksZMJMmh4jXy6USj2napzrZ9bJijVbkpZpgzPE8js-i-e9f7vVO0INnp-Q3P_gt3MIQ-4AbQ8eDBXORmw
TL;DR:
如何从 Spotify 访问令牌中获取数据,可能使用客户端 ID/客户端密钥?
因为我想不出(这就是问题所在)验证令牌的任何方式,所以任何 Spotify 令牌都可用于在我的后端创建一个帐户,而不仅仅是使用我的客户端 ID 创建的令牌。
【问题讨论】:
标签: authentication oauth-2.0 oauth jwt spotify