攻击者可以使用窃取的代码来请求访问令牌 从令牌端点冒充合法客户端。这是 对于公共客户来说尤其危险,这些应用程序 无法安全地存储客户端机密,例如本机或单页 应用程序。
如果攻击者以可以阻止使用授权代码的方式控制用户,那么如何阻止他们获得 PKCE 质询?
他们显然对客户有完全的控制权。
PKCE 的作用是确保是同一个客户端(应用程序)执行初始身份验证请求和使用授权代码的请求。
例如,在移动应用程序或浏览器扩展中,如果“邪恶”应用程序获得了授权码,那么它应该无法使用它。
问题在于,例如,多个应用程序可能会尝试在手机中注册相同的redirect_uri。
黑客如何捕获重定向?
移动应用程序通常会注册一个自定义方案来接收从STS返回的重定向请求:
app-name://?access_token=??????
例如:
com.googleusercontent.apps.123504760640ip7qq628i6dreavptfk981d9ji6x:/oauth2callback
com.googleusercontent.apps.5996697-7obf9q7equ9msfakdcg8iveqgn3sck1s:/oauth2callback
fb19884028963vimeo://authorize/fb1592193007691679://authorize/
x-msauth-azureiosapp://com.microsoft.azure
ms-whiteboard-iosauth://com.microsoft.whiteboard
mevo://vimeooauth
oreilly://oauth/complete
如果黑客也注册了相同的方案怎么办?
clientID,黑客可以轻松地从移动应用程序捕获示例请求。