Ошибка подключения GitLab Agent: Unauthorized
Не вдаваясь в подробности, как именно и почему все организовано, доступ осуществляется по следующей цепочке:
1 | |
Основной фронтенд управляет поддоменом gitlab, который закрыт для внешнего доступа посредством авторизации auth_basic.
Авторизация на сокете /-/kubernetes-agent/ в самом gitlab происходит через полезную нагрузку json/graphql.
Но основной фронтенд также передает состояние поля $remote_user в сокет.
Соответственно, GitLab пытается выполнить авторизацию на основе Basic, а не на основе параметров самой полезной нагрузки json/graphql.
И мы получаем ошибку:
1 | |
Моя самая большая ошибка
Конечно же, второе, что я сделал — отключил авторизацию для моего внешнего IP-адреса.
Это было очевидно, поскольку была указана ошибка Authorization header: Bearer.
Но это ничего не дало. Как я тогда подумал.
После этого было много развертываний, повторных инициализаций, изменений конфигурации.
Но даже это не сработало.
Дьявол кроется в деталях
Невнимание к очевидным деталям привело меня через пару дней к логу Nginx в инстансе GitLab снова.
В журнале я заметил, что мой логин $remote_user из auth_basic передаётся из Frontend, но его там быть не должно, авторизация-то отключена.
Так в чем же ошибка?
Предположим, у вас включена авторизация auth_basic. Браузер отправляет заголовок Authorization: Basic, поскольку вы ввели логин и пароль для подключения.
Вы отключаете авторизацию. Убеждаетесь, что она действительно отключена, например, с помощью curl или wget.
Однако при обновлении страницы или даже открытии новых вкладок для этого сайта браузер продолжает отправлять заголовок авторизации до тех пор, пока вы не закроете и не откроете его снова.
Мне просто надо было перезапустить чёртову Лису!
Решение проблемы
1 2 3 4 5 6 7 8 9 10 11 12 | |
Авторизация включена, все работает корректно.