Представьте, что вы приходите на работу, включаете ноутбук, подключаетесь к Wi-Fi — и вас сразу узнают. Никаких логинов, паролей, лишних кликов. Так работает технология единого входа (Single Sign-On, или SSO) , которая позволяет использовать одни и те же учетные данные для разных сервисов.
Однако не все системы поддерживают одинаковые протоколы аутентификации. Например, Wi-Fi сети часто используют стандарт RADIUS , тогда как SSO может работать через OAuth или SAML . Чтобы всё это взаимодействовало, нужно провести правильную интеграцию.
В этой статье мы простым языком объясним:
- Что такое OAuth и SAML
- Как они используются в SSO
- Почему их сложно применить напрямую в Wi-Fi
- Как интегрировать их с RADIUS через промежуточный сервер
- Примеры схем и диаграмм для наглядности
1. Что такое SSO?
Единый вход (SSO) — это система, которая позволяет пользователю войти один раз и получить доступ ко всем ресурсам без повторного ввода логина и пароля.
Пример:
вы вошли в свой аккаунт Google, и теперь можете заходить в Gmail, Google Drive, YouTube и другие сервисы, не вводя снова пароль.
2. OAuth и SAML: два популярных протокола SSO
OAuth
OAuth — это протокол, который позволяет одной системе получать ограниченный доступ к ресурсам другой системы от имени пользователя, без передачи пароля.
Например:
Вы нажимаете «Войти через Google» на стороннем сайте — сайт получает разрешение на доступ к вашему профилю Google, но не видит вашего пароля.
OAuth часто используется в мобильных приложениях и API.
SAML
SAML (Security Assertion Markup Language) — это XML-протокол, который обменивается информацией о подлинности пользователя между системами.
Например:
Ваша компания использует Microsoft Azure AD как центральный каталог. Когда вы пытаетесь зайти в Salesforce, он запрашивает у Azure AD информацию: «Это действительно сотрудник компании?» Azure AD отвечает: «Да».
SAML чаще используется в корпоративных средах.
3. А как подключить это к Wi-Fi?
Теперь интересный момент: большинство точек доступа Wi-Fi (AP) и контроллеров Wi-Fi используют протокол RADIUS для аутентификации.
А RADIUS — старый добрый протокол, который понимает только логин/пароль, CHAP, PAP и т.п. Он не знает , что такое OAuth или SAML.
Чтобы связать эти миры, нужен промежуточный сервер , который будет «переводчиком» между SSO и RADIUS.
4. Как это работает: общая схема
Объяснение:
- Пользователь подключается к Wi-Fi
- Точка доступа отправляет запрос на проверку логина/пароля через RADIUS
- RADIUS-сервер перенаправляет запрос к IDP (Identity Provider), где хранятся данные SSO
- IDP проверяет учётные данные через OAuth/SAML
- Результат возвращается обратно по цепочке
5. Подробнее о процессе аутентификации
Шаг 1: Пользователь подключается к Wi-Fi
Пользователь выбирает SSID, вводит логин и пароль (или автоматически авторизуется, если есть сертификат).
Шаг 2: Запрос RADIUS
Wi-Fi контроллер отправляет запрос на RADIUS-сервер:
Username: user@company.comPassword: *********
Шаг 3: RADIUS-сервер обращается к IDP
RADIUS-сервер использует специальный плагин или шлюз, чтобы преобразовать запрос в формат SAML или OAuth.
Пример:
<samlp:AuthnRequest …>
<saml:Issuer>https://radius.company.com</saml:Issuer>
</samlp:AuthnRequest>
Шаг 4: IDP проверяет учётные данные
IDP (например, Azure AD) проверяет, существует ли такой пользователь и действителен ли его пароль.
Шаг 5: Ответ IDP → RADIUS → Wi-Fi
Если всё верно, IDP отвечает:
<samlp:Response …>
<saml:Assertion>…</saml:Assertion>
</samlp:Response>
RADIUS-сервер получает положительный ответ и отправляет в Wi-Fi:
Access-Accept
Пользователь получает доступ к сети.
6. Какие компоненты нужны?
|
Компонент
|
Описание
|
|---|---|
|
SSID Wi-Fi
|
Точка входа в сеть
|
|
Wi-Fi контроллер
|
Передаёт запросы на RADIUS
|
|
RADIUS-сервер
|
Получает запросы от контроллера и проверяет через IDP
|
|
IDP (Identity Provider)
|
Сервер SSO (например, Azure AD, Okta, OneLogin)
|
|
Шлюз OAuth/SAML-RADIUS
|
Модуль, который переводит протоколы
|
7. Настройка RADIUS-сервера для работы с SAML/OAuth
Рассмотрим пример настройки через FreeRADIUS + Python скрипт + Azure AD .
Шаг 1: Установка FreeRADIUS
Устанавливаем сервер:
sudo apt install freeradius
Шаг 2: Настройка модулей
Добавляем в конфиг /etc/freeradius/3.0/sites-enabled/default вызов внешнего скрипта:
exec saml_auth {
wait = yes
input_pairs = request
shell_escape = yes
program = «/usr/local/bin/saml_radius.py %{User-Name} %{User-Password}»
}
Шаг 3: Создание скрипта saml_radius.py
import sys
import requestsdef authenticate(user, password):
# Здесь логика вызова Azure AD через OAuth или SAML
response = requests.post(«https://login.microsoftonline.com/…», data={
«username»: user,
«password»: password
})
return response.status_code == 200if __name__ == «__main__»:
user = sys.argv[1]
pwd = sys.argv[2]
if authenticate(user, pwd):
print(«OK»)
else:
print(«REJECT»)
Шаг 4: Перезапуск RADIUS
sudo systemctl restart freeradius
Теперь RADIUS может проверять логины через Azure AD!
8. Возможные проблемы и как их решить
|
Проблема
|
Причина
|
Решение
|
|---|---|---|
|
Не подключается к Wi-Fi
|
Неверные учетные данные
|
Проверить ввод логина/пароля
|
|
RADIUS не отвечает
|
Нет связи с IDP
|
Проверить интернет, прокси, firewall
|
|
IDP не принимает запрос
|
Неправильная конфигурация SAML
|
Проверить метаданные SAML, URL, сертификаты
|
|
Частые ошибки аутентификации
|
Проблемы с сертификатами
|
Обновить сертификаты IDP и RADIUS
|
9. Безопасность: что важно учесть
- Используйте шифрование : TLS между RADIUS и IDP
- Сертификаты : Используйте доверенные сертификаты для связи
- Мониторинг : Логируйте попытки входа
- Ограничения : Убедитесь, что пользователи могут подключаться только к разрешенным SSID
10. Где применяется такая интеграция?
- В офисах с централизованным управлением доступом (например, Azure AD)
- В университетах, где студенты подключаются к Wi-Fi через единый портал
- В гостевых сетях, где используется соцсетевой вход
- В гибридных облачных средах
11. Заключение
Интеграция OAuth и SAML с Wi-Fi через RADIUS — мощное решение, которое делает жизнь пользователей проще и безопаснее. Хотя изначально Wi-Fi и SSO говорят на разных «языках», промежуточный RADIUS-сервер с поддержкой SAML/OAuth становится отличным мостом между ними.
Главное — правильно настроить интеграцию, обеспечить безопасность и тестировать каждую часть системы.
