HTTP协议- 基本认证

阅读数:73 评论数:0

跳转到新版页面

分类

网络/通信

正文

一、HTTP Basic Authentication(基础验证)

这是一种用于HTTP协议的简单认证方式。它是HTTP协议的一个部分,定义在RFC 7617中。当浏览器或其他客户端请求一个需要认证的资源时,服务器会返回一个响应,要求认证。在Basic Authentication中,这通常是通过返回一个401 Unauthorized状态码和一个WWW-Authenticate头部来实现的,头部中会指定认证类型为Basic

在HTTP Basic Authentication中,用户ID和密码以“userid:password”的形式连接起来,然后使用Base64编码。这个编码后的字符串随后被包含在HTTP请求的Authorization头部中发送给服务器。例如:

Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l

在这个例子中,“QWxhZGRpbjpPcGVuU2VzYW1l”是“Aladdin:OpenSesame”(用户名:密码)这对凭证的Base64编码形式。

这种认证方式的缺点是:

  • 安全性较低:Base64编码不是加密,它可以很容易地被解码,泄露用户名和密码。
  • 无状态:每次请求都需要重新发送凭证,因为HTTP是无状态的。
  • 没有内置的登出机制:一旦提供了凭证,除非关闭浏览器,否则凭证将继续被发送。

因此,HTTP Basic Authentication通常只在通过HTTPS等安全连接使用时被认为是安全的,因为HTTPS提供了加密,防止了凭证在传输中被截获。即便如此,由于其相对较低的安全性,许多现代应用会选择更安全的认证方案,如OAuth 2.0。

OAuth认证

OAuth 2.0 是一个行业标准的授权框架,允许用户提供一个令牌而不是用户名和密码来访问他们存储在特定服务提供者上的数据。这个框架特别适用于允许用户让第三方应用访问他们存储在其他服务上的信息,而不需要将用户名和密码提供给第三方应用。

OAuth 2.0 定义了四种授权方式:

  • 授权码模式 (Authorization Code):适用于有自己的服务器的客户端应用程序。用户首先登录服务提供者,然后服务提供者将用户导向到第三方应用,带上一个授权码。第三方应用使用这个授权码,向服务提供者请求访问令牌。

  • 隐式模式 (Implicit):适用于无法安全存储客户端秘密的客户端,比如在浏览器中运行的应用或移动应用。这种模式下,授权令牌直接通过重定向URI的片段返回给客户端。

  • 密码模式 (Resource Owner Password Credentials):在这种模式下,用户将用户名和密码直接提供给第三方应用,应用使用这些信息获取访问令牌。由于这种方式涉及到用户凭据的直接使用,因此只建议在用户充分信任的客户端应用上使用。

  • 客户端凭证模式 (Client Credentials):在这种模式下,应用程序直接使用自己的凭证,而不是代表用户行事,来获取访问令牌。这通常用于服务对服务的授权场景。

OAuth 2.0 流程通常包括以下步骤:

  1. 应用请求授权。
  2. 用户同意授权。
  3. 应用接收授权码(授权码模式)或令牌(隐式模式)。
  4. 应用使用授权码交换令牌(授权码模式)。
  5. 服务提供者发放访问令牌(和可选的刷新令牌)。
  6. 应用使用令牌访问服务提供者的资源。

OAuth 2.0 提供了灵活性和安全性,使得用户可以控制第三方应用访问他们的资源的权限,而无需分享登录凭证。同时,它也支持通过刷新令牌来延长授权,而不需要用户重新授权。

 




相关推荐

1、HTTP HTTP协议是典型的CS通迅模式,由客户端主动发起连接,向服务器请求XML或JSON数据。在物联网场景有有其弊端: (