【发布时间】:2019-09-21 07:48:20
【问题描述】:
我正在阅读 Spotify Web API 文档,重点是授权指南。 他们为授权代码 OAuth2 流程提供了一些示例代码,但有些东西对我来说似乎不太正确。我对 OAuth 协议的了解有点有限,所以我不能确定。
事实上,他们在服务器端进行调用以获取访问和刷新令牌,但随后他们重定向到初始路由 将令牌作为 URL 参数传递,以允许从 JS 代码中使用。 下面是node.js服务器的代码:
[POST call to the token end-point to get the tokens]
[...]
// we can also pass the token to the browser to make requests from there
res.redirect('/#' +
querystring.stringify({
access_token: access_token,
refresh_token: refresh_token
})
);
然后,在前端 JS 上,他们使用这些令牌向 API 发出 HTTP 请求。他们甚至将令牌刷新作为 AJAX 调用。
我的问题是:这不是使用授权代码流的坏方法吗?是不是我修改了代码,把所有需要使用access token的API调用都迁移到后端,然后通过内部调用获取到后端接收到的信息?
【问题讨论】:
-
根据tools.ietf.org/html/rfc6749#section-1.3.2 你应该使用隐式授权
-
除非有特定的设计要求,否则不要将 OAuth 令牌从服务器发送到客户端。使用会话/cookies。会话/cookies 应加密或不透明。不要将刷新令牌发送给客户端。几乎总是使用三足 OAuth。几乎总是从不信任浏览器或客户端。详细信息取决于您需要从身份验证、授权和标识中获得什么以安全地向客户端提供服务。
标签: javascript node.js oauth-2.0 spotify