HTTP基本身份验证与密钥

时间:2015-09-11 22:44:52

标签: php authentication basic-authentication http-authentication api-key

在构建了一个相当简单的API之后,我开始研究身份验证,其中只使用用户名/密码组合的SSL上的基本HTTP身份验证对于使用它的人来说可能显得很弱,尽管此处的各种讨论表明它应该没问题。

在这种情况下,我从类似的解决方案中查看了API,这些解决方案为用户提供了用户ID和API密钥。问题是我不知道这是多么强大。我认为密钥仍然保存与密码相同,从我的角度来看,它看起来就像是在密码中调用密码。

示例:

https://github.com/Arie/serveme/blob/master/spec/fixtures/vcr/HiperzServer/_restart/visits_the_Hiperz_restart_URL.yml

&api_key=hiperz_api_key&gs_id=3873 args如何提供除用户名密码之外的任何进一步安全性?我肯定希望实现比用户/通过基本HTTP身份验证更强大的功能,并为最终用户提供某种类型的令牌/密钥以用于访问,但我没有看到这些方法的额外优势。

3 个答案:

答案 0 :(得分:1)

嗯,总有两步验证可以完成(通过向手机发送消息......或者可能为每个用户提供随机生成的代码来填充)。此外,您可以创建自己的加密机制并将其添加到网页的功能中。例如,您可以使用自己编写的加密密钥对数据进行加密,然后当它到达您想要的位置时,您只知道密钥,以便对其进行解密。

答案 1 :(得分:0)

我试图在Basic authentication中解释,建议不要

my answer here来保护API。

使用客户端ID和客户端密钥与用户名和密码身份验证非常相似是正确的。区别在于,在后一种情况下,您对用户(一个人)进行身份验证,在前者中您对客户端(应用程序)进行身份验证。

是否要使用客户端ID和密码保护您的API取决于您是否可以信任客户端以保密。

无论哪种方式,无论您是否拥有受信任的客户端,如Web应用程序(生活在安全的服务器上)或不受信任的客户端(如JavaScript应用程序或移动应用程序(生活在用户的领域)),基于令牌的身份验证方案(如OAuth2)提供了一种比基本身份验证更安全的API保护方式。有关使用OAuth 2.0获取令牌的不同方法的详细信息,请参阅my answer here

答案 2 :(得分:-1)

我目前正在学习API。我的理解是,通过使用API​​密钥,您可以更好地控制用户拥有的权限。此外,API密钥也可以随时重新调用。此外,它还可以节省客户在每次使用API​​时输入登录详细信息的时间。我不确定这是否回答了你的问题。