如何在RESTful API中完成用户身份验证?

时间:2012-10-04 14:36:19

标签: php rest authentication recess

我正在尝试使用Recess开发一个简单的Web服务,这是一个旨在简单易用且本身就是RESTful的Web框架。我发现在Recess中使用CRUD功能非常容易。我在MySQL数据库中创建了一个带有后端的模型,发现REST API已经可以使用了。

这很好,但问题是我没有用户身份验证,这几乎使我上面描述的非常好的功能完全没用。在实际应用程序中,需要进行身份验证才能访问特定于用户的资源。例如,假设我正在开发一个简单的“待办事项”应用程序(顺便说一下,我不是这样)。用户对其他人放入待办事项列表没有兴趣,因此服务需要识别用户是谁,以便提供正确的数据。此外,不应允许用户阅读,删除或更新其他人的资源。

通常使用登录系统完成此操作。但对于REST API,用户如何进行身份验证?每次发出请求时,客户端是否需要提供用户的凭据(如用户名和密码)?怎么可以避免?通常,人们可以使用cookie,但这可能不是一种好的做法,因为并非所有客户端都必须是Web浏览器。但是如果我们要模仿cookie的功能,我们如何传输“cookies”内容(通常,这是在HTTP头中完成的)?最后,我如何在Recess的内置REST功能中集成解决这些问题的解决方案?

正如您所看到的,我对开发REST API相当陌生,因此欢迎任何建议和指示。

1 个答案:

答案 0 :(得分:3)

RESTful系统利用已有的现有技术,而不是重新实现它们。由于HTTP已经包含Basic Authentication形式的身份验证支持,因此您应该重新使用它。它是广泛支持的客户端传输凭证的机制。

是的,客户端应该在每次请求时发送凭据。 Cookie适用于不喜欢反复输入密码的人类客户,而这种情况并非如此。 Cookie意味着您的服务器上的会话状态,这会使可扩展性变得非常困难。

本网站上可能有一百个关于RESTful身份验证的问题。我鼓励你搜索和阅读更受欢迎的那些。