我的最新API即将“发货”。来自“早期发布和经常发布”的背景,我计划在更高版本中实现oAuth。
为什么会出现这种情况,例如: Twitter removes Basic Auth from its API?在任何API中使用基本身份验证有哪些优点和缺点以及可能的安全隐患?
最佳
亨利克
答案 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提供了这样的能力。