为啥我应该在 `Authorization: Bearer` 标头中发送令牌?
Posted
技术标签:
【中文标题】为啥我应该在 `Authorization: Bearer` 标头中发送令牌?【英文标题】:Why should I send token in `Authorization: Bearer ` header?为什么我应该在 `Authorization: Bearer` 标头中发送令牌? 【发布时间】:2019-04-29 11:05:45 【问题描述】:我是 API 开发的新手。目前我在请求正文中传递了我的访问/身份验证令牌。例如,
status:true,
token:"<thetoken>"
但是,当我提到 API 安全性时,他们使用 Authorization
标头来传递令牌。
我的问题是,如果我在请求正文中发送令牌,会发生什么或出了什么问题?
-- 谢谢❤ ---
【问题讨论】:
这是 OAuth 等授权方法的常见做法。 API 可以在接受内容之前对请求进行授权。这可以通过不接受未经其标头验证的请求来节省一些处理开销。您是否正在编写自己的 API? @tshimkus 是的,我正在编写自己的 API 【参考方案1】:首先,保护 API 端点是一项已解决的任务。我建议您不要发明自己的授权协议,而是查看现有的行业标准,例如 OAuth 2.0 授权框架 (RFC 6749)。
出于多种原因,遵循标准是有意义的:
它们广为人知并经过实战考验 提供参考实现和库 您可以站在巨人的肩膀上,专注于您的业务逻辑 等但是,在请求正文中发送访问令牌并没有错。在RFC 6750 中,OAuth 2.0 协议定义了所有可能的不记名令牌用法,包括将令牌作为Form-Encoded Body Parameter 发送。请务必仔细阅读并考虑安全因素。
长话短说:只要您遵守标准,您如何分发访问令牌并不重要。
【讨论】:
以上是关于为啥我应该在 `Authorization: Bearer` 标头中发送令牌?的主要内容,如果未能解决你的问题,请参考以下文章
User must be authenticated with Spring Security before authorization can be completed.解决方法
为啥要对 Authorization 标头进行 base64 编码?
Foxmail 邮箱只能收邮件不能发邮件,提示:501 mail from address must be same as authorization user ?
为啥 to_be_bytes() 和 to_le_bytes() 与我在这里期望的相反?