我还应该为我的API提供基本身份验证吗?

时间:2010-08-30 09:07:53

标签: api basic-authentication

我的最新API即将“发货”。来自“早期发布和经常发布”的背景,我计划在更高版本中实现oAuth。

为什么会出现这种情况,例如: Twitter removes Basic Auth from its API?在任何API中使用基本身份验证有哪些优点和缺点以及可能的安全隐患?

最佳
亨利克

1 个答案:

答案 0 :(得分:1)

可能(以我的拙见)推断Twitter删除基本授权的原因是基于基本授权基于Base64 encoding。 Basic Authorization标头允许您对用户名和密码的字符串连接进行哈希处理(用冒号分隔)。

e.g。 (伪代码,语言无关)

String basicAuth = Base64Encode("username:password"); //where username is my username and password is password.
httpRequestHeader.setHeader("Authorization", "Basic " + basicAuth);

窃听者可以拦截HTTP请求,检索Authorization标头,并解码Base64编码的流并获取用户的用户名和密码。编码器/解码器代码可以在互联网上的任何地方找到。

现在,窃听者使用该用户名和密码登录Twitter并成为“新”用户(并更改密码,以便当前用户不再登录)。

或多或少,可以找到基本身份验证的陷阱here

其次,Twitter希望身份验证在发布商网站上完成,而不是通过第三方客户端远程发送。 OAuth提供了这样的能力。