我有一个API端点https://www.example.com/api/authentication,它将用户名和密码作为输入并返回一个身份验证令牌。
在传递用户名和密码方面,我有两个选项(至少),即:
据我所知,这两种方法都不提供加密(因此使用HTTPS / SSL)。我也理解为什么使用HTTP GET是一个坏主意。
这两种方法之间是否有任何真正的区别(除了基本认证感觉更加惯用)?
答案 0 :(得分:7)
不同之处在于,基本身份验证是一个明确指定的挑战/响应方案,所有浏览器都能理解,并且它是通过告诉客户端它需要(基本)身份验证来启动它的服务器。这会触发浏览器向用户显示一个弹出窗口,输入一个名称/密码,然后按照您的描述将其传递到标题中。
在您的第二个示例中,您必须以自己的自定义方式执行所有操作,并为用户(等)创建自己的登录表单。
如果您将此过程扣除到将用户名/密码从客户端传递到服务器的单一步骤,我必须同意没有那么大的区别,但基本身份验证意味着不仅仅是那个。< / p>
答案 1 :(得分:1)
HTTP基本身份验证实现是实施对Web资源的访问控制的最简单方法,因为它不需要cookie,会话标识符或登录页面;相反,HTTP基本身份验证使用HTTP标头中的标准字段,从而避免了握手的需要。