Для сайтов на WordPress, где важна корпоративная безопасность и централизованное управление доступом, отличным решением становится внедрение SAML (Security Assertion Markup Language) авторизации. Это популярный стандарт для единого входа (SSO), который позволяет пользователям входить в WordPress с использованием учетных данных корпоративного IdP (Identity Provider), таких как Microsoft ADFS, Okta, Google Workspace и другие.
Что такое SAML и зачем нужна SAML авторизация в WordPress
SAML — это протокол обмена данными для аутентификации, позволяющий передавать информацию о пользователе от Identity Provider к Service Provider (в нашем случае — WordPress). Благодаря этому пользователю не нужно запоминать отдельный пароль для сайта, а администратор централизованно управляет доступом.
Использование SAML авторизации в WordPress актуально для корпоративных порталов, intranet-сайтов и проектов с повышенными требованиями к безопасности и удобству входа.
В отличие от OAuth2 или LDAP, SAML более распространен в корпоративных средах и поддерживает расширенные возможности интеграции с различными системами управления идентификацией.
Выбор плагина для SAML авторизации в WordPress
Для реализации SAML авторизации в WordPress существует несколько популярных плагинов, среди которых:
- miniOrange SAML 2.0 SSO — один из самых функциональных и простых в настройке плагинов с поддержкой большинства IdP;
- SSO Circle SAML Client — бесплатное решение для базовой интеграции;
- WP SAML Auth — легковесный плагин для интеграции через REST API и SAML.
Рассмотрим настройку на примере miniOrange, так как он поддерживает множество IdP и имеет удобный интерфейс.
Пошаговая установка и настройка miniOrange SAML 2.0 SSO
Шаг 1. Установка плагина
В админке WordPress перейдите в Плагины > Добавить новый, выполните поиск по "miniOrange SAML 2.0 SSO" и установите плагин. После активации появится пункт меню miniOrange SAML.
Шаг 2. Настройка Identity Provider (IdP)
Для корректной работы нужно получить от вашего IdP несколько ключевых параметров:
- Entity ID (Issuer URL)
- SSO URL (Single Sign-On service URL)
- X.509 сертификат
Эти данные вводятся в настройки плагина. В интерфейсе miniOrange выберите опцию "Configure IDP manually" и заполните необходимые поля.
Шаг 3. Настройка WordPress как Service Provider (SP)
Плагин сгенерирует:
- SP Entity ID
- ACS URL (Assertion Consumer Service URL)
- SP сертификат (если необходимо)
Эти параметры нужно добавить в настройки IdP, чтобы он знал, куда отправлять ответы о пользователях.
Шаг 4. Тестирование авторизации
После настройки можно протестировать вход через кнопку «Test Configuration» в плагине. Если все корректно — пользователь будет перенаправлен на ваш IdP для аутентификации, а затем обратно в WordPress с авторизацией.
Пример пользовательской функции для дополнительной обработки после SAML входа
В некоторых случаях нужно кастомно обрабатывать данные пользователя после входа. Например, чтобы автоматически назначать роль или синхронизировать метаданные. Для этого можно использовать следующий хук:
add_action('wpauth_saml_user_authenticated', 'wpauth_custom_saml_user_sync', 10, 2);
function wpauth_custom_saml_user_sync($user, $saml_attributes) {
// $user — объект WP_User
// $saml_attributes — массив атрибутов из SAML ответа
if (!empty($saml_attributes['department'])) {
update_user_meta($user->ID, 'department', sanitize_text_field($saml_attributes['department'][0]));
}
// Присваиваем роль "subscriber" если нет другой
if (empty($user->roles)) {
$user->set_role('subscriber');
}
}
Этот код добавьте в functions.php вашей темы или в кастомный плагин. Он позволит гибко работать с данными, полученными от IdP.
Дополнительные настройки безопасности
Для повышения безопасности рекомендуется:
- Использовать HTTPS на сайте и в настройках IdP;
- Настроить проверку подписи SAML сообщений;
- Ограничить время жизни сессии;
- Регулярно обновлять сертификаты и ключи.
В miniOrange есть встроенные опции для всех этих пунктов, их стоит внимательно изучить и настроить.
Альтернативы и расширения
Если miniOrange по каким-то причинам не подходит, можно рассмотреть WP SAML Auth — плагин с открытым исходным кодом, позволяющий интегрировать SAML через REST API. Это полезно для кастомных решений и расширения функционала.
Также для улучшения UX можно комбинировать SAML с плагинами, которые управляют сессиями и уведомлениями, например, WPRemark, для отображения сообщений о входе и выходе пользователей.