RESTful API身份验证

Obt*_*bto 16 api rest restful-authentication

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

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

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

UPDATE

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

Muh*_*han 7

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

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


Ivo*_*Ivo 5

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