在GET请求上对RESTful API进行身份验证

时间:2014-02-18 00:37:57

标签: rest authentication access-token

因此,REST架构实现了GETPOSTPUTDELETE个请求。我想谈谈GET次请求。 http://example.com/api/students这是REST架构下的GET请求,它会为我提供数据库中学生的列表。

我的问题是关于身份验证。似乎在GET请求上进行身份验证的最佳方式是使用Access Token,例如http://example.com/api/students?token=randomstring

这是如何处理服务器端,我的意思是一个secuencial进程,以防止有人窃取另一个用户的访问令牌并使用它。是在每个请求上刷新令牌并返回结果或类似的内容吗?

1 个答案:

答案 0 :(得分:0)

首先 - 你永远不应该在URL中放置凭证(访问令牌)。它本身并不完全错误或被禁止 - 这只是一种不好的做法,因为它使得在不暴露秘密凭证的情况下无法共享URL(想想如果将URL复制到电子邮件中并将其发送给朋友会发生什么)。网址中的凭据只会让您轻易将其暴露给他人。

获取令牌并将其填入HTTP Authorization标头 - 这就是我们拥有它的原因。有许多不同的方法可以使用该标头,但在您的情况下,您可能希望使用“bearer”标记方法。以下是RFC(http://tools.ietf.org/html/rfc6750)的示例:

GET /api/students HTTP/1.1
Host: example.com
Authorization: Bearer rAndomSTRiNg

在服务器上,您可以在执行任何其他操作之前检查令牌的有效性。为了防止其他人窃取它,您可以在连接上强制执行SSL / TLS。

令牌可能需要刷新 - 但这取决于您如何获得它以及您的其他基础架构。通常,您不需要为每个请求刷新它 - 只有在它过期的某个时间之后才会刷新。

您可能希望查看OAuth2,它定义了获取访问令牌的四种基本方法。