2013-07-22 65 views
13

我正在尝试为我的移动应用程序(iOS & Android)和API(PHP)处理用户身份验证的最佳方式。什么是API令牌

从我所研究的选项是:

基本身份验证通过HTTPS - 用户为每个请求的检查用户名/密码。

会话 - 发送每个请求的会话ID;服务器保持状态。因此,应用程序发送用户名/密码和服务器检查后续请求中的登录用户,就像我的网站一样。

API令牌 - 移动应用程序发送用户名/密码并接收回令牌,然后将其附加到后续请求。令牌存储在数据库中并在每个请求中进行检查。

我猜我对API令牌的解释不正确,因为它们看起来与会话相同,因为我将会话ID存储在数据库中。

  1. 我可以解释API令牌的解释吗?他们是为了什么?它们与会话ID有什么不同?
  2. API令牌的优点是什么?
  3. oAuth(如果我们要简化它的使用)只是创建“API令牌”的协议?

回答

16

我不是专家,但我给你一对夫妇美分我拿起的:

1)API令牌是有点总称。通常,API令牌是请求访问您的服务的应用程序的唯一标识符。您的服务将生成一个API令牌,供应用程序在请求服务时使用。然后,您可以将它们提供的令牌与您存储的令牌进行匹配,以便进行验证。

会话ID可以使用,但其用途与API令牌不同。会话ID不是一种认证形式,而是授权的结果。一旦用户被授权使用资源(例如您的服务),通常会建立会话。因此,会话ID是在用户被授予对资源的访问权时创建的。 API令牌是与用户名/密码类似的认证形式。

2)API令牌是通过HTTP发送一些不安全的用户名/密码组合的替代品。然而,问题仍然存在,有人可以取而代之使用API​​令牌。

3)以某种方式是。这是保持API令牌“新鲜”的一种方法。当您要使用服务时,您不需要传递相同的API令牌,而是请求访问令牌。所述的OAuth 2.0步骤如下:
      a)要求发送与某些种凭证
      b)中成功的响应返回到服务的另一个请求与由代码
      C)以服务代码
        d)成功的响应返回访问令牌,用于从每个API请求签名,直到完成。

很多较大的服务提供商目前都使用OAuth 2.0。这不是一个完美的解决方案,但它可能是目前使用的最安全,最广泛的API安全方法。

+0

能否详细说明“会话ID不是认证的形式,而是授权的结果”? – paul

+0

更新了我的答案,总之 - 会话ID不是一种认证形式,API令牌是。 –

+0

你是说API密钥只是识别来自我的应用的请求,与用户通过应用登录无关?因为从我读过的API中应该是无状态的,而不是使用会话。 – paul