Вопрос или проблема
Я пытаюсь подключиться к VPN через OpenConnect с помощью плагина NetworkManager OpenConnect на Ubuntu 20.04.4 LTS. Аутентификация в VPN работает только путем генерации cookie через форму входа в браузере (Единый вход, SSO). Тем не менее, плагин NetworkManager показывает мне только окно запроса имени пользователя и пароля GNOME, хотя это бесполезно (независимо от того, что я ввожу, форма просто появляется снова без какой-либо ошибки, как здесь).
Ручной способ из командной строки работает так:
openconnect-sso vpn.uni.com
-> Открывает форму входа в браузере и выводит cookie
openconnect vpn.uni.com --useragent=AnyConnect --cookie=MYCOKIE
-> успешно подключается к VPN.
Есть ли способ заставить мой плагин NetworkManager OpenConnect показать форму входа SSO и аутентифицировать меня с помощью сгенерированного cookie? Если это не поддерживается нативно, есть ли обходные пути, чтобы мой VPN работал в качестве соединения NetworkManager? (например, выполнить скрипт при подключении к VPN через GNOME? и т.д.?)
Информация о версии:
- network-manager-openconnect/focal,now 1.2.6-1 amd64 [установлен]
- network-manager-openconnect-gnome/focal,now 1.2.6-1 amd64 [установлен]
- openconnect/focal,now 8.05-1 amd64 [установлен]
- Ubuntu 20.04.4 LTS, focal
Ответ или решение
Использование плагина NetworkManager OpenConnect с аутентификацией SSO может быть вызовом на Ubuntu 20.04.4 LTS. Проблема, с которой вы столкнулись, касается невозможности применения аутентификации через форму браузера непосредственно в NetworkManager. Давайте рассмотрим возможные решения и обходные пути.
Функциональность и ограничение NetworkManager
NetworkManager OpenConnect Plugin, установленный у вас (версия 1.2.6-1), по умолчанию не поддерживает SSO-авторизацию, требующую генерации cookie через браузер. Это ограничение вызывает проблему, которую вы описываете, — получение запроса на вход в систему через GNOME, который оказывается бесполезным для SSO.
Альтернативные решения:
-
Использование скриптов:
Раз вы можете успешно подключаться через командную строку, запланируем использование скрипта для автоматизации процесса подключения, объединяя обе команды.
Создайте файл, например,
vpn_connect.sh
, и добавьте в него следующий код:#!/bin/bash # Запускаем openconnect-sso для получения cookie COOKIE=$(openconnect-sso vpn.uni.com | grep "COOKIE" | awk '{print $3}') # Используем полученный cookie для подключения openconnect vpn.uni.com --useragent=AnyConnect --cookie=$COOKIE
Не забудьте сделать файл исполняемым:
chmod +x vpn_connect.sh
Теперь вы можете запускать этот скрипт для подключения к VPN.
-
Интеграция через NetworkManager:
Настройка NetworkManager для использования вашего скрипта может быть удобным обходным решением. Вы можете настроить NetworkManager так, чтобы он запускал указанный сценарий подключения.
- Откройте редактор настроек NetworkManager:
nm-connection-editor
- Выберите ваше VPN-соединение и перейдите в "Настройки VPN".
- В параметрах подключения найдите раздел настраиваемых скриптов или команд.
- Установите скрипт
vpn_connect.sh
как команду для выполнения при подключении.
- Откройте редактор настроек NetworkManager:
-
Использование других инструментов:
Еще один подход — использовать другие плагины или инструменты для OpenConnect, которые поддерживают интеграцию c SSO. Например,
ocproxy
илиopenconnect-sso
, который вы уже используете, можно тоже попробовать применить в других контекстах для подключения через NetworkManager.
Заключение
Пока NetworkManager адаптируется к различным требованиям SSO, использование скриптов и обходных решений поможет достигнуть необходимой функциональности сегодня. Убедитесь, что вы предпринимаете все меры предосторожности, включая защиту скрипта от несанкционированного доступа, так как он может содержать чувствительные данные, такие как ваши учетные данные. С регулярными обновлениями Ubuntu и компонентов OpenConnect возможно, поддержка SSO может быть улучшена в будущих релизах, что упростит процесс настройки.