HTTP-авторизация и сопутствующие проблемы с Битриксом
Запись от 27.05.2016
Нашел баг, отловить быстро не получилось, поэтому пишу, дабы предостеречь вас.
Итак, наш разрабатываемый сайт закрыт от внешнего доступа http-авторизацией.
Если логин авторизации по http совпадает с логином с битриксе, а пароли разные, то залогиниться невозможно, пока логин не будет совершен другой машины, IP которой в доверенной зоне и не требует http-авторизации по политикам доступа (локальная сеть разработчиков).
Судя по логам события OnAfterUserLogin битрикс сначала обрабатывает http-авторизацию и использует в качестве логина/пароля лог/пас от http-авторизации. Пароли не совпадают и мы получаем сообщение ошибке - неверная пара логин/пароль.
Другой случай с http-авторизацией, когда пользователь в http-авторизации имеет туже пару логин/пароль, что и пользователь заведенный в битриксе. Такой пользователь не может разлогиниться, т.к. сразу после logout=yes файл include.php смотрит параметры http-авторизации, там остаются подходящие логин/пароль и пользователь снова логинится. Для юзера это выглядит, как будто кнопка "Выйти" просто обновляет страницу.
Детально я не разбирался, но судя по всему проблема в порядке определения условий в файле /bitrix/modules/main/include.php где-то в области комментария:
//http basic and digest authorization
По проблеме создал обращение в тех.поддержку (995761). Будет ли проблема исправлена и когда - пока неизвестно.
P.S. Чуть не поседел, пока с коллегой не нашли в чем дело
UPDATE: Проблема решена не будет, т.к. это «фича»!
Итак, наш разрабатываемый сайт закрыт от внешнего доступа http-авторизацией.
Если логин авторизации по http совпадает с логином с битриксе, а пароли разные, то залогиниться невозможно, пока логин не будет совершен другой машины, IP которой в доверенной зоне и не требует http-авторизации по политикам доступа (локальная сеть разработчиков).
Судя по логам события OnAfterUserLogin битрикс сначала обрабатывает http-авторизацию и использует в качестве логина/пароля лог/пас от http-авторизации. Пароли не совпадают и мы получаем сообщение ошибке - неверная пара логин/пароль.
Другой случай с http-авторизацией, когда пользователь в http-авторизации имеет туже пару логин/пароль, что и пользователь заведенный в битриксе. Такой пользователь не может разлогиниться, т.к. сразу после logout=yes файл include.php смотрит параметры http-авторизации, там остаются подходящие логин/пароль и пользователь снова логинится. Для юзера это выглядит, как будто кнопка "Выйти" просто обновляет страницу.
Детально я не разбирался, но судя по всему проблема в порядке определения условий в файле /bitrix/modules/main/include.php где-то в области комментария:
//http basic and digest authorization
По проблеме создал обращение в тех.поддержку (995761). Будет ли проблема исправлена и когда - пока неизвестно.
P.S. Чуть не поседел, пока с коллегой не нашли в чем дело
UPDATE: Проблема решена не будет, т.к. это «фича»!