客户端二进制文件中提供的机密 (client_secret) 不能被视为机密 (rfc7636)。
所以我想将授权代码流与 PKCE 一起使用。这是为不使用客户端密码的客户端设计的。我了解PKCE确保客户端对于原始授权码请求和access_token请求相同。
问题:
- 客户本身如何得到保护?
- 我同意客户(id)。如果恶意客户端使用我的 client_id 并管理用户登录怎么办。该恶意客户端是否“同意”?
客户端二进制文件中提供的机密 (client_secret) 不能被视为机密 (rfc7636)。
所以我想将授权代码流与 PKCE 一起使用。这是为不使用客户端密码的客户端设计的。我了解PKCE确保客户端对于原始授权码请求和access_token请求相同。
问题:
简而言之,是的。除非您对回调 URL 使用 iOS 通用链接之类的东西。
无论如何,客户端应用程序的安全性必须低于服务器端。在这种情况下,身份验证可以做的是确保用户是真实的。特别是,PKCE 确保启动应用程序的用户与在手机的冲浪外壳中输入凭据的用户相同。
当您拥有“超级敏感数据存储”时,最好建立一个中间级别的保护,服务器端是的,带有秘密和证书。
关于我们建立保护的目的的一些想法。当我们想保护自己(或 3rd 方 api)免受黑客攻击,试图破坏自己设备上的应用程序时,我们就没有机会了。当我们的目标是保护运行有效应用程序的合法用户免受恶意代码攻击时,设备和操作系统的制造商会帮助我们进行数字签名检查等。与桌面上的网络相同。回调 url 只是指示浏览器去,但它可以在用户需要时忽略该指令。因此,证明该应用程序的唯一方法是将其托管在安全的地方。