Download the PHP package tigusigalpa/sber-id-php without Composer
On this page you can find all versions of the php package tigusigalpa/sber-id-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download tigusigalpa/sber-id-php
More information about tigusigalpa/sber-id-php
Files in tigusigalpa/sber-id-php
Package sber-id-php
Short Description Laravel package for Sber ID (SberBank OAuth) integration
License MIT
Informations about the package sber-id-php
Sber ID PHP/Laravel Пакет
Laravel пакет для интеграции с Sber ID (OAuth авторизация через Сбер). Поддержка тестового и промышленного окружения.
🌐 Язык: Русский | English
Содержание
- Возможности
- Требования
- Установка
- Настройка
- Использование
- API Справочник
- Доступные скоупы
- Решение проблем
- Тестирование
- Безопасность
- Поддержка
- Лицензия
Возможности
- ✅ Полная реализация OAuth 2.0 / OpenID Connect
- ✅ Поддержка тестового и промышленного окружения
- ✅ Управление access token и refresh token
- ✅ Получение данных профиля пользователя с расширенными скоупами
- ✅ Отправка аналитических событий
- ✅ Поддержка SSL сертификатов
- ✅ Совместимость с Laravel 8-12
- ✅ Простая настройка и кастомизация
Требования
- PHP 7.4 или выше
- Laravel 8.x, 9.x, 10.x, 11.x или 12.x
- GuzzleHTTP 7.x
Установка
Шаг 1: Установка пакета
Установите пакет через Composer:
Шаг 2: Публикация конфигурации
Опубликуйте конфигурационный файл:
Это создаст файл config/sberid.php в вашем Laravel приложении.
Шаг 3: Регистрация приложения
Зарегистрируйте приложение на портале Sber ID для получения:
- Client ID
- Client Secret
- SSL сертификата (для production)
Шаг 4: Настройка окружения
Добавьте следующие переменные в файл .env:
Шаг 5: Миграция базы данных (опционально)
Если вы хотите хранить данные Sber ID в таблице пользователей:
Добавьте в миграцию:
Выполните миграцию:
Настройка
Параметры окружения
| Переменная | Тип | По умолчанию | Описание |
|---|---|---|---|
SBERID_ENVIRONMENT |
string | sandbox | Окружение: 'sandbox' или 'production' |
SBERID_CLIENT_ID |
string | - | Ваш Sber ID client ID |
SBERID_CLIENT_SECRET |
string | - | Ваш Sber ID client secret |
SBERID_REDIRECT_URI |
string | - | Callback URL (должен совпадать с порталом) |
SBERID_SCOPES |
string | openid name email phone | Скоупы через пробел |
SBERID_REQUEST_REFRESH_TOKEN |
bool | true | Запрос refresh token |
SBERID_CERTIFICATE_PATH |
string | - | Путь к SSL сертификату |
SBERID_CERTIFICATE_PASSWORD |
string | - | Пароль сертификата |
SBERID_VERIFY_SSL |
bool | true | Проверка SSL сертификатов |
SBERID_SEND_ANALYTICS |
bool | true | Отправка аналитических событий |
SBERID_TIMEOUT |
int | 10 | Таймаут запроса (секунды) |
Окружения
Sandbox (Тестовое)
- Базовый URL:
https://oauth-ift.sber.ru - Используйте для разработки и тестирования
- Установите
SBERID_ENVIRONMENT=sandbox
Production (Промышленное)
- Базовый URL:
https://oauth.sber.ru - Требуется SSL сертификат
- Аналитические события обязательны
- Установите
SBERID_ENVIRONMENT=production
Использование
Базовое использование со встроенными маршрутами
Пакет предоставляет готовые маршруты:
Пользовательская реализация
1. Перенаправление на Sber ID
2. Обработка Callback
3. Обновление Access Token
Использование на чистом PHP (без Laravel)
Пакет можно использовать в любом PHP приложении без Laravel:
1. Инициализация клиента
2. Перенаправление на Sber ID (login.php)
3. Обработка Callback (callback.php)
4. Обновление токена (refresh.php)
5. Пример защищенной страницы (dashboard.php)
6. Полный пример с базой данных
Кастомизация контроллера (Laravel)
Расширьте стандартный контроллер:
API Справочник
Методы SberIDClient
getAuthorizationUrl(string $state = null, string $nonce = null): string
Генерирует URL авторизации для перенаправления пользователей на Sber ID.
getAccessToken(string $code): array
Обменивает код авторизации на access token, refresh token и ID token.
Возвращает:
refreshAccessToken(string $refreshToken): array
Обновляет истекший access token используя refresh token.
getUserInfo(string $accessToken): array
Получает информацию профиля пользователя используя access token.
confirmAuthenticationSuccess(string $accessToken): bool
Отправляет аналитическое событие в Sber ID (обязательно в production).
decodeIdToken(string $idToken): array
Декодирует и возвращает содержимое ID token.
SberIDException
Класс исключений для ошибок Sber ID API.
Методы:
getErrorCode(): string- Возвращает код ошибкиgetErrorDescription(): string- Возвращает описание ошибки
Распространенные коды ошибок:
invalid_request- Неверные параметры запросаinvalid_client- Неверные учетные данные клиентаinvalid_grant- Неверный код авторизации или refresh tokenunauthorized_client- Клиент не авторизованunsupported_grant_type- Тип grant не поддерживаетсяinvalid_scope- Неверный или неавторизованный scopeaccess_denied- Пользователь отклонил авторизацию
Доступные скоупы
Базовые скоупы (Light пакет)
| Скоуп | Описание | Поля |
|---|---|---|
openid |
Идентификатор пользователя (обязательно) | sub |
name |
ФИО | family_name, given_name, middle_name |
email |
Email адрес | email |
phone |
Номер телефона | phone_number |
birthdate |
Дата рождения | birthdate |
gender |
Пол | gender |
Расширенные скоупы (Standard пакет)
| Скоуп | Описание | Поля |
|---|---|---|
identification |
Паспортные данные | identification.* |
inn |
ИНН | inn.number |
snils |
СНИЛС | snils.number |
driving_license |
Водительское удостоверение | driving_license.number |
address_reg |
Адрес регистрации | address_reg.* |
address_of_actual_residence |
Адрес проживания | Как address_reg |
work_address |
Рабочий адрес | Как address_reg |
delivery_address |
Адрес доставки | Как address_reg |
Professional скоупы
| Скоуп | Описание |
|---|---|
priority_doc |
Приоритетный документ |
citizenship |
Гражданство |
place_of_birth |
Место рождения |
sts |
СТС |
previous_identification |
Предыдущий паспорт |
previous_name |
Предыдущее ФИО |
education |
Образование |
place_of_work |
Место работы |
job_title |
Должность |
marital_status |
Семейное положение |
Примеры использования скоупов
Только авторизация:
Базовый профиль:
KYC (Знай своего клиента):
Служба доставки:
Полный список: Документация Sber ID Scopes
Решение проблем
Проблемы установки
Не удается установить через Composer
- Проверьте версию PHP:
php -v(требуется 7.4+) - Обновите Composer:
composer self-update - Очистите кэш:
composer clear-cache
Service Provider не найден
- Выполните
composer dump-autoload - Очистите конфиг:
php artisan config:clear - Очистите кэш:
php artisan cache:clear
Проблемы конфигурации
Неверный Redirect URI
- Проверьте, что
SBERID_REDIRECT_URIточно совпадает с зарегистрированным в портале - Проверьте наличие завершающих слэшей
- Убедитесь в использовании HTTPS в production
Неверные учетные данные
- Проверьте
SBERID_CLIENT_IDиSBERID_CLIENT_SECRET - Проверьте на наличие лишних пробелов
- Убедитесь, что учетные данные для правильного окружения
Проблемы с SSL сертификатом
- Для разработки:
SBERID_VERIFY_SSL=false - Для production: проверьте путь и пароль сертификата
- Проверьте права доступа:
chmod 600 certificate.pem
Проблемы авторизации
Несовпадение параметра state
- Очистите cookies браузера и сессию
- Проверьте конфигурацию драйвера сессий
- Убедитесь, что middleware сессии активен
Код авторизации истек
- Не обновляйте страницу callback
- Реализуйте правильную обработку ошибок
- Направьте пользователя на повторную авторизацию
Неверный refresh token
- Проверьте, не истек ли токен (30 дней)
- Убедитесь, что запрашивался scope
offline_access - Не используйте один refresh token дважды
Отладка
Включите детальное логирование:
Тестирование
Запуск тестов:
Мок клиента для тестирования:
Безопасность
Лучшие практики безопасности
1. Настройка окружения
Всегда используйте HTTPS в production:
Включите проверку SSL:
Используйте production окружение для боевых сайтов:
2. Управление учетными данными
Никогда не коммитьте учетные данные в систему контроля версий:
- Добавьте
.envв.gitignore - Используйте переменные окружения для всех чувствительных данных
- Регулярно меняйте учетные данные
Защитите файл .env:
3. Хранение токенов
Шифруйте токены в базе данных:
Никогда не раскрывайте токены в URL или логах:
4. Валидация параметра State
Всегда проверяйте параметр state:
Используйте криптографически безопасные случайные строки:
5. Безопасность сессий
Настройте безопасные параметры сессий:
6. Безопасность сертификатов
Защитите SSL сертификаты:
Храните сертификаты вне веб-корня:
7. Валидация входных данных
Проверяйте все параметры callback:
8. Ограничение частоты запросов
Реализуйте rate limiting на маршрутах авторизации:
9. Обработка ошибок
Не раскрывайте чувствительную информацию в ошибках:
10. Безопасность базы данных
Используйте параметризованные запросы (Laravel делает это по умолчанию):
Соображения безопасности
Время жизни токенов
- Access токены истекают через 60 секунд
- Refresh токены истекают через 30 дней
- Реализуйте логику обновления токенов
- Удаляйте истекшие токены из базы данных
Разрешения скоупов
- Запрашивайте только необходимые скоупы
- Пользователи могут отклонить определенные скоупы
- Корректно обрабатывайте отсутствующие данные скоупов
Управление сертификатами
- Сертификаты периодически истекают
- Отслеживайте срок действия сертификата
- Имейте процесс обновления сертификатов
Отслеживание аналитики
- Аналитика обязательна в production
- Неотправка аналитики может повлиять на сервис
- Реализуйте логику повторных попыток для аналитики
Соответствие требованиям
Защита данных: Этот пакет обрабатывает персональные данные. Обеспечьте соответствие:
- GDPR (если применимо)
- Федеральный закон РФ № 152-ФЗ
- Другие применимые нормы защиты данных
Согласие пользователя:
- Получайте согласие пользователя перед сбором данных
- Предоставьте политику конфиденциальности
- Позвольте пользователям отозвать согласие
- Реализуйте процедуры удаления данных
Сообщение об уязвимостях безопасности
Пожалуйста, не сообщайте об уязвимостях безопасности через публичные GitHub issues.
Если вы обнаружили уязвимость безопасности, отправьте email на: [email protected]
Включите:
- Тип уязвимости
- Полные пути к файлам исходного кода, связанным с уязвимостью
- Пошаговые инструкции для воспроизведения проблемы
- Proof-of-concept или эксплойт код (если возможно)
- Влияние уязвимости
Сроки ответа:
- Подтверждение получения в течение 48 часов
- Оценка серьезности
- Координация исправления и раскрытия
- Упоминание в advisory по безопасности (если желаете)
Поддержка
Проблемы с пакетом
- GitHub Issues: https://github.com/tigusigalpa/sber-id-php/issues
- Email: [email protected]
Проблемы с Sber ID API
- Email: [email protected]
- Портал: https://id.sber.ru/profile/b2b
Ссылки на документацию
Лицензия
Лицензия MIT. Подробности в файле LICENSE.
Автор
- Igor Sazonov
- Email: [email protected]
Отказ от ответственности
Этот пакет не является официальным продуктом Сбербанка. Используйте на свой риск.
All versions of sber-id-php with dependencies
illuminate/support Version ^8.0|^9.0|^10.0|^11.0|^12.0
illuminate/http Version ^8.0|^9.0|^10.0|^11.0|^12.0
guzzlehttp/guzzle Version ^7.0