我需要找到一个解决方案来确保我的应用程序将作为本地应用程序分发到移动设备上,并且只有我的应用程序可以访问我在其他地方托管的 Web 服务。换句话说,我的 Web 服务应该只接受通过合法使用我的应用程序的请求,而不是通过任何其他方式。
我想到的解决方案如下,请告诉我您是否认为有更好的解决方案,或者这个解决方案是否足够:
计数器同步一次性密码 (CS-OTP):基本思想是每一方(WS 和应用程序)都拥有一个硬编码的密钥和一个同步计数器。每次客户端应用程序向 WS 发送请求时,它都会使用密钥和计数器值生成一个哈希值。后端 WS 做同样的事情并比较哈希值,如果它们相同,则身份验证成功,并且双方都会增加它们的计数器以保持它们同步。由于每次成功尝试后计数器都会增加,因此哈希每次都会不同(因此名称为“一次性密码”)。
为什么我认为我需要一个一次性密码?因为如果密码或哈希值保持不变,客户端 App 用户可以很容易地截获它,然后可以在不需要 App 的情况下自行伪造请求。
告诉我你对这个解决方案的看法。