我是不是在发布请求的标头或正文中传递身份令牌?

Posted

技术标签:

【中文标题】我是不是在发布请求的标头或正文中传递身份令牌?【英文标题】:Do I Pass the Identity Token in a Header or Body of a Post Request?我是否在发布请求的标头或正文中传递身份令牌? 【发布时间】:2021-12-12 07:06:54 【问题描述】:

标题中的访问令牌和刷新令牌对我来说很有意义(来自this 答案),但我想知道对于 ID 或身份令牌也是如此。应该是:

    已传递到发布请求的正文中? 传入某个标头(授权标头由访问令牌使用) 别的东西(我误解了身份令牌的用途)

更多上下文,通过 SSO,我想获取用户的声明(仅存在于身份令牌中)并在我的系统中注册。我可以确认我可以通过将身份令牌放入初始 POST 请求的正文中轻松做到这一点(并验证服务器上的签名),但想检查我是否违反了某些标准。

谢谢!

【问题讨论】:

【参考方案1】:

原则上你可以传递 ID 令牌,假设:

    使用和验证 ID 令牌(依赖方,RP)的软件与目标系统属于同一应用程序和安全域 RP 和目标系统之间的链接是安全的,即双方的身份验证和通信的机密性都已建立 目标系统确实需要 ID 令牌中的所有信息,否则最好应用最少的披露并仅传递信息的子集

如果数据量相对较小,在标头中传递 ID 令牌(或声明的子集)可能会起作用,否则您可能会遇到 HTTP 标头长度限制。虽然使用 POST 的缺点是必须在运行中修改应用程序请求,这可能会更困难并且会产生副作用。

为了完整起见,刷新令牌永远不会在标头中传递,而只会由 RP 在 POST 请求中发送到授权服务器/提供者。

【讨论】:

以上是关于我是不是在发布请求的标头或正文中传递身份令牌?的主要内容,如果未能解决你的问题,请参考以下文章

为啥加特林不将身份验证令牌从 POST 返回正文发布到 GET 标头

我应该通过 HTTP 标头或将正文作为 JSON 传递到 REST Api 吗?

使用身份验证标头发出跨域请求

将标头用于身份验证令牌的主要原因是啥?

为啥我应该在 `Authorization: Bearer` 标头中发送令牌?

它是不是需要在任何具有基本身份验证的请求中传递用户名:密码组合?