什么是API令牌

时间:2013-07-22 10:11:45

标签: php android ios api authentication

我正在尝试找出处理移动应用程序(iOS和Android)和API(PHP)的用户身份验证的最佳方法。

根据我的研究,选项包括:

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

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

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

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

  1. 可以更正我对API令牌的解释。它们适用于什么?它们与会话ID的区别如何?
  2. API令牌有哪些优势?
  3. oAuth(如果我们简化其用途)只是一个用于创建“API令牌”的协议吗?

1 个答案:

答案 0 :(得分:24)

我不是专家,但我会给你几分钱,我已经拿到了:

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安全方法。