【问题标题】:API identity/authorizationAPI 身份/授权
【发布时间】:2012-11-12 15:11:21
【问题描述】:

我正在制作一个私有 API,其中客户端(应用程序)调用 API 提供者并检索或发送信息。我需要一种方法来授权或识别哪个应用程序正在执行操作,如果它可以访问它,同一个应用程序将在用户签入的不同位置使用,并且可以进行 API 调用从该位置而不是从另一个位置获取信息,但是我不确定是否允许使用 API 密钥或某些身份验证方法(如 OAUTH)来允许此操作。

【问题讨论】:

  • 确实需要更多信息来回答这个问题......
  • 更多信息,比如什么?

标签: android iphone security node.js oauth


【解决方案1】:

一般来说,您无法 100% 确定您的客户就是接收数据的人。黑客总能找到欺骗您的程序的方法。

尽管如此,还是有几种方法可以做某事。最好的方法是让每个客户端都有自己的密钥,他们以某种方式将其传递给服务器,进行身份验证。这些密钥必须以某种方式安全地传递到服务器。这不太可能发生。此密钥将唯一标识每个客户端。如果有任何客户滥用权限,他们可能会被拒绝。

下一步是创建上面提到的密钥,使用公钥加密它们,然后将它们发送到服务器。如果您愿意,您甚至可以进行审批。

客户端查询服务器的另一种解决方案,产生一个数字。然后用户将该号码输入到他们先前登录的网站中。该数字需要适当复杂,并且仅在几分钟内有效,以降低有人接管设备的风险。这适用于 Netflix 等单向应用程序。

总而言之,这取决于您对程序的需求。

【讨论】:

  • 我会使用 https + 的东西。我正在考虑每个客户端的密钥并使用基于哈希的消息身份验证,例如 HMAC。我需要使用 OAuth 吗?
  • OAuth 确实是一种不同的融合,它旨在告诉一台服务器另一台服务器可以从中提取数据。我会为每个客户端创建一个密钥,然后从那里,基于哈希的消息身份验证可能就可以了。
猜你喜欢
  • 2012-03-25
  • 2018-07-14
  • 1970-01-01
  • 2016-01-12
  • 2020-01-26
  • 2019-12-23
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多