【问题标题】:HTTP Basic Auth, reading password file and performanceHTTP Basic Auth,读取密码文件和性能
【发布时间】:2010-11-30 14:26:42
【问题描述】:

我很想知道在 Apache 或 lighttpd 或 nginx 等网络服务器上使用 HTTP Basic Auth 对性能有何影响。我想瓶颈是服务器实际读取文件以验证用户身份。在我看来,读取文件以验证用户的成本与该文件中的用户数量成正比。

我的问题是:
1. 是否存在特定数量的用户,通过文件的基本身份验证开始急剧下降,还是与文件中的用户数量呈线性关系?
2. 鉴于 http 的无状态特性,如果网络服务器在一次请求中使用 HTTP Basic Auth 对用户进行了身份验证:
- 它是否只是在每个请求上转发凭据,并且网络服务器每次都必须解析密码文件以确定这是否是来自有效用户的请求?

- 获得类似令牌的东西,它在后续请求的 http 标头中使用,允许服务器避免再次解析密码文件?

提前致谢

【问题讨论】:

    标签: performance apache2 nginx lighttpd http-authentication


    【解决方案1】:
    1. 线性相对。我不会担心的。 HTTP Basic Auth 被证明是可扩展的。仅以 Twitter API 为例。它使用基本身份验证。

    2. “因为 HTTP 协议是无状态的,所以每个请求都将以相同的方式处理,即使它们来自同一个客户端。也就是说,从服务器请求的每个资源都必须重新提供身份验证凭据以便接收资源。幸运的是,浏览器会处理此处的详细信息,因此您只需在每个浏览器会话中输入一次用户名和密码 - 也就是说,下次您可能需要再次输入打开浏览器并访问同一个网站。”

    Apache Auth documentation中的详细信息。

    【讨论】:

    • 谢谢。基本上我正在看的是一个在 apache2 上运行的 django 后端,前面有 mod_wsgi 和 lighttpd 或 nginx。如果安全媒体的身份验证由 django 处理,感觉会很昂贵,因为对每个静态媒体的每个请求都必须到达 django,进行身份验证,然后传回 nginx 或 lighttpd。我只是想知道在 lighttpd 或 nginx 级别进行基本身份验证是否会更便宜。它当然更简单。
    【解决方案2】:

    我的经验仅限于 Apache 2.x。

    1. 是的。它将与默认身份验证提供程序(文件)呈线性关系。它使用ap_cfg_getline(),因此它与行数(用户)成线性关系。
    2. 是的。 mod_aaa 每次都必须解析密码。您可以使用 MemCookie 之类的东西进行基于 cookie 或令牌的身份验证。

    【讨论】:

      【解决方案3】:

      无论有多少用户,在登录时解析一个文件应该可以很好地扩展。我真的不会担心。将来,您可以开发具有适当索引的数据库驱动方法。我怀疑您在开发网站时会遇到的所有瓶颈,Basic Auth 在很长一段时间内都不会成为其中之一 - 除非您的网络服务器功能严重不足。

      【讨论】:

        猜你喜欢
        • 2012-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-15
        • 2019-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多