我们有一个简单的 API,我们不希望外部世界使用,只希望我们的 iPhone 客户端使用。
如何为移动设备的 API 验证客户端?
如果您有客户端可以访问的 API,您将无法阻止确定的技术人员也使用您的 API(因为用户可以识别存储在客户端中的任何秘密)。
如果您只是想防止随意使用,那么对客户端进行身份验证的一种相对简单的方法是拥有一个存储在客户端中的共享静态机密,并将其与例如基于HMAC 的 API 身份验证方案一起使用。
这是在内部类似于您所问的问题:
这是我在那边回复的:
这称为远程证明。这有很多问题。
在你进入这个方向之前,你需要问自己两个问题
你在保护谁?
我愿意投资多少?
如果您要保护自己免受知识非常有限的学生的侵害,他可能会编写另一个将使用您的服务器的移动应用程序,那么您可以使用一些共享的秘密。
如果您只保护一点点更复杂的软件工程师(他们可以对您的应用程序进行逆向工程) - 这还不够。该工程师可以从您的应用程序中提取一个秘密并在他的应用程序中使用它。
可以保护您免受简单逆向工程的解决方案非常复杂。