RESTful API身份验证

时间:2011-09-30 06:11:54

标签: api rest restful-authentication

我在SO上发现了很多关于这个主题的问题,但找不到回答这个问题:

我应该使用用户名和密码,还是使用API​​密钥验证用户?每种方法的优缺点是什么。

我问这个是因为在我的API中,有几种方法我想锁定并验证用户是否可以访问某些文档或操作。我有点不愿意通过让用户使用他们的用户名和密码发送HTTP AUTH标头进行身份验证,因为它感觉不安全并且对用户来说更麻烦。另一方面,如果我使用API​​密钥,那么用户创建密码的重点是什么?因为他们将不再使用它来访问API的功能。

更新

如果其他读者对我最终使用的内容感到好奇,我决定复制亚马逊的验证方式(好的解释herehttps://www.ida.liu.se/~TDP024/labs/hmacarticle.pdf

2 个答案:

答案 0 :(得分:7)

您可以使用SSL上的HTTP身份验证,这足够安全。然而,它使API的消耗有点困难,因为它需要客户端库来支持SSL。如果您同时期待过多的呼叫,SSL也会影响性能。

API密钥选项与没有SSL的HTTP身份验证一样不安全。如果您不关心安全性,那么API Key对于API的消费者来说是最简单的。

答案 1 :(得分:5)

一个好的方法是使用登录方法,获取用户名和密码(希望通过TLS)。如果他们成功授权,你给他们一个到期的令牌;其余的API调用必须包含此标记才能成功。