PHP CAS Server — это реализация сервиса CAS (Central Authentication Service), разработанная на основе фреймворка Laravel. Она предназначена для решения проблемы, с которой сталкиваются компании малого и среднего бизнеса, использующие PHP-технологии: невозможность самостоятельной разработки Java-версии CAS-сервера. Поэтому одной из основных целей проекта является его расширяемость.
Функции:
Среда выполнения:
Установка:
composer create-project leo108/php_cas_server php_cas_server dev-master
.npm install
или yarn
.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.
composer require leo108/php_cas_server_oauth_wechat
.config/app.php
: добавить строку Leo108\CASServer\OAuth\WeChat\CASOAuthWeChatServiceProvider::class
после строки providers
.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'],
],
]
);
}
);
php artisan vendor:publish --provider="Leo108\CASServer\OAuth\WeChat\CASOAuthWeChatServiceProvider" --tag="migrations"
.
5. Запустить миграцию базы данных: php artisan migrate
.CASPluginInterface
.config/cas.php
.Создание класса плагина: класс плагина должен наследовать класс Leo108\CASServer\OAuth\Plugin и реализовывать методы gotoAuthUrl и getOAuthUser. Когда пользователь хочет войти в систему через предоставленный плагином способ входа, CAS-система вызывает метод gotoAuthUrl для получения URL авторизации для входа на сторонний сайт и перенаправляет туда; когда пользователь после авторизации на стороннем сайте перенаправляется обратно в CAS, система вызывает метод getOAuthUser для получения информации о авторизованном пользователе, этот метод должен возвращать объект типа Leo108\CASServer\OAuth\OAuthUser.
Регистрация плагина в центре плагинов (PluginCenter): этот шаг можно выполнить непосредственно в App\Providers\AppServiceProvider или создать отдельный ServiceProvider и зарегистрировать его в config/app.php.
Конкретный код плагина можно написать, опираясь на уже существующие коды плагинов.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )