【发布时间】:2014-12-16 12:22:07
【问题描述】:
我正在 Laravel 中设计一个 REST API 以与我的 ios 应用程序一起使用。目前我坚持以下几点:如何保护我的 REST API 以仅允许访问我的 ios 应用程序?
我已阅读有关 HTTP 基本身份验证、HMAC、oAuth2 的信息。
1) 基本身份验证需要 SSL,它要求您在每次 api 调用时发送用户名:密码。
- 但这不会阻止其他人使用来自其他应用程序的 API,假设他们将登录凭据发布到端点?
2) 我了解 HMAC 方法以及客户端和服务器如何知道公钥和私钥。私钥与请求和其他数据一起被加密。公钥在标头中发送。当服务器收到请求时,它会检测标头中的公钥并将其与数据库中的私钥相关联。然后它重新计算哈希并检查它是否匹配。所以,我有以下问题:
- 如果不通过网络发送私钥,新注册用户如何将私钥存储在 IOS 应用程序中?
- 这是否更适合将使用您的应用程序的应用程序?我通常会在 Instagram 和 Facebook 等 API 仪表板中看到这一点,他们会在其中为您提供应用密钥,对吗?
3) oAuth2 - 对我来说,这更像是允许人们使用另一个 API 登录我的应用程序。例如,允许用户使用 FB 登录我的应用程序并允许我的 API 使用 Facebook 数据?我现在真的不需要这样做。
- 我误解了吗?
听起来我需要通过向我的 IOS APP 授予我将其存储在我的 IOS APP 代码中的私钥来合并类似于 HMAC 方法的东西。当从 ios 应用程序中运行请求时,我会传递带有私钥和其他数据的哈希值,然后当服务器上收到请求时,我会通过重新计算哈希值来检测请求是否来自应用程序内的用户。我不知道这是否安全,我认为它不安全?
我缺乏什么知识?我现在很困惑,写这个问题是一场巨大的斗争。一旦事情变得更加清楚,我将对其进行修改。
【问题讨论】:
标签: api rest authentication oauth restful-authentication