一个供应商API文档提到他们的API调用需要使用HTTP基本认证方案,即用户:密码Base64编码,但是,他们的令牌API(登录等效)文档提到:"...此服务实现了OAuth 2.0 - 资源所有者密码和凭证授予"。
HTTP基本认证不是与OAuth不同吗?
一个供应商API文档提到他们的API调用需要使用HTTP基本认证方案,即用户:密码Base64编码,但是,他们的令牌API(登录等效)文档提到:"...此服务实现了OAuth 2.0 - 资源所有者密码和凭证授予"。
HTTP基本认证不是与OAuth不同吗?
是的,HTTP基本身份验证与OAuth 2.0不同。然而,《资源拥有者密码证书授权》在客户端凭据的授权请求中使用基本身份验证方案,如第4.3.1节.授权请求和响应所述。
资源拥有者密码证书授权通常用于将旧系统转换为OAuth 2.0,但比基本身份验证方案更加安全。
只有在资源所有者和OAuth客户端之间存在高度信任时,才应使用资源拥有者密码授权类型,并且在没有其他授权类型可用的情况下才使用它。
基本身份验证
的使用方式类似于 OAuth 2.0 客户端凭据授权类型
。
可以使用 基本身份验证
创建会话,并在有状态的环境中使用 sessionid
访问服务。
但是,如果由于会话限制或无状态服务而不想使用会话,则可以使用 OAuth 2.0 客户端凭据授权类型
,它将创建一个令牌而不是会话和sessionid
。该令牌提供对服务的访问权限。
HTTP基本访问认证: 这是一种满足访问Web服务要求的简单方法。它之所以简单,是因为它不需要凭据系统中的任何常规流程:cookie、会话ID或访问页面。整个HTTP基本认证过程都基于HTTP头中的标准字段。因此,它避免了握手:两个实体在开始通过已建立的通道进行正常通信之前建立身份验证通信的自动化过程。这意味着只有成功的身份验证才能使设备与外部设备通信;否则,通信通道将无法创建。例如,通过调制解调器的连接将失败。基本HTTP访问认证方法的安全开发是HTTPs。 为了防止基本HTTP访问认证方法导致浏览器对每次访问启动用户名和密码请求,浏览器必须将这些信息存储在缓存中一段谨慎的时间内,而不会过度降低安全性。这些安全凭据通常存储15分钟。
在现实世界中,基本HTTP访问认证方法是什么样子?
提供给想要连接到移动API的第三方开发者的访问凭据是完全保密的字母数字ID。
这个字母数字API密钥存储在服务器上的安全空间中。
请求包含在此API中的特定服务的开发人员应该将这个秘密ID与单词基本一起放在HTTP授权标头中。这两个元素共同允许服务器识别字母数字凭据并提供访问。
GET /private/index.php HTTP/1.1
Host: example.com
Authorization: Basic 字母数字ID
OAuth 2.0: OAuth代表了用户认证API服务的凭据使用方面的一大进步。它是基本HTTP访问认证方法的重大进步。今天,OAuth几乎是唯一几乎100%可靠的安全方法,并且其可靠性基于为每个用户创建唯一的身份验证令牌。如果此访问令牌被攻破,它将被删除并发出一个新的令牌。这意味着API自己的凭据受到保护。 身份验证过程如下:
用户启动原生应用程序,并被要求提供用户名或电子邮件地址和密码以作为用户进行身份验证。
用于将此凭据发送到API的请求类型是POST请求,这确保了秘密数据的私密交付。此请求通过SSL(安全套接字层)协议发送,旨在使应用程序能够安全地传输出站数据。SSL便于在应用程序之间提供和接收加密密钥。
此请求允许验证用户凭据并创建一个临时身份验证或访问令牌,该令牌将在一段时间后过期,或者如果API的用户或开发人员认为它已被攻破,则也会过期。
该身份验证令牌存储在设备中,以方便访问支持应用程序本身的API服务。