我真的很难理解这个问题。我有一个假设的流程,其中包括 3 个实体:用户/浏览器、AuthServer、客户端/应用程序。此流程将授权代码流程与 PKCE 一起使用。步骤如下:
现在针对攻击场景:假设用户是一家公司的员工,该公司使用 Web 代理,该 Web 代理会拦截并终止并存储其之间的所有 TLS 流量。特权管理员可以访问此代理并具有恶意意图 - 什么会阻止此管理员在步骤 6 中重放请求,并基本上劫持身份验证并窃取生成的令牌?我不知道 PKCE 在这里有什么帮助,因为在这种情况下这只是验证客户端,并且客户端仍然是正确的。
您是正确的,如果授权代码和验证程序被拦截,PKCE 本身并不能防止重播攻击,因为它假设客户端是值得信赖的,但代理管理员是否仍然需要拥有代码验证程序,我想知道如何得到了吗?
您可以应用多种缓解技术来解决您的问题。
Certificate Pinning
的概念可以防止代理终止客户端/应用程序与AuthServer之间的TLS连接,从而阻止管理员拦截和读取授权代码或验证程序的能力