我在SO上发现了很多关于这个主题的问题,但找不到回答这个问题:
我应该使用用户名和密码,还是使用API密钥验证用户?每种方法的优缺点是什么。
我问这个是因为在我的API中,有几种方法我想锁定并验证用户是否可以访问某些文档或操作。我有点不愿意通过让用户使用他们的用户名和密码发送HTTP AUTH标头进行身份验证,因为它感觉不安全并且对用户来说更麻烦。另一方面,如果我使用API密钥,那么用户创建密码的重点是什么?因为他们将不再使用它来访问API的功能。
更新
如果其他读者对我最终使用的内容感到好奇,我决定复制亚马逊的验证方式(好的解释here:https://www.ida.liu.se/~TDP024/labs/hmacarticle.pdf)
答案 0 :(得分:7)
您可以使用SSL上的HTTP身份验证,这足够安全。然而,它使API的消耗有点困难,因为它需要客户端库来支持SSL。如果您同时期待过多的呼叫,SSL也会影响性能。
API密钥选项与没有SSL的HTTP身份验证一样不安全。如果您不关心安全性,那么API Key对于API的消费者来说是最简单的。
答案 1 :(得分:5)
一个好的方法是使用登录方法,获取用户名和密码(希望通过TLS)。如果他们成功授权,你给他们一个到期的令牌;其余的API调用必须包含此标记才能成功。