为什么我应该使用HTTP基本身份验证而不是用户名和密码发布参数?

时间:2011-11-14 20:29:07

标签: basic-authentication http-basic-authentication

我有一个API端点https://www.example.com/api/authentication,它将用户名和密码作为输入并返回一个身份验证令牌。

在传递用户名和密码方面,我有两个选项(至少),即:

  1. HTTP基本身份验证(将凭据作为HTTP标头的一部分传递)
  2. HTTP POST参数
  3. 据我所知,这两种方法都不提供加密(因此使用HTTPS / SSL)。我也理解为什么使用HTTP GET是一个坏主意。

    这两种方法之间是否有任何真正的区别(除了基本认证感觉更加惯用)?

2 个答案:

答案 0 :(得分:7)

不同之处在于,基本身份验证是一个明确指定的挑战/响应方案,所有浏览器都能理解,并且它是通过告诉客户端它需要(基本)身份验证来启动它的服务器。这会触发浏览器向用户显示一个弹出窗口,输入一个名称/密码,然后按照您的描述将其传递到标题中。

在您的第二个示例中,您必须以自己的自定义方式执行所有操作,并为用户(等)创建自己的登录表单。

如果您将此过程扣除到将用户名/密码从客户端传递到服务器的单一步骤,我必须同意没有那么大的区别,但基本身份验证意味着不仅仅是那个。< / p>

答案 1 :(得分:1)

HTTP基本身份验证实现是实施对Web资源的访问控制的最简单方法,因为它不需要cookie,会话标识符或登录页面;相反,HTTP基本身份验证使用HTTP标头中的标准字段,从而避免了握手的需要。