Yii2: как использовать SSO


Single Sign-On (SSO) – это механизм авторизации, который позволяет пользователям получать доступ ко множеству различных систем с использованием одного набора учетных данных. Он значительно упрощает процесс аутентификации и повышает удобство использования для пользователей.

Yii2 — это популярный PHP-фреймворк, который предоставляет множество инструментов и библиотек для разработки веб-приложений. В рамках Yii2 существует несколько способов реализации SSO, но в этой статье мы рассмотрим простой и прямолинейный подход, использующий библиотеку yii2-authclient.

Yii2-authclient — это расширение Yii2, которое предоставляет интеграцию с различными популярными социальными сетями и провайдерами авторизации. Оно позволяет организовать SSO с использованием аккаунтов пользователей в таких сервисах, как Google, Facebook, Twitter и других.

Чтобы начать использовать SSO в Yii2 с помощью yii2-authclient, вам понадобится настроить соответствующий компонент в вашем проекте Yii2. Этот компонент будет обрабатывать процесс аутентификации с провайдерами SSO и предоставлять вам доступ к данным пользователя.

Подключение SSO к Yii2: шаг за шагом

В данном руководстве мы рассмотрим, как подключить Single Sign-On (SSO) к вашему приложению на Yii2. SSO позволяет пользователям автоматически входить в разные системы, используя один и тот же набор учетных данных.

Шаг 1: Установка библиотеки

Первым шагом необходимо установить библиотеку yii2-sso-client через Composer. Откройте командную строку в папке вашего проекта и выполните следующую команду:

composer require tuyakhov/yii2-sso-client

Шаг 2: Конфигурация компонента

Подключение SSO в Yii2 требует настройки компонента в файле конфигурации. Откройте файл config/web.php вашего проекта и добавьте следующий код:

'components' => ['sso' => ['class' => 'tuyakhov\sso\Client','ssoServerUrl' => 'http://sso.example.com',],],

Здесь необходимо указать URL вашего SSO-сервера в поле ssoServerUrl.

Шаг 3: Вход в систему через SSO

Чтобы пользователю войти в ваше приложение через SSO, вам необходимо выполнить следующие шаги:

  1. В контроллере, ответственном за авторизацию, импортируйте класс Client:

    use tuyakhov\sso\Client;

  2. В методе actionLogin() добавьте следующий код:


    $client = Yii::$app->sso;
    $client->loginUrl = Url::to(['site/sso-login'], true);
    $client->logoutUrl = Url::to(['site/sso-logout'], true);
    $client->returnUrl = Url::to(['site/index'], true);
    $client->authenticate();

  3. Создайте два новых метода в контроллере: ssoLogin() и ssoLogout(). В методе ssoLogin() необходимо выполнить вход пользователя в вашу систему, используя данные, полученные от SSO-сервера. В методе ssoLogout() выполняйте выход пользователя из вашей системы:


    public function actionSsoLogin()
    {
    $client = Yii::$app->sso;
    $user = $client->getUser();
    // Авторизуйте пользователя в вашей системе
    }
    public function actionSsoLogout()
    {
    $client = Yii::$app->sso;
    // Разлогиньте пользователя из вашей системы
    }

  4. Добавьте ссылки для входа и выхода в ваш шаблон:


    if (Yii::$app->user->isGuest) {
    echo Html::a('Login', Yii::$app->sso->loginUrl);
    } else {
    echo Html::a('Logout', Yii::$app->sso->logoutUrl);
    }

Теперь пользователи смогут использовать SSO для входа в ваше приложение на Yii2 и автоматический выход из нескольких систем с помощью одного и того же аккаунта.

Шаг 1: Установка Yii2

Перед тем, как начать использовать Single Sign-On (SSO), необходимо установить Yii2 фреймворк на ваш сервер.

  1. Скачайте архив Yii2 с официального сайта или используйте Composer, выполнив команду:
    composer create-project --prefer-dist yiisoft/yii2-app-basic myproject
  2. Перейдите в папку вашего проекта:
    cd myproject
  3. Запустите встроенный сервер PHP:
    php -S localhost:8000

    Теперь вы можете открыть ваш проект в браузере, перейдя по адресу http://localhost:8000.

Поздравляю! Вы успешно установили Yii2 и готовы приступить к настройке SSO.

Шаг 2: Настройка базы данных

Шаг 2 состоит в настройке базы данных для вашего приложения Yii2. База данных будет использоваться для хранения пользовательской информации, такой как их учетные данные и данные профиля.

Для начала, вам нужно создать базу данных и настроить доступ к ней. Вы можете использовать любую поддерживаемую Yii2 базу данных (например, MySQL, PostgreSQL или SQLite).

Откройте файл config/db.php. В этом файле вы найдете настройки базы данных по умолчанию для разных окружений (например, development, production и т.д.). Выберите окружение, с которым вы хотите работать, и настройте параметры базы данных.

Пример настройки для MySQL:

'dsn' => 'mysql:host=локальный_хост;dbname=имя_базы_данных','username' => 'ваше_имя_пользователя','password' => 'ваш_пароль',

После настройки базы данных, сохраните файл.

Теперь можно выполнить миграцию базы данных. Запустите команду php yii migrate из корневой директории вашего проекта, чтобы создать необходимые таблицы базы данных для аутентификации пользователей.

Поздравляю! Вы успешно настроили базу данных для вашего Yii2 приложения.

Шаг 3: Установка и настройка SSO-клиента

Для использования функциональности SSO в Yii2, нам потребуется установить и настроить SSO-клиент. Это то приложение, которое будет взаимодействовать с SSO-сервером и выполнять аутентификацию пользователей.

  1. Сначала необходимо установить пакет yii2-authclient через Composer. Для этого откройте консоль и выполните следующую команду:

    composer require yiisoft/yii2-authclient

  2. После установки пакета, необходимо настроить компонент Yii2 для работы с SSO-клиентом. Откройте файл config/web.php и добавьте в него следующий код:


    'components' => [
    'authClientCollection' => [
    'class' => 'yii\authclient\Collection',
    'clients' => [
    'sso' => [
    'class' => 'yii\authclient\clients\OAuth2',
    'clientId' => 'YOUR_CLIENT_ID',
    'clientSecret' => 'YOUR_CLIENT_SECRET',
    ],
    ],
    ],
    ],

  3. Здесь мы создали компонент authClientCollection, который будет содержать нашего SSO-клиента. Наш клиент является клиентом OAuth2, поэтому мы указали класс yii\authclient\clients\OAuth2. Замените YOUR_CLIENT_ID и YOUR_CLIENT_SECRET на реальные значения, предоставленные вам SSO-сервером.
  4. Теперь, чтобы использовать SSO-клиента в своем приложении, вы можете вызвать его следующим образом:


    $client = Yii::$app->get('authClientCollection')->getClient('sso');

  5. Вы можете использовать этого клиента для аутентификации пользователя:


    $user = $client->getUserAttributes();
    // Возвращается массив атрибутов пользователя

Поздравляю! Теперь у вас есть SSO-клиент, который можно использовать для аутентификации пользователей с помощью SSO. Вы можете настроить другие параметры клиента, такие как область видимости и URL сервера, чтобы лучше соответствовать вашим требованиям.

Шаг 4: Интеграция SSO в Yii2-приложение

После того, как вы настроили SSO-провайдер и получили необходимые данные для интеграции, вам необходимо изменить код своего Yii2-приложения, чтобы реализовать SSO-авторизацию. Вот несколько шагов, которые вам следует выполнить:

  1. Добавьте пакет SSO в свое приложение с помощью менеджера пакетов Composer. Вы можете найти пакет SSO Yii2 на Packagist.
  2. Настройте компонент SSO в конфигурации вашего приложения. Укажите URL-адрес SSO-провайдера и другие необходимые параметры, такие как ключи и токены.
  3. Измените код вашей системы аутентификации, чтобы использовать SSO. Это может включать изменение контроллеров, представлений и моделей.
  4. Добавьте кнопку «Войти через SSO» на страницы аутентификации вашего приложения.
  5. Реализуйте обработчик для SSO-входа. Он должен получить данные пользователя от SSO-провайдера, а затем выполнить необходимые действия для аутентификации пользователя в вашем приложении.
  6. Убедитесь, что после аутентификации через SSO пользователь перенаправляется на правильную страницу.

После завершения этих шагов ваше Yii2-приложение будет полностью интегрировано с SSO и пользователи смогут использовать единый аккаунт для аутентификации.

Добавить комментарий

Вам также может понравиться