Помилка підключення 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 | |
Авторизація включена, все працює коректно.