sber-id-php
Описание
Библиотека для интеграции OAuth 2.0 авторизации через Сбер ID в PHP и Laravel приложениях. Поддерживает получение профиля пользователя, автоматическое обновление токенов, работу с расширенными скоупами (паспорт, ИНН, СНИЛС, адреса). Совместима с Laravel 8-12 и PHP 7.4+. Включает готовые решения для sandbox и production окружений с SSL-сертификатами
Языки
- PHP100%
Интеграция Sber ID для PHP и Laravel

Библиотека для быстрой реализации OAuth 2.0 авторизации через Сбер ID в PHP-приложениях. Работает как с Laravel-фреймворком, так и с чистым PHP. Включает готовые решения для sandbox и production сред.
🌐 Документация: Русский | English
🔗 GitHub Repository: https://github.com/tigusigalpa/sber-id-php
Навигация
- Быстрый старт
- Что умеет библиотека
- Системные требования
- Установка и настройка
- Примеры кода
- Работа со скоупами
- Методы клиента
- Частые вопросы
- Безопасная работа
- Контакты и поддержка
Быстрый старт
Установите пакет и начните работу за 5 минут:
Добавьте в :
Вставьте кнопку авторизации:
Готово! Пакет автоматически обработает авторизацию.
Что умеет библиотека
Основной функционал:
- 🔐 OAuth 2.0 и OpenID Connect протоколы
- 🔄 Автоматическое обновление токенов
- 👤 Получение профиля пользователя (имя, email, телефон, паспорт, адреса)
- 📊 Интеграция с аналитикой Сбера
- 🔒 Работа с SSL-сертификатами
Совместимость:
- Laravel 8.x - 12.x
- Чистый PHP 7.4+
- Sandbox и Production окружения
Системные требования
Установка и настройка
Шаг 1: Получение учетных данных
Зарегистрируйтесь на портале Sber ID и получите:
- идентификатор приложенияclient_id- секретный ключclient_secret- SSL-сертификат (для production)
Шаг 2: Установка через Composer
Шаг 3: Конфигурация Laravel
Откройте и укажите параметры:
Параметры окружения:
| Параметр | Значение | Описание |
|---|---|---|
| / | Режим работы |
| строка | ID из портала Sber |
| строка | Секрет из портала |
| URL | Адрес callback |
| строка | Запрашиваемые данные |
| / | Получать refresh token |
| путь | Путь к .pem файлу |
| / | Проверять SSL |
| / | Отправлять аналитику |
Шаг 4: Расширение таблицы users (опционально)
Создайте миграцию:
Добавьте поля:
Примените:
Примеры кода
Laravel: Встроенные маршруты
Пакет предоставляет готовые маршруты для авторизации:
Callback обрабатывается автоматически на .
Laravel: Кастомная реализация
Контроллер авторизации:
Чистый PHP: Полный пример
Инициализация (config.php):
Страница входа (login.php):
Обработка callback (callback.php):
Обновление токена:
Работа со скоупами
Базовые скоупы (Light)
Получаемые данные:
| Скоуп | Поля в ответе |
|---|---|
| (уникальный ID) |
| , , |
| |
| |
| (YYYY-MM-DD) |
| (male/female) |
Расширенные скоупы (Standard)
Документы и адреса:
| Скоуп | Данные |
|---|---|
| Серия, номер паспорта, дата выдачи, код подразделения |
| ИНН |
| СНИЛС |
| Номер водительского удостоверения |
| Адрес регистрации (индекс, регион, город, улица, дом, квартира) |
| Адрес доставки |
| Рабочий адрес |
Professional скоупы
Пример ответа с расширенными скоупами:
Методы клиента
getAuthorizationUrl()
Генерирует URL для перенаправления пользователя:
getAccessToken()
Обменивает код на токены:
getUserInfo()
Получает данные профиля:
refreshAccessToken()
Обновляет истекший токен:
confirmAuthenticationSuccess()
Отправляет аналитику (обязательно в production):
decodeIdToken()
Декодирует JWT ID токен:
Частые вопросы
Как работать с окружениями?
Sandbox (тестирование):
Production (боевой режим):
Почему токен истекает через 60 секунд?
Это особенность Sber ID API. Используйте refresh token для получения нового:
Как обрабатывать ошибки?
Коды ошибок:
- неверные параметрыinvalid_request- неверные credentialsinvalid_client- код/refresh token недействителенinvalid_grant- клиент не авторизованunauthorized_client- запрошен недоступный скоупinvalid_scope- пользователь отказалaccess_denied
Как проверить state параметр?
Redirect URI не совпадает?
Убедитесь, что:
- URI в
точно совпадает с порталом Sber ID.env - Используется HTTPS в production
- Нет лишних слэшей:
vs/callback/callback/ - Домен совпадает полностью
Как кастомизировать контроллер?
Зарегистрируйте свои маршруты:
Как тестировать?
Используйте мок:
Безопасная работа
Защита токенов
Шифруйте токены в БД:
Не логируйте токены:
HTTPS и SSL
Production требует HTTPS:
Защита сертификата:
Защита от CSRF
Rate Limiting
Валидация входных данных
Безопасность сессий
Соответствие законодательству
152-ФЗ "О персональных данных":
- Получайте согласие на обработку ПД
- Предоставьте политику конфиденциальности
- Реализуйте удаление данных по запросу
- Шифруйте чувствительные данные
Пример согласия:
Отчет об уязвимостях
Если обнаружили уязвимость:
📧 Email: sovletig@gmail.com
Укажите:
- Тип уязвимости
- Шаги воспроизведения
- Потенциальное влияние
- Proof-of-concept (если есть)
Ответ в течение 48 часов.
Контакты и поддержка
Вопросы по пакету
- 🐛 Issues: https://github.com/tigusigalpa/sber-id-php/issues
- 📧 Email: sovletig@gmail.com
- 💬 Telegram: @tigusigalpa
Вопросы по Sber ID API
- 📧 Support: support_sberid@sber.ru
- 🌐 Портал: https://id.sber.ru/profile/b2b
- 📚 Документация: https://developers.sber.ru/docs/ru/sberid
Полезные ссылки
Лицензия
MIT License. Подробности в LICENSE.
Автор
Igor Sazonov
- GitHub: @tigusigalpa
- Email: sovletig@gmail.com
Благодарности
Спасибо всем контрибьюторам проекта!
Disclaimer: Пакет не является официальным продуктом Сбербанка. Используйте на свой риск.