我正在构建一个只能供 iOS 应用程序访问的 Web 服务。将来我想扩展到移动网站,使我的服务也可用于其他移动操作系统。
现在,我通过 API 完成了所有工作。我的用户可以注册、搜索公司、从这些公司订购产品并跟踪他们的订单。它还没有激活,但它正在工作..
我面临一个主要问题:如何确保这一点?
在过去的几天里,我停止了编码,并且一直忙于在 Web、StackOverflow 和 Information Security 中搜索如何做到这一点。我发现亚马逊保护他们的 API 的方式对我来说是最好的解决方案。此处解释了 Amazon 保护其服务的方式。我为我的服务做了一些调整:
- 用户注册并获取私有 API 密钥 + 公共(识别)密钥
- 用户输入凭据并点击“登录”。应用程序使用变量 + 私钥创建散列。应用程序向 API 发送变量 + 时间戳 + 哈希 + 公钥
- API 在数据库中查找公钥,找到属于该公钥的私钥(如果公钥有效)。然后,API 以与应用程序相同的方式创建哈希。如果哈希值相同,则执行请求(在本例中为登录)。
这种保护服务的方式对我来说很有意义,而且我可以编写大部分代码。但我有一个大问题,我找不到任何解决方案:
- 创建帐户时,用户将获得一个公共和私有 API 密钥。公钥可以从服务器发送到用户设备,因为这不一定是秘密。由于私有 API 密钥永远无法通过网络发送,我究竟如何确保在用户设备上登录的帐户知道在服务器上创建的私有 API 密钥?
有谁知道如何解决这个问题??任何帮助将不胜感激!