我有一个API端点https://www.example.com/api/authentication,需要输入用户名和密码,并返回身份验证令牌。
在传递用户名和密码方面,我有两种选择(至少),它们分别是:
- HTTP基本认证(将凭据作为HTTP标头的一部分传递)
- HTTP POST参数
我知道这两种方法都不提供加密(因此要使用HTTPS / SSL)。我也明白为什么使用HTTP GET是不明智的。
除了基本认证更符合习惯之外,这两种方法是否有任何真正的区别?
我有一个API端点https://www.example.com/api/authentication,需要输入用户名和密码,并返回身份验证令牌。
在传递用户名和密码方面,我有两种选择(至少),它们分别是:
我知道这两种方法都不提供加密(因此要使用HTTPS / SSL)。我也明白为什么使用HTTP GET是不明智的。
除了基本认证更符合习惯之外,这两种方法是否有任何真正的区别?
基本认证(basic authentication)是一种良好规范化的挑战/响应方案,所有浏览器都能理解。服务器通过告知客户端需要(基本)认证来启动该方案。这会触发浏览器向用户显示弹窗以输入用户名和密码,并如你所述将其作为标头传递。
而在第二个例子中,你需要按自己的方式完成以上步骤并为用户创建自己的登录表单等等。
如果将此过程简化为从客户端传递用户名/密码到服务器的单个步骤,我必须同意两者之间没有太大区别,但是基本认证涵盖了更多的内容。