如何传递HTTP身份验证令牌:使用标头还是POST数据?

4

设计HTTP API时,我们为什么要在以下两种方法之间做出选择:

  • 在头部传递身份验证令牌
  • 在POST数据中传递身份验证令牌?

我可以看到将身份验证令牌传递到查询中存在缺点:URL可能会在客户端或服务器端被记录。是否存在类似的副作用适用于在标头或POST数据中传递令牌?我正在尝试在这两种方法之间做出决定。


URL记录是我首先想到的主要问题。比客户端和服务器更令人担忧的是代理 - 即使您的身份验证是通过HTTPs进行的,一些公司环境也会进行SSL中间人攻击并仍然查看URL。 URL可能更容易受到不必要的登录攻击,其中某人刷新浏览器并生成新的登录请求; 浏览器不会自动重新提交POST内容。(当然,如果您有一个与浏览器无关的纯API,请忽略此内容)。 对于POST请求没有特别的考虑。 - RomanK
1个回答

2
我认为最好使用头部来传递身份验证令牌。我认为最重要的论点是,您可以在浏览器中查看令牌,如果使用HTTPS,则令牌也将可见(只有有效负载被加密)。
话虽如此,我认为您应该利用HTTP提供的现有身份验证机制/标头:
例如,头文件Authorization-请参见RFC 2617:http://www.ietf.org/rfc/rfc2617.txt 这个链接还可以为您提供有关在RESTful服务中实现身份验证的一些提示-请参见https://templth.wordpress.com/2015/01/05/implementing-authentication-with-tokens-for-restful-applications/ 希望这可以帮助您, Thierry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接