【发布时间】:2019-07-28 14:30:16
【问题描述】:
发送 HTTPS 请求时,从安全角度来看,标头和帖子正文之间有什么区别吗?是否更容易受到泄漏或拦截?如果有,为什么?
我已经阅读了 GET 与 POST 以及各种身份验证和加密方案之间的比较,但没有关于 Header 与 application/x-www-form-urlencoded Post 正文的比较。我承认我只花了大约 20 分钟的时间进行谷歌搜索和 SO 搜索,如果之前已经介绍过,敬请见谅。
虽然我认为这对所有 HTTPS 流量都是通用的,但我是在 OpenId Connect 的上下文中询问的。我正在使用授权代码授权类型和 Spring Security OAuth 客户端库。
OIDC 规定客户端和授权服务器在将一次性代码交换为持久 id 令牌时可以选择发送凭据的方法。引用openid.net openid-connect-core section 9. Client Authentication:
本节定义了一组客户端身份验证方法,它们是 客户端在使用时用于向授权服务器进行身份验证 令牌端点。在客户端注册期间,RP(客户端)可以 注册客户端身份验证方法。如果没有注册方法, 默认方法是 client_secret_basic。
这些客户端身份验证方法是:
client_secret_basic
已收到 client_secret 值的客户端 从授权服务器向授权进行身份验证 服务器按照 OAuth 2.0 [RFC6749] 的第 2.3.1 节使用 HTTP 基本身份验证方案。
注意,这是Authorization: Basic <value> 标头。我正在与之集成的提供商通过 OpenId client_id 和 client_secret 与冒号和 Base64 编码连接来支持这一点。
client_secret_post
客户 已从授权服务器收到 client_secret 值, 根据章节向授权服务器进行身份验证 OAuth 2.0 [RFC6749] 的 2.3.1 通过在请求正文中包含客户端凭据。
我无法找到任何特定于 OpenId Connect 的内容来表达两种方法之间的偏好。
我正在与允许任一方法的 OIDC 提供程序集成,但您必须选择并且所有相关资源服务器必须符合单一选择。标题和帖子正文都以纯文本形式发送。 (请注意,此提供程序不支持作为敏感密钥的 HMAC SHA 编码版本的 client_secret_jwt 方法或作为公私签名的 private_key_jwt 方法,这两种方法显然都比本质上是纯文本值更安全,但是目前尚不清楚这是否会为 TLS/SSL 加密通信增加任何实际的安全改进。)
【问题讨论】:
-
您使用的是哪种授权类型?您使用的是什么客户端类型?
标签: security post https header openid-connect