为移动应用创建ApiKey和SecretKey

时间:2019-05-01 11:36:01

标签: java c# android asp.net-mvc api

我正在尝试为我们的项目创建一个API,以便我们可以在我们的Android应用程序中使用它。这里是这种情况:

  • 用户打开应用
  • 他/她输入用户名(电话或电子邮件)和密码
  • 应用将其发送到服务器以验证帐户
  • 如果已通过验证,则应用会调用其他API来显示产品和 等给用户

问题是用户名和密码都必须被哈希,对吗? 因此,如果我想对它们进行哈希处理,则需要一个App和Server都知道的密钥(秘密密钥),以便它们可以进行通信,这就是我的解决方案(我需要解决方案的帮助,因为我认为这可能有点不对头)

  • 该应用读取“唯一设备ID”,Google将其称为“实例ID”, 所以从现在起我将其称为实例ID。 (参考: https://developer.android.com/training/articles/user-data-ids#instance-ids-guids
  • 该应用将“实例ID”发送到服务器
  • 服务器为该实例ID创建一个新的Api密钥和秘密密钥,并 使用实例ID对它们进行哈希处理,然后将其发送回应用程序
  • 现在用户每次发送数据或请求(可以是他们的登录名 信息或仅是对api的请求),我使用 秘密密钥并在HTTP授权标头中发送Api密钥。
  • 服务器接收到请求数据时,它将从以下位置读取Api密钥: HTTP授权标头,找到与此相关的秘密密钥 Api密钥并使用秘密密钥读取传递给 服务器。

我从来没有做过这样的事情,这就是我感到困惑的原因。它的好处之一是我可以为用户显示已安装应用程序的列表,他/她可以禁用该应用程序,这样它就不会无法登录。

我的解决方案安全吗? 我知道这不是编码问题,而是解决方案/算法问题,但是正如我提到的那样,我从未做过这样的事情。如果我的解决方案是错误的,那么如果您指出正确的方向,我将不胜感激。

0 个答案:

没有答案