为什么 oauth 不允许在正文多部分/表单数据中使用令牌



rfc明确要求,只有当内容类型是表单url编码时,才在正文中传递令牌这背后的原因是什么?为什么不允许多部分?

解决方法:

当浏览器将内容类型设置为multiparty/form-data 时,这会导致文件上传出现问题最常见的解决方案是在查询字符串中传递令牌,这对于日志或历史记录中的外观是不安全的。

首选方法是使用Authorization报头发送访问令牌。规范中的正文和URL变体是为了对由于某种原因无法设置HTTP头值的客户端启用OAuth。为了限制服务器必须处理的可能性,标准将使用限制为仅form-url-encoded。您可以在以下回答中了解更多关于由此产生的问题:为什么我们更喜欢使用授权报头来向服务器发送承载令牌,而不是其他技术(如URL编码)

简而言之,为了支持使用不同的内容类型接收访问令牌,对于资源服务器来说会复杂得多。我相信这是这个决定背后的主要原因(尽管可能有一些我没有意识到的安全隐患)。

所以一般来说,最好的解决方案是在Authorization标头中传递令牌,而不是在body或URL中传递。

最新更新