尽管通过在本机应用程序中使用 PKCE,client_id 如何受到保护

How client_id is protected alhough by using PKCE in native app

客户端二进制文件中提供的机密 (client_secret) 不能被视为机密 (rfc7636)。

所以我想在 PKCE 中使用授权代码流。这是为不使用客户端密码的客户端设计的。我了解 PKCE 确保客户端对于原始授权码请求和 access_token.

的请求相同

问题:

简而言之,是的。除非你使用类似 iOS 通用链接的回调 URL。

无论如何,客户端应用程序的安全性必须低于服务器端。在这种情况下,身份验证可以做的是确保用户是真实的。特别是,PKCE 确保启动应用程序的用户与在手机上网时输入凭据的用户相同 shell。

当你有 "super-extra-sensitive-data-store" 时,最好建立一个中间级别的保护,服务器端是的,有一个秘密和证书。

关于我们为其构建保护的 purose 的一些想法。当我们想要保护自己(或第 3 方 api)免受黑客攻击时,试图破坏自己设备上的应用程序,那么我们没有机会。当我们的目标是保护合法用户 运行 一个有效的应用程序免受某些恶意代码的侵害时,设备和 os 的制造商会帮助我们进行数字签名检查等。与桌面上的网络相同。回调 url 只是指示浏览器去,但它可以在用户需要时忽略该指令。因此,验证该应用程序的唯一方法是将其存放在安全的地方。os。