如何保护通过 OAuth Spotify 创建的帐户

How do I secure an account that is created via OAuth Spotify

我希望用户通过 OAuth Spotify 在我的网站上注册一个帐户。我有以下方案:

  1. 用户通过 Spotify 进行身份验证
  2. 返回 Spotify ID 和邮件
  3. 将在网站上创建一个帐户(保存到数据库)
  4. 用户可以使用他的 Spotify 登录以访问该帐户

我在这里预见到的问题是,有人可以通过复制另一个用户的 ID 和邮件来欺骗身份验证,对吗?如果是这样,让用户使用 Spotify 身份验证创建帐户的更好方法是什么?让用户设置密码?这似乎对我不友好。

那么,我该如何实现呢?

您可以使用通过 OAuth 获取的访问令牌来查找关联的用户名。您可以使用它作为您帐户的基础,而不是您自己网站上的用户名或密码。该过程类似于:

  1. 用户通过 Spotify 进行身份验证
  2. Spotify OAuth 回调returns授权码
  3. 您使用授权码为用户获取访问和刷新令牌
  4. 您使用访问令牌访问关联的用户 ID,并将其用作您网站上帐户的唯一 ID。
  5. 将具有 Spotify 用户 ID 的帐户保存到您站点的数据库中
  6. 用户可以使用 Spotify 再次登录以访问他们的帐户(如果他们之前已经批准了您的网站并在他们的浏览器中登录了 Spotify,这将通过跳过 Spotify OAuth 视图来简化流程)

由于您的应用程序只会从某人的有效访问令牌中检索用户 ID,并且您的应用程序接收用户 ID 的唯一方式是他们通过 Spotify OAuth 流程登录,因此您网站上的每个帐户都将链接到一个有效、唯一的 Spotify 用户。

在调查此问题时,存在关于单独使用 OAuth 对用户进行身份验证的安全注意事项。我会查看 this post on Security Stack Exchange 并根据您的站点需要的安全级别来决定。