В Битриксе разработчики или маркетологи видимо не в курсе что данные которые используются для HTTP-аутентификации не обязательно будут совпадать с теми данными которые используются для доступа в Административный раздел Битрикса. А потому навесив собственную Basic Authentication над Битриксом 11 получаем полную невозможность входа в административный раздел в случаях когда логин и пароль от HTTP-аутентификации не совпадают с теми под которыми можно войти в Административный раздел.
Файл отвечающий на эту несправедливость называется ./bitrix/modules/main/tools.php
в котором есть идиотский метод ParseAuthRequest()
.
public static function ParseAuthRequest()
{
$sDigest = '';
if(isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER'] <> '')
{
// Basic Authorization PHP module
return array("basic"=>array(
"username"=>$_SERVER['PHP_AUTH_USER'],
"password"=>$_SERVER['PHP_AUTH_PW'],
));
}
elseif(isset($_SERVER['PHP_AUTH_DIGEST']) && $_SERVER['PHP_AUTH_DIGEST'] <> '')
{
// Дальше нас не интересует
Единственный легальный способ который я сейчас вижу, это добавить в файл ./bitrix/php_interface/init.php
такой хак:
if(isset($_SERVER['PHP_AUTH_USER']) && preg_match('#^/bitrix/admin/#ui', $_SERVER['REQUEST_URI'])) {
$_SERVER['PHP_AUTH_USER'] = '';
}