1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/leo108-php_cas_server

Клонировать/Скачать
readme_zh.md 13 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 08:18 3563e10

PHP CAS Server — это реализация сервиса CAS (Central Authentication Service), разработанная на основе фреймворка Laravel. Она предназначена для решения проблемы, с которой сталкиваются компании малого и среднего бизнеса, использующие PHP-технологии: невозможность самостоятельной разработки Java-версии CAS-сервера. Поэтому одной из основных целей проекта является его расширяемость.

Функции:

  • В настоящее время реализованы основные функции CAS-протокола версий v1, v2 и v3.
  • Поддерживается управление пользователями, включая добавление, изменение, поиск, активацию и деактивацию пользователей, а также настройку администраторов.
  • Реализовано управление сервисами, включая добавление, изменение и поиск сервисов, их активацию и деактивацию.
  • Обеспечена поддержка многоязычности: по умолчанию поддерживаются китайский и английский языки, можно добавлять другие языковые пакеты.
  • Способ входа в систему может быть расширен с помощью плагинов. По умолчанию поддерживается вход через электронную почту и пароль, но можно добавить другие способы входа, такие как вход через WeChat. Также можно отключить функцию входа через пароль.

Среда выполнения:

  • PHP версии 5.5.9 или выше.

Установка:

  • Через Composer:
    1. Выполнить команду composer create-project leo108/php_cas_server php_cas_server dev-master.
    2. Выполнить команды npm install или yarn.
    3. Выполнить команду gulp.
  • Из архива: Скачать архив с официального сайта проекта.

Конфигурация:

  • Если используется установка из архива, необходимо скопировать файл .env.example в корневой каталог проекта и переименовать его в .env. Затем выполнить команду php artisan key:generate.
  • Все настройки выполняются путём изменения файла .env.
Настройка Значение по умолчанию Описание
APP_ENV local Среда выполнения: local для локальной разработки, production для рабочей среды.
APP_KEY Случайное значение Ключ шифрования, не требует изменения.
APP_DEBUG true Включить режим отладки. При значении false режим отладки отключается.
APP_LOG_LEVEL debug Уровень логирования: debug, info, notice, warning, error, critical, alert, emergency.
APP_URL http://localhost Адрес доступа к приложению. Перед использованием необходимо добавить префикс http(s)://.
APP_LOCALE en Язык приложения: en и cn.

  • Конфигурация базы данных: Необходимо изменить все настройки, начинающиеся с DB_. После завершения настройки выполнить команду php artisan migrate для инициализации базы данных.

  • Настройки CAS:

    Настройка Значение по умолчанию Описание
    CAS_LOCK_TIMEOUT 5000 Время блокировки CAS-токена в миллисекундах.
    CAS_TICKET_EXPIRE 300 Срок действия CAS-токена в секундах.
    CAS_TICKET_LEN 32 Рекомендуемая длина CAS-токенов составляет не менее 32 символов.
    CAS_PROXY_GRANTING_TICKET_EXPIRE 7200 Срок действия прокси-CAS-токена в секундах.
    CAS_PROXY_GRANTING_TICKET_LEN 64 Рекомендуемая длина прокси-CAS-токенов составляет не менее 64 символов.
    CAS_PROXY_GRANTING_TICKET_IOU_LEN 64 Рекомендуемая длина IOU прокси-CAS-токенов составляет не менее 64 символов.
    CAS_VERIFY_SSL true Проверять SSL при обратном вызове PGT URL. Рекомендуется отключить в тестовой среде и включить в рабочей среде.
    CAS_SERVER_ALLOW_RESET_PWD true Разрешить пользователям восстанавливать пароли через электронную почту.
    CAS_SERVER_ALLOW_REGISTER true Разрешить регистрацию новых пользователей.
    CAS_SERVER_DISABLE_PASSWORD_LOGIN false Запретить использование паролей для входа.
    CAS_SERVER_NAME Central Authentication Service Название сервера CAS. Используется для отображения.
  • Настройка обратного прокси: Если PHP CAS Server работает за обратным прокси-сервером, необходимо настроить следующие параметры:

    Настройка Значение по умолчанию Описание
    TRUSTED_PROXIES 127.0.0.1 IP-адреса доверенных прокси-серверов. Можно указать несколько адресов, разделяя их запятыми. Поддерживаются как отдельные IP-адреса, так и диапазоны IP-адресов, например, 127.0.0.1/24. Настройки применяются только к запросам от указанных IP-адресов.
    TRUSTED_HEADER_CLIENT_IP X_FORWARDED_FOR Заголовок запроса, содержащий IP-адрес клиента.
    TRUSTED_HEADER_CLIENT_HOST X_FORWARDED_HOST Заголовок запроса, содержащий домен клиента.
    TRUSTED_HEADER_CLIENT_PROTO X_FORWARDED_PROTO Заголовок запроса, содержащий протокол клиента.
    TRUSTED_HEADER_CLIENT_PORT X_FORWARDED_PORT Заголовок запроса, содержащий порт клиента.
  • Инициализация базы данных и создание администратора: В корневом каталоге проекта выполнить команду php artisan migrate, чтобы инициализировать структуру базы данных. Затем выполнить команду php artisan make:admin --password=yourpassword, чтобы создать учётную запись администратора.

  • Плагины для аутентификации: Для пользователей, устанавливающих PHP CAS Server из архива, установка плагинов требует предварительной установки Composer.

    • Установка существующих плагинов: На данный момент доступны два плагина: для OAuth с WeChat и для OAuth с Weibo. В качестве примера рассмотрим установку плагина для WeChat:
      1. Добавить зависимость в Composer: composer require leo108/php_cas_server_oauth_wechat.
      2. Зарегистрировать плагин в файле config/app.php: добавить строку Leo108\CASServer\OAuth\WeChat\CASOAuthWeChatServiceProvider::class после строки providers.
      3. Зарегистрировать класс операций WeChat в файле app/Providers/AppServiceProvider.php:
        // Регистрация WeChat MP
        $this->app->bind(
            'cas.server.wechat.mp',
            function () {
                return new Application(
                    [
                        'app_id' => '公众平台AppId',
                        'secret' => '公众平台AppSecret',
                        'oauth'  => [
                            'scopes' => ['snsapi_userinfo'],
                        ],
                    ]
                );
            }
        );
        // Регистрация WeChat Open Platform
        $this->app->bind(
            'cas.server.wechat.open',
            function () {
                return new Application(
                    [
                        'app_id' => '开放平台AppId',
                        'secret' => '开放平台AppSecret',
                        'oauth'  => [
                            'scopes' => ['snsapi_login'],
                        ],
                    ]
                );
            }
        );
      Можно зарегистрировать только один из двух способов входа (MP или Open Platform), параметры указаны в документации EasyWechat. 4. Экспортировать файлы изменений базы данных: php artisan vendor:publish --provider="Leo108\CASServer\OAuth\WeChat\CASOAuthWeChatServiceProvider" --tag="migrations". 5. Запустить миграцию базы данных: php artisan migrate.
    • Создание собственных плагинов: Обычно создание собственного плагина включает несколько шагов:
      1. Создание нового класса, реализующего интерфейс CASPluginInterface.
      2. Регистрация плагина в файле config/cas.php.
      3. Добавление логики плагина. Создание файла изменения структуры базы данных: при интеграции стороннего логина необходимо регистрировать идентификатор пользователя на сторонней платформе, чтобы связать пользователей этой платформы с пользователями нашего сайта. Поэтому необходимо создать файл изменения структуры базы данных и добавить соответствующее поле для хранения идентификатора в таблице user_oauth.
  1. Создание класса плагина: класс плагина должен наследовать класс Leo108\CASServer\OAuth\Plugin и реализовывать методы gotoAuthUrl и getOAuthUser. Когда пользователь хочет войти в систему через предоставленный плагином способ входа, CAS-система вызывает метод gotoAuthUrl для получения URL авторизации для входа на сторонний сайт и перенаправляет туда; когда пользователь после авторизации на стороннем сайте перенаправляется обратно в CAS, система вызывает метод getOAuthUser для получения информации о авторизованном пользователе, этот метод должен возвращать объект типа Leo108\CASServer\OAuth\OAuthUser.

  2. Регистрация плагина в центре плагинов (PluginCenter): этот шаг можно выполнить непосредственно в App\Providers\AppServiceProvider или создать отдельный ServiceProvider и зарегистрировать его в config/app.php.

Конкретный код плагина можно написать, опираясь на уже существующие коды плагинов.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/leo108-php_cas_server.git
git@api.gitlife.ru:oschina-mirror/leo108-php_cas_server.git
oschina-mirror
leo108-php_cas_server
leo108-php_cas_server
master