HTTP Basic Auth, чтение файла паролей и производительности
Мне любопытно узнать, как влияют на производительность HTTP Basic Auth на веб-сервер, такой как Apache, lighttpd или nginx. Я предполагаю, что узким местом является фактическое чтение файла сервером для аутентификации пользователя. Мне также кажется, что стоимость чтения файла для аутентификации пользователя пропорциональна количеству пользователей в этом файле.
У меня есть следующие вопросы:
1. существует ли определенное количество пользователей, при котором базовая авторизация через файл начинает резко падать или это линейно по отношению к количеству пользователей в файле?
2. С учетом природы http без сохранения состояния, если пользователь прошел проверку подлинности с использованием HTTP Basic Auth веб-сервером по одному запросу:
- он просто пересылает учетные данные при каждом запросе, и веб-сервер должен анализировать файл паролей каждый раз, чтобы определить, является ли это запрос действительным пользователем?
или же
- получить что-то вроде токена, который он использует в заголовке http при последующих запросах, что позволяет серверу избежать повторного анализа файла паролей?
заранее спасибо
3 ответа
Линейно относительный. Я бы не волновался. HTTP Basic Auth доказал свою масштабируемость. Просто возьмите Twitter API в качестве примера. Он использует Basic Auth.
"Поскольку протокол HTTP не имеет состояния, каждый запрос будет обрабатываться одинаково, даже если они поступают от одного и того же клиента. То есть каждый ресурс, запрашиваемый у сервера, должен будет повторно вводить учетные данные для аутентификации, чтобы получить к счастью, браузер позаботится о деталях здесь, так что вам нужно будет ввести свое имя пользователя и пароль только один раз за сеанс браузера - то есть, вам, возможно, придется вводить его снова при следующем открытии браузер и посетите тот же веб-сайт."
Подробная информация в документации Apache Auth.
Мой опыт только с Apache 2.x.
- Да. Он будет линейным с поставщиком аутентификации по умолчанию (файл). Оно использует
ap_cfg_getline()
поэтому он будет линейным по количеству строк (пользователей). - Да. mod_aaa должен каждый раз анализировать пароль. Вы можете использовать что-то вроде MemCookie для аутентификации на основе файлов cookie или токенов.
Разбор файла при входе в систему должен хорошо масштабироваться независимо от количества пользователей. Я действительно не стал бы беспокоиться об этом. В будущем вы можете разработать подход, основанный на базе данных, с надлежащей индексацией. Я подозреваю, что из-за всех узких мест, с которыми вы столкнетесь при разработке сайта, Basic Auth не будет одним из них в течение очень-очень долгого времени - если ваш веб-сервер не будет СЛИШКОМ недоволен.