我很想知道在Apache或lighttpd或nginx等网络服务器上使用HTTP Basic Auth会对性能产生什么影响。我想瓶颈是服务器对文件进行实际读取以验证用户身份。在我看来,读取文件以验证用户的成本与该文件中的用户数成正比。
我的问题是:
1.是否存在特定数量的用户,其中基本auth via文件开始急剧下降或者是否与文件中的用户数呈线性关系?
2.鉴于http的无状态特性,如果用户已通过网络服务器在一次请求中使用HTTP Basic Auth进行了身份验证:
- 它是否只是转发每个请求的凭据,网络服务器必须每次解析密码文件,以确定这是否是来自有效用户的请求?
或
- 获取类似于后续请求中http头中使用的令牌,允许服务器避免再次解析密码文件?
提前致谢
答案 0 :(得分:3)
线性相对。我不担心。 HTTP Basic Auth被证明是可扩展的。以Twitter API为例。它使用Basic Auth。
“因为HTTP协议是无状态的,所以每个请求都将以相同的方式处理,即使它们来自同一个客户端。也就是说,从服务器请求的每个资源都必须重新提供身份验证凭据。为了接收资源。幸运的是,浏览器会在这里处理详细信息,因此您只需每次浏览器会话输入一次用户名和密码 - 也就是说,下次您可能需要再输入一次打开浏览器并访问同一网站。“
Apache Auth documentation中的详细信息。
答案 1 :(得分:1)
我的经验仅适用于Apache 2.x.
ap_cfg_getline()
,因此它与行数(用户)呈线性关系。答案 2 :(得分:0)
在登录时解析一次文件应该可以很好地扩展,无论有多少用户。我真的不担心。将来,您可以使用适当的索引来开发数据库驱动的方法。我怀疑你将在开发一个网站时遇到的所有瓶颈,Basic Auth在很长一段时间内不会成为其中之一 - 除非你的网络服务器功能非常不足。