2014-02-18 69 views
0

因此,REST体系结构实现了GET,POST,PUTDELETE请求。我想谈谈GET的请求。 http://example.com/api/students这是一个根据REST体系结构的GET请求,它会给我一个数据库中的学生列表。对GET请求上的RESTful API进行身份验证

我的问题是关于认证。它似乎是最好的方式,对GET请求验证是通过使用Access Token,像http://example.com/api/students?token=randomstring

这是怎么处理的服务器端,我的意思是secuencial过程中,要防止有人窃取其他用户的访问令牌和使用它。是否刷新每个请求上的令牌,并返回结果或类似的东西?

回答

0

首先 - 你不应该把凭据(访问令牌)放在URL中。它本身并不完全错误或被禁止 - 它只是不好的做法,因为它不可能在不公开URL的情况下分享URL(想想如果将URL复制到电子邮件并将其发送给朋友会发生什么)。 URL中的凭证只是简单地将它们轻易地暴露给其他人。

取出令牌并将其填充到HTTP授权标头中 - 这就是我们拥有它的原因。有很多不同的方式来使用该头,但在你的情况下,你会想使用“承载”令牌方法。下面是从RFC(http://tools.ietf.org/html/rfc6750)的例子:

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

在你做其他事情之前检查令牌的有效性的服务器。为防止他人窃取它,您需要在连接上执行SSL/TLS。

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

您可能想看看OAuth2,它定义了获取访问令牌的四种基本方式。