2

所以我目前正在开发一个跨平台的应用程序。出于这个原因,我希望应用程序通过使用 Zend 框架的 REST API 构建来使用云服务上的外部数据库。我研究了如何构建安全的 REST API,许多资源指出使用 HMAC 进行身份验证。让我有点困惑的部分是密钥应该在哪里生成以及它应该如何与服务器和客户端共享?

每个单独的客户端(就像应用程序的每个用户一样)都应该获得一个唯一的密钥吗?

如果没有,我想我可以做这样的事情:

  1. 在服务器上为(例如)iOS 设备生成密钥。
  2. 硬编码应用程序中的密钥
  3. 对于每个请求,HMAC 都会发送散列密钥、一些数据和用户 ID。
  4. 我检查 HMAC 中的用户 ID 和以普通 JSON 发送的用户 ID,以及密钥是否匹配。
  5. 执行用户发送的任何用户请求。

每当第三方服务想要使用我的 REST API 时,我都需要专门为该服务生成一个单独的密钥。

如果每个用户都必须生成一个单独的密钥,那么我不知道如何将密钥传输到服务器而不会有中间人攻击的风险。

这听起来对吗?

4

0 回答 0