在使用授权码授权类型为移动应用程序实现 OAuth 2.0 时,我们可以在注册应用程序时在身份提供者上生成 clientid。(我们不会为移动应用程序生成客户端密码)
我的问题是,身份服务器如何验证 response_type=code&client_id=client_id 的第一个请求是否来自正确的移动应用程序?由于客户端 ID 在 URL 中,因此任何人都可以使用读取它并将请求发送到授权服务器。
更新: 根据https://auth0.com/docs/flows/concepts/auth-code-pkce,引入 PKCE 是因为客户端密码在移动设备上不安全。恶意应用程序可以捕获自定义 url。
现在,作为一名黑客,我可以通过使用应用程序的开发窗口流量监控移动默认浏览器来获取应用程序的客户端 ID,例如 A,该应用程序已向身份验证服务器 (IS) 注册。我得到了 stackoverflow 的客户端 ID,我没有在这里披露。我将创建一个移动恶意移动应用程序,它将注册实际移动应用程序 A 的自定义 url。这个应用程序将使用相同的 clientid 和重定向 url 以及 PKCE 质询进行重定向。现在,IS 将如何识别请求 id 是否来自正确的客户端。因为,如链接中所述,如果我能够注册恶意应用程序以捕获移动设备的自定义重定向 url 请求,那么我将能够捕获身份验证代码并使用恶意应用程序执行其余的工作流程。
Google 在创建应用程序时采用捆绑标识符 (IOS) 或应用程序签名 (Android)。它是否有助于以某种方式识别应用程序?