HTTP 基本身份验证和 OAuth 2.0 是否相同



供应商API文档之一提到他们的API调用需要使用HTTP基本身份验证方案,即user:password Base64编码,但他们的令牌API(登录等效)文档提到">..此服务实现 OAuth 2.0 - 资源所有者密码和凭据授予">

HTTP 基本身份验证与 OAuth 不同吗?

是的,HTTP 基本身份验证与 OAuth 2.0 不同。但是,资源所有者密码凭据授予在客户端凭据的授权请求中使用基本身份验证方案,如第 4.3.1 节所述。授权请求和响应

资源所有者密码凭据授予通常用于将旧系统转换为 OAuth 2.0,并不比基本身份验证方案更安全。

资源所有者密码凭据授予旨在在没有其他授权类型可用时使用,并且仅在资源所有者与 OAuth 客户端之间存在高度信任时使用。

是的,它们都是不同的。 Http 基本 :用于身份验证和用户凭据进行编码,然后在 HTTP 标头中传递到客户端服务器。 HTTP Basic的基本示例:就像传统的Web应用程序一样,它要求用户提供凭据并将这些凭据发送到HTTP标头中的服务器。稍后的服务器使用这些凭据对用户进行身份验证。

OAuth 2 :这是用于授权的,这里的客户端服务器需要从授权服务器授权用户数据(资源所有者)。 OAuth 2的基本示例:假设服务器上运行了一个在线游戏应用程序,用户访问的应用程序开始加载到用户的浏览器中。现在,该应用程序要求用户授权在他的Facebook帐户上发布有关游戏的数据。在这里,用户授权他的应用程序通过OAuth标准访问他的Facebook帖子。请参阅内部机制 https://www.rfc-editor.org/rfc/rfc6749

Basic access authentication用法与OAuth 2.0 Client Credentials Grant Type相当。

可以使用Basic Authentication创建会话,并且可以在有状态环境中使用sessionid访问服务。

但是,如果由于会话限制或无状态服务而不想使用会话,则可以改用OAuth 2.0 Client Credentials Grant Type,这会创建令牌而不是会话和sessionid。此令牌提供对服务的访问权限。

HTTP 基本访问身份验证:这是满足访问 Web 服务要求的更简单方法。这很简单,因为它不需要凭据系统中的任何常规过程:cookie、会话 ID 或访问页面。整个 HTTP 基本身份验证过程基于 HTTP 标头中的标准字段。因此,它避免了握手:两个实体在通过已建立的通道开始正常通信之前建立经过身份验证的通信的自动化过程。这意味着只有在身份验证成功的情况下,设备才能与外部设备通信;否则,不会创建通信通道。例如,通过调制解调器的连接将失败。基本HTTP访问身份验证方法的安全开发是HTTP。 为了防止基本的 HTTP 访问身份验证方法导致浏览器为每次访问启动用户名和密码请求,浏览器必须在缓存中存储此信息一段时间,以免过度降低安全性。这些安全凭据通常存储 15 分钟。

这种基本的HTTP访问身份验证方法在现实世界中是什么样的?

  1. 提供给想要连接到移动 API 的第三方开发人员的访问凭据是一个完全秘密的字母数字 ID。

  2. 此字母数字 API 密钥存储在服务器上的安全空间中。

  3. 请求此 API 中包含的特定服务的开发人员应将此机密 ID 与单词"基本"一起放在 HTTP 授权标头中。这两个元素一起允许服务器识别字母数字凭据并提供访问权限。

GET/private/index.php HTTP/1.1

主持人:example.com

授权:基本字母数字标识

OAuth 2.0:OAuth代表了在使用凭据对 API 服务用户进行身份验证方面向前迈出的一步。这是基本HTTP访问身份验证方法的重大进步。今天,它实际上是唯一几乎 100% 可靠的安全方法,其可靠性基于为每个用户创建唯一的身份验证令牌。如果此访问令牌遭到入侵,则会将其删除并颁发新的访问令牌。这意味着 API 自己的凭据受到保护。 身份验证过程如下:

用户
  1. 启动本机应用程序,并被要求提供用户名或电子邮件地址以及密码以将自己标识为用户。

  2. 用于将此凭据发送到 API 的请求类型是 POST 请求,可确保机密数据的私密传递。此请求通过 SSL(安全套接字层)协议发送,该协议旨在使应用程序能够安全地传输出站数据。SSL 有助于在应用程序之间提供和接收加密密钥。

  3. 此请求允许验证用户凭据,并创建临时身份验证或访问令牌,该令牌将在一段时间后过期,或者如果负责 API 的用户或开发人员认为它已被破坏。

  4. 此身份验证令牌存储在设备中,以便于访问支持应用程序本身的 API 服务。

如果我们比较这两种方法,OAuth 2.0 提供了更好的安全标准,因为任何对凭据的初始请求都是在 SSL 协议下进行的,并且因为保证访问对象是临时令牌。在基本的 HTTP 访问身份验证过程中,对 API 服务的访问始终依赖于通过 Web 发送凭据,特别是在 HTTP 标头中,这使得它很容易受到第三方的攻击。

相关内容

最新更新