【问题标题】:How do I secure an account that is created via OAuth Spotify如何保护通过 OAuth Spotify 创建的帐户
【发布时间】:2018-07-28 11:21:06
【问题描述】:
我希望用户通过 OAuth Spotify 在我的网站上注册一个帐户。我有以下方案:
- 用户通过 Spotify 进行身份验证
- Spotify ID 和邮件返回
- 将在网站上创建一个帐户(保存到数据库中)
- 用户可以使用他的 Spotify 登录以访问该帐户
我在这里预见的问题是有人可以通过复制另一个用户的 ID 和邮件来欺骗身份验证,对吗?如果是这样,让用户使用 Spotify 身份验证创建帐户的更好方法是什么?让用户设置密码?这对我来说似乎用户不友好。
那么,我该如何实现呢?
【问题讨论】:
标签:
oauth
oauth-2.0
passwords
authorization
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 并根据您的网站需要的安全级别来决定。