我正在尝试找出处理我的移动应用程序(iOS 和 Android)和 API (PHP) 用户身份验证的最佳方法。
根据我的研究,选项是:
基于 HTTPS 的基本身份验证 - 检查每个请求的用户名/密码。
Sessions - 在每个请求中发送一个 session ID;服务器维护状态。因此,应用程序会在后续请求中发送用户名/密码和服务器检查登录用户,就像我的网站一样。
API token - 移动应用程序发送用户名/密码并接收回一个 token ,然后将其附加到后续请求。 token 存储在数据库中并在每个请求上检查。
我猜我对 API token 的解释是不正确的,因为它们看起来与 session 相同,因为我将 session ID 存储在数据库中。
- 能否更正我对 API token 的解释。它们是干什么用的?它们与 session ID 有何不同?
- API token 有哪些优势?
- oAuth(如果我们要简化它的使用)只是一种用于创建“API token ”的协议(protocol)吗?
最佳答案
我不是专家,但我会给你几美分我捡到的:
1) API Tokens 有点笼统。通常,API token 是请求访问您的服务的应用程序的唯一标识符。您的服务将生成一个 API token 供应用程序在请求您的服务时使用。然后,您可以将他们提供的 token 与您存储的 token 进行匹配以进行身份验证。
可以使用 session ID,但其用途与 API token 不同。 session id 不是一种身份验证形式,而是授权的结果。通常,一旦用户被授权使用资源(例如您的服务),就会建立 session 。因此,当用户被授予对资源的访问权限时,会创建一个 session ID。 API token 是类似于用户名/密码的身份验证形式。
2) API token 替代了通过 HTTP 发送一些用户名/密码组合,这是不安全的。但是问题仍然存在,有人可以取而代之使用 API token 。
3) 在某种程度上是的。这是一种保持 API token “新鲜”的方法。当您想要使用服务时,您请求访问 token ,而不是传递相同的 API token 。 OAuth 2.0步骤如下:
a) 使用某种凭证发送到服务的请求
b) 成功响应返回代码
c) 使用代码发出另一个服务请求
d) 成功的响应返回用于签署每个 API 请求的访问 token ,从那时到完成。
目前,许多大型服务提供商都使用 OAuth 2.0。这不是一个完美的解决方案,但它可能是目前使用的最安全、最广泛的 API 安全方法。
关于php - 什么是 API token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17784908/