REST API是否需要密码并在每次请求时登录?

net*_*rox 5 php api rest

假设我开发了一个社交网站,我决定我希望应用程序的核心完全是REST.用户使用密码登录.现在,我的问题是每个请求都需要密码和登录对(假设您需要提供您的身份)在URL的末尾www.site.com/index.php?p=pass&l=login吗?在每次请求时我都会有点紧张.我知道我错过了一些东西......它不可能是因为任何人都可以窥探数据包并捕获密码并轻松登录.我认为在HTTPS中完成所有请求都没有意义(我读过它对资源的负担).

所以请填写我需要了解的缺失部分.

Bor*_*lid 12

首先,除非您知道使用SSL对您来说太昂贵,否则请使用SSL.安全性在性能优化之前出现.

现在,关于传递用户名和密码:通常你有一个"API访问令牌"等.它实际上不是用户名/密码,但是当有人拥有它时,它们被授予了发出API请求的能力.这些可以有限或无限制的有效性.您甚至可以将令牌设为签名 - 用户使用某个密钥签署请求,然后验证签名.

但是,是的,因为每个API请求都独立于最后一个,所以您将要么必须使用HTTP基本身份验证或其等效身份,要么在每次请求时传递API令牌(或其他签名设备).


Bru*_*lva 6

通常,您调用login方法,该方法将生成可在所有下一个请求中重用的令牌.

我的建议是强制在每个请求上使用SSL,如果不可能,您应该请求安全登录并为该特定会话生成临时令牌(类似于会话ID).

您可以在下图中看到Flickr API如何使用OAuth提供身份验证.在这种情况下,临时令牌用于请求永久令牌和令牌机密.

OAuth Flickr图

摘自:http://www.flickr.com/services/api/auth.oauth.html#access_token