OAuth 2.0授权授予流程中的客户端验证,而移动应用中没有客户端密码

问题描述 投票:0回答:1

使用授权码授予类型为移动应用程序实现OAuth 2.0时,我们可以在注册应用程序时在身份提供程序上生成一个clientid。(我们不会为移动应用程序生成客户端密钥)

[我的问题是,身份服务器如何验证response_type = code&client_id = client_id的第一个请求是否来自正确的移动应用程序?由于客户端ID在URL中,因此任何人都可以使用它读取并将请求发送到授权服务器。

更新:根据https://auth0.com/docs/flows/concepts/auth-code-pkce,由于客户端密码在移动设备上不安全,因此引入了PKCE。恶意应用程序可以捕获自定义网址。

现在,作为一名黑客,我可以使用向认证服务器(IS)注册的应用程序A的开发窗口流量监视移动默认浏览器来获取应用程序的客户端ID。我得到了他stackoverflow的客户ID,我在这里没有透露。我将创建一个移动恶意移动应用程序,该应用程序将注册实际移动应用程序A的自定义网址。此应用程序将使用相同的clientid和url以及PKCE挑战进行重定向。现在,IS将如何识别请求ID是否来自正确的客户端。由于如链接中所述,如果我能够注册恶意应用程序以捕获移动设备的自定义重定向url请求,那么我将能够捕获身份验证代码并使用恶意应用程序执行其余的工作流程。

oauth-2.0 identityserver4 pkce
1个回答
0
投票

Oauth2需要SSL,因此并非所有人都能读取您的url参数。网址也已在SSL请求中加密。您的客户端向DNS服务器询问IP地址。它将不带参数的请求url发送到DNS。获取IP地址后,加密的请求将发送到该IP地址。

公共客户比私人客户安全性低,对此毫无疑问。

© www.soinside.com 2019 - 2024. All rights reserved.