实现REST API身份验证的最佳方法


21

我们开发基于社交的移动应用程序。每个应用程序都使用RESTful API Web服务。实施登录时,我通常将用户名和密码存储在设备上的某个位置。然后,我发送给他们,作为回应,我可以访问我的个人资料。但是我也知道还有另一种方法。

一个人用一种特定的算法生成令牌,然后发送令牌而不是用户名和密码来获得访问权限。

我应该如何实施?除登录外,我是否应将此令牌与其他所有请求一起发送?


11
那是认证,不是授权。身份验证=证明您就是您所说的自己。授权=证明您被允许做您要求的事情。
tdammers 2013年

我只是要在回答中添加相同的评论!+1给你@tdammers我已经编辑了所有内容,所以谷歌搜索授权不会把你带到这里
Shiplu Mokaddim

Answers:


14

有几种方法可以在RESTful上下文中实现身份验证,并且仅发送令牌而不是登录名/密码更为安全:您可以通过超时或其他条件轻松使令牌无效,并要求用户重新进行身份验证。

例如,使用HMAC的身份验证REST请求。通过这种方法,客户端将具有公共密钥秘密密钥。对于所有需要身份验证的请求,您应该添加publiс密钥,并使用秘密密钥来计算请求的哈希值

var myRequest = "https://myserver/resource?publicId=12345&param=value";
var requestHash = hmac_implementation(myRequest);
myRequest = myRequest + '&hmac=' + requestHash;

现在,服务器可以通过公钥识别请求并自己计算requestHash。如果两个哈希值相等,则授权用户。

顺便说一句,您还必须使用https来确保计算机网络上的通信安全-这将大大减少可能出现的问题。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.