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

Posted

技术标签:

【中文标题】如何保护通过 OAuth Spotify 创建的帐户【英文标题】:How do I secure an account that is created via OAuth Spotify 【发布时间】:2018-07-28 11:21:06 【问题描述】:

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

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

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

那么,我该如何实现呢?

【问题讨论】:

【参考方案1】:

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

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

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

在研究这一点时,单独使用 OAuth 对用户进行身份验证存在一些安全考虑。我会查看 this post on Security Stack Exchange 并根据您的网站需要的安全级别来决定。

【讨论】:

非常感谢!实施后,它就像一个魅力!

以上是关于如何保护通过 OAuth Spotify 创建的帐户的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Spotify 获取 Oauth 令牌

在没有 oAuth 密钥的情况下通过 track id spotify 检索歌曲名称

无法通过具有客户端凭据流的 CloudFlare Worker 对 Spotify API 进行 OAuth

如何获得一个无限期使用的访问令牌/刷新令牌(oauth2 - Spotify API)

CocoaLibSpotify 通过 Spotify 应用程序登录?

带有 Spotify 的 OAuth 无法使用 curl 获取刷新令牌