sber-id-php

0

Описание

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

Языки

  • PHP100%
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
README.md

Интеграция Sber ID для PHP и Laravel

SberID PHP

Latest Version on Packagist

Библиотека для быстрой реализации OAuth 2.0 авторизации через Сбер ID в PHP-приложениях. Работает как с Laravel-фреймворком, так и с чистым PHP. Включает готовые решения для sandbox и production сред.

🌐 Документация: Русский | English

🔗 GitHub Repository: https://github.com/tigusigalpa/sber-id-php

Навигация

Быстрый старт

Установите пакет и начните работу за 5 минут:

Добавьте в

.env
:

Вставьте кнопку авторизации:

Готово! Пакет автоматически обработает авторизацию.

Что умеет библиотека

Основной функционал:

  • 🔐 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

Откройте

.env
и укажите параметры:

Параметры окружения:

ПараметрЗначениеОписание
SBERID_ENVIRONMENT
sandbox
/
production
Режим работы
SBERID_CLIENT_ID
строкаID из портала Sber
SBERID_CLIENT_SECRET
строкаСекрет из портала
SBERID_REDIRECT_URI
URLАдрес callback
SBERID_SCOPES
строкаЗапрашиваемые данные
SBERID_REQUEST_REFRESH_TOKEN
true
/
false
Получать refresh token
SBERID_CERTIFICATE_PATH
путьПуть к .pem файлу
SBERID_VERIFY_SSL
true
/
false
Проверять SSL
SBERID_SEND_ANALYTICS
true
/
false
Отправлять аналитику

Шаг 4: Расширение таблицы users (опционально)

Создайте миграцию:

Добавьте поля:

Примените:

Примеры кода

Laravel: Встроенные маршруты

Пакет предоставляет готовые маршруты для авторизации:

Callback обрабатывается автоматически на

/auth/sberid/callback
.

Laravel: Кастомная реализация

Контроллер авторизации:

Чистый PHP: Полный пример

Инициализация (config.php):

Страница входа (login.php):

Обработка callback (callback.php):

Обновление токена:

Работа со скоупами

Базовые скоупы (Light)

Получаемые данные:

СкоупПоля в ответе
openid
sub
(уникальный ID)
name
given_name
,
family_name
,
middle_name
email
email
phone
phone_number
birthdate
birthdate
(YYYY-MM-DD)
gender
gender
(male/female)

Расширенные скоупы (Standard)

Документы и адреса:

СкоупДанные
identification
Серия, номер паспорта, дата выдачи, код подразделения
inn
ИНН
snils
СНИЛС
driving_license
Номер водительского удостоверения
address_reg
Адрес регистрации (индекс, регион, город, улица, дом, квартира)
delivery_address
Адрес доставки
work_address
Рабочий адрес

Professional скоупы

Пример ответа с расширенными скоупами:

Методы клиента

getAuthorizationUrl()

Генерирует URL для перенаправления пользователя:

getAccessToken()

Обменивает код на токены:

getUserInfo()

Получает данные профиля:

refreshAccessToken()

Обновляет истекший токен:

confirmAuthenticationSuccess()

Отправляет аналитику (обязательно в production):

decodeIdToken()

Декодирует JWT ID токен:

Частые вопросы

Как работать с окружениями?

Sandbox (тестирование):

Production (боевой режим):

Почему токен истекает через 60 секунд?

Это особенность Sber ID API. Используйте refresh token для получения нового:

Как обрабатывать ошибки?

Коды ошибок:

  • invalid_request
    - неверные параметры
  • invalid_client
    - неверные credentials
  • invalid_grant
    - код/refresh token недействителен
  • unauthorized_client
    - клиент не авторизован
  • invalid_scope
    - запрошен недоступный скоуп
  • access_denied
    - пользователь отказал

Как проверить state параметр?

Redirect URI не совпадает?

Убедитесь, что:

  1. URI в
    .env
    точно совпадает с порталом Sber ID
  2. Используется HTTPS в production
  3. Нет лишних слэшей:
    /callback
    vs
    /callback/
  4. Домен совпадает полностью

Как кастомизировать контроллер?

Зарегистрируйте свои маршруты:

Как тестировать?

Используйте мок:

Безопасная работа

Защита токенов

Шифруйте токены в БД:

Не логируйте токены:

HTTPS и SSL

Production требует HTTPS:

Защита сертификата:

Защита от CSRF

Rate Limiting

Валидация входных данных

Безопасность сессий

Соответствие законодательству

152-ФЗ "О персональных данных":

  • Получайте согласие на обработку ПД
  • Предоставьте политику конфиденциальности
  • Реализуйте удаление данных по запросу
  • Шифруйте чувствительные данные

Пример согласия:

Отчет об уязвимостях

Если обнаружили уязвимость:

📧 Email: sovletig@gmail.com

Укажите:

  • Тип уязвимости
  • Шаги воспроизведения
  • Потенциальное влияние
  • Proof-of-concept (если есть)

Ответ в течение 48 часов.

Контакты и поддержка

Вопросы по пакету

Вопросы по Sber ID API

Полезные ссылки

Лицензия

MIT License. Подробности в LICENSE.

Автор

Igor Sazonov

Благодарности

Спасибо всем контрибьюторам проекта!


Disclaimer: Пакет не является официальным продуктом Сбербанка. Используйте на свой риск.