Hybrid Flow 中不能进行代码替换吗?
Can't code substitution happen in Hybrid Flow?
我正在尝试了解 openid 连接代码流。
在授权码流程中,授权码是通过前端通道来的。然后 id_token/access_token 使用客户端 ID 和客户端凭据通过后台通道。此外,它很容易受到代码替换攻击,并可能允许黑客冒充用户 here
但我无法理解混合流如何防止这种情况发生。我读了here。但是,是什么阻止了黑客同时替换代码和 id_token?可能是我无法阅读线条。但请帮助我理解这一点。
更新
仔细阅读后,我相信 id_token 有关于 aud 的信息,即它最初发布给哪个客户。所以恶意客户端会在其中包含 aud(并且恶意客户端不能用原始客户端的 Client_Id 替换它,因为它是由发行者签名的)所以,原始客户端将能够验证这是否已发给它。这是正确的理解吗?此外,还有其他一些情况,黑客可能会同时替换代码和 id_token?
你是对的:令牌由发行者签名并包含客户必须检查的 aud
声明这一事实将防止与用于不同客户的令牌交换。
我正在尝试了解 openid 连接代码流。
在授权码流程中,授权码是通过前端通道来的。然后 id_token/access_token 使用客户端 ID 和客户端凭据通过后台通道。此外,它很容易受到代码替换攻击,并可能允许黑客冒充用户 here
但我无法理解混合流如何防止这种情况发生。我读了here。但是,是什么阻止了黑客同时替换代码和 id_token?可能是我无法阅读线条。但请帮助我理解这一点。
更新
仔细阅读后,我相信 id_token 有关于 aud 的信息,即它最初发布给哪个客户。所以恶意客户端会在其中包含 aud(并且恶意客户端不能用原始客户端的 Client_Id 替换它,因为它是由发行者签名的)所以,原始客户端将能够验证这是否已发给它。这是正确的理解吗?此外,还有其他一些情况,黑客可能会同时替换代码和 id_token?
你是对的:令牌由发行者签名并包含客户必须检查的 aud
声明这一事实将防止与用于不同客户的令牌交换。