PHPackages                             tigusigalpa/alfa-id-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. tigusigalpa/alfa-id-php

ActiveLibrary[API Development](/categories/api)

tigusigalpa/alfa-id-php
=======================

Laravel package for Alfa ID OAuth authentication integration

v1.0.0(6mo ago)30MITPHPPHP ^7.4|^8.0|^8.1|^8.2|^8.3CI failing

Since Dec 21Pushed 6mo agoCompare

[ Source](https://github.com/tigusigalpa/alfa-id-php)[ Packagist](https://packagist.org/packages/tigusigalpa/alfa-id-php)[ RSS](/packages/tigusigalpa-alfa-id-php/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (5)Versions (2)Used By (0)

Alfa ID PHP/Laravel Пакет
=========================

[](#alfa-id-phplaravel-пакет)

[![AlfaID PHP](https://private-user-images.githubusercontent.com/2721390/528946765-2a0fe9f9-1833-441f-809e-be9dc8b9d64f.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxNDgzMjYsIm5iZiI6MTc4MjE0ODAyNiwicGF0aCI6Ii8yNzIxMzkwLzUyODk0Njc2NS0yYTBmZTlmOS0xODMzLTQ0MWYtODA5ZS1iZTlkYzhiOWQ2NGYuanBnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDYyMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA2MjJUMTcwNzA2WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZTlhMWE4OWNlYTBjZmVlNmU4MTAzZjE5N2Q3MTliN2FlYWNjODQ2OTAzZGIzNTUwYmY5OTYwN2ViZWE1YjkwNiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9.uQzN7A_8EOX8GEuWeOCcel0GwcPZlRa-Y6Lt0g7HPNM)](https://private-user-images.githubusercontent.com/2721390/528946765-2a0fe9f9-1833-441f-809e-be9dc8b9d64f.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxNDgzMjYsIm5iZiI6MTc4MjE0ODAyNiwicGF0aCI6Ii8yNzIxMzkwLzUyODk0Njc2NS0yYTBmZTlmOS0xODMzLTQ0MWYtODA5ZS1iZTlkYzhiOWQ2NGYuanBnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDYyMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA2MjJUMTcwNzA2WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZTlhMWE4OWNlYTBjZmVlNmU4MTAzZjE5N2Q3MTliN2FlYWNjODQ2OTAzZGIzNTUwYmY5OTYwN2ViZWE1YjkwNiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGanBlZyJ9.uQzN7A_8EOX8GEuWeOCcel0GwcPZlRa-Y6Lt0g7HPNM)

Laravel пакет для интеграции OAuth авторизации Alfa ID (сервис авторизации Альфа-Банка). Полная реализация OAuth 2.0 Authorization Code Flow с поддержкой песочницы и промышленного окружения.

**🌐 Язык:** Русский | [English](README-en.md)

---

Содержание
----------

[](#содержание)

- [Возможности](#%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8)
- [Требования](#%D1%82%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
- [Быстрый старт](#%D0%B1%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B9-%D1%81%D1%82%D0%B0%D1%80%D1%82)
- [Установка](#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0)
- [Конфигурация](#%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D1%8F)
- [Использование](#%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
- [Справочник API](#%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA-api)
- [Продвинутая интеграция](#%D0%BF%D1%80%D0%BE%D0%B4%D0%B2%D0%B8%D0%BD%D1%83%D1%82%D0%B0%D1%8F-%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F)
- [Безопасность](#%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C)
- [Тестирование](#%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)
- [Решение проблем](#%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC)
- [Участие в разработке](#%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%B8%D0%B5-%D0%B2-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B5)
- [История изменений](#%D0%B8%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%8F-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9)
- [Лицензия](#%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F)

---

Возможности
-----------

[](#возможности)

✅ **OAuth 2.0 Authorization Code Flow** - Полная реализация
✅ **Поддержка двух окружений** - Песочница и промышленный режим
✅ **Интеграция с Laravel** - Service provider, facade, middleware
✅ **Встроенные роуты** - Готовые OAuth endpoints
✅ **Управление токенами** - Получение, обновление и отзыв токенов
✅ **Профиль пользователя** - Получение информации об аутентифицированном пользователе
✅ **CSRF защита** - Валидация state параметра
✅ **Вспомогательные функции** - Удобные утилиты
✅ **Модульные тесты** - Включен набор тестов PHPUnit
✅ **Мультиверсионность** - Laravel 8-12, PHP 7.4-8.3

---

Требования
----------

[](#требования)

- **PHP:** 7.4, 8.0, 8.1, 8.2 или 8.3
- **Laravel:** 8.x, 9.x, 10.x, 11.x или 12.x
- **GuzzleHTTP:** 7.x

---

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

[](#быстрый-старт)

Запустите за 5 минут!

### Шаг 1: Установка пакета

[](#шаг-1-установка-пакета)

```
composer require tigusigalpa/alfa-id-php
```

### Шаг 2: Публикация конфигурации

[](#шаг-2-публикация-конфигурации)

```
php artisan vendor:publish --tag=alfaid-config
```

### Шаг 3: Настройка окружения

[](#шаг-3-настройка-окружения)

Добавьте в ваш `.env` файл:

```
ALFAID_ENVIRONMENT=sandbox
ALFAID_SANDBOX_CLIENT_ID=ваш_client_id
ALFAID_SANDBOX_CLIENT_SECRET=ваш_client_secret
ALFAID_SANDBOX_REDIRECT_URI=http://localhost:8000/alfaid/callback
```

> **Получите учетные данные на:**

### Шаг 4: Добавление роутов

[](#шаг-4-добавление-роутов)

Добавьте в `routes/web.php`:

```
// Обработчик успеха
Route::get('/dashboard', function () {
    $user = session('alfaid_user');
    return view('dashboard', compact('user'));
})->middleware('alfaid')->name('alfaid.success');

// Обработчик ошибок
Route::get('/auth/error', function () {
    return view('errors.auth')->with('error', session('error'));
})->name('alfaid.error');

// Успешный выход
Route::get('/', function () {
    return view('welcome');
})->name('alfaid.logout.success');
```

### Шаг 5: Регистрация Middleware

[](#шаг-5-регистрация-middleware)

Добавьте в `app/Http/Kernel.php`:

```
protected $routeMiddleware = [
    // ... существующие middleware
    'alfaid' => \Tigusigalpa\AlfaID\Middleware\AlfaIDAuthenticated::class,
];
```

### Шаг 6: Добавление кнопки входа

[](#шаг-6-добавление-кнопки-входа)

В вашем blade шаблоне:

```

    Войти через Альфа-Банк

```

### Шаг 7: Тестирование!

[](#шаг-7-тестирование)

```
php artisan serve
```

Посетите  и нажмите "Войти через Альфа-Банк" 🎉

---

Установка
---------

[](#установка)

### Вариант A: Через Composer (после публикации)

[](#вариант-a-через-composer-после-публикации)

```
composer require tigusigalpa/alfa-id-php
```

### Вариант B: Локальная разработка

[](#вариант-b-локальная-разработка)

Добавьте в ваш `composer.json`:

```
{
    "repositories": [
        {
            "type": "path",
            "url": "./packages/alfa-id-php"
        }
    ],
    "require": {
        "tigusigalpa/alfa-id-php": "*"
    }
}
```

Затем выполните:

```
composer update tigusigalpa/alfa-id-php
```

### Публикация файла конфигурации

[](#публикация-файла-конфигурации)

```
php artisan vendor:publish --tag=alfaid-config
```

Это создаст файл `config/alfaid.php` в вашем приложении.

### Настройка переменных окружения

[](#настройка-переменных-окружения)

Добавьте в ваш `.env` файл:

```
# Выберите окружение: sandbox или production
ALFAID_ENVIRONMENT=sandbox

# Конфигурация песочницы
ALFAID_SANDBOX_CLIENT_ID=ваш_sandbox_client_id
ALFAID_SANDBOX_CLIENT_SECRET=ваш_sandbox_client_secret
ALFAID_SANDBOX_REDIRECT_URI=http://localhost:8000/alfaid/callback

# Конфигурация промышленного окружения
ALFAID_PRODUCTION_CLIENT_ID=ваш_production_client_id
ALFAID_PRODUCTION_CLIENT_SECRET=ваш_production_client_secret
ALFAID_PRODUCTION_REDIRECT_URI=https://yourdomain.com/alfaid/callback

# Опциональные настройки
ALFAID_SCOPES="openid profile email"
ALFAID_VERIFY_SSL=true
```

### Настройка роутов

[](#настройка-роутов)

Пакет автоматически регистрирует эти роуты:

- `GET /alfaid/login`
- `GET /alfaid/callback`
- `POST /alfaid/logout`
- `POST /alfaid/refresh`
- `GET /alfaid/user`

Вам нужно создать роуты для успеха/ошибки в вашем `routes/web.php`:

```
Route::get('/alfaid/success', function () {
    return redirect('/dashboard');
})->name('alfaid.success');

Route::get('/alfaid/error', function () {
    return view('auth.error');
})->name('alfaid.error');

Route::get('/alfaid/logout/success', function () {
    return redirect('/');
})->name('alfaid.logout.success');
```

### Получение учетных данных Alfa ID

[](#получение-учетных-данных-alfa-id)

#### Окружение песочницы

[](#окружение-песочницы)

1. Посетите [Портал разработчиков Альфа-Банка](https://developers.alfabank.ru/)
2. Зарегистрируйтесь или войдите в свой аккаунт
3. Создайте новое приложение
4. Выберите "Alfa ID" в качестве продукта
5. Настройте redirect URI (например, `http://localhost:8000/alfaid/callback`)
6. Скопируйте Client ID и Client Secret
7. Используйте эти учетные данные в вашем `.env` файле

#### Промышленное окружение

[](#промышленное-окружение)

1. Завершите тестирование в песочнице
2. Отправьте ваше приложение на одобрение для промышленного использования
3. После одобрения вы получите промышленные учетные данные
4. Обновите ваш `.env` промышленными учетными данными
5. Измените `ALFAID_ENVIRONMENT=production`

---

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

[](#конфигурация)

Файл `config/alfaid.php` содержит следующие опции:

```
return [
    // Окружение: 'sandbox' или 'production'
    'environment' => env('ALFAID_ENVIRONMENT', 'sandbox'),

    // Конфигурация песочницы
    'sandbox' => [
        'base_url' => 'https://id-sandbox.alfabank.ru',
        'client_id' => env('ALFAID_SANDBOX_CLIENT_ID'),
        'client_secret' => env('ALFAID_SANDBOX_CLIENT_SECRET'),
        'redirect_uri' => env('ALFAID_SANDBOX_REDIRECT_URI'),
    ],

    // Конфигурация промышленного окружения
    'production' => [
        'base_url' => 'https://id.alfabank.ru',
        'client_id' => env('ALFAID_PRODUCTION_CLIENT_ID'),
        'client_secret' => env('ALFAID_PRODUCTION_CLIENT_SECRET'),
        'redirect_uri' => env('ALFAID_PRODUCTION_REDIRECT_URI'),
    ],

    // OAuth scopes
    'scopes' => env('ALFAID_SCOPES', 'openid profile email'),

    // Длина state параметра для CSRF защиты
    'state_length' => 32,

    // HTTP таймаут в секундах
    'timeout' => 30,

    // SSL верификация
    'verify_ssl' => env('ALFAID_VERIFY_SSL', true),
];
```

---

Использование
-------------

[](#использование)

### Базовый процесс аутентификации

[](#базовый-процесс-аутентификации)

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

- `GET /alfaid/login` - Перенаправление на страницу авторизации Alfa ID
- `GET /alfaid/callback` - Обработка OAuth callback
- `POST /alfaid/logout` - Выход пользователя и отзыв токена
- `POST /alfaid/refresh` - Обновление access token
- `GET /alfaid/user` - Возвращает данные аутентифицированного пользователя

### Использование Facade

[](#использование-facade)

```
use Tigusigalpa\AlfaID\Facades\AlfaID;

// Получить URL авторизации
$authUrl = AlfaID::getAuthorizationUrl();

// Получить access token из кода авторизации
$tokenData = AlfaID::getAccessToken($code);

// Получить профиль пользователя
$userProfile = AlfaID::getUserProfile($accessToken);

// Обновить access token
$newTokenData = AlfaID::refreshAccessToken($refreshToken);

// Отозвать токен
AlfaID::revokeToken($accessToken);
```

### Использование Dependency Injection

[](#использование-dependency-injection)

```
use Tigusigalpa\AlfaID\AlfaIDClient;

class YourController extends Controller
{
    protected $alfaId;

    public function __construct(AlfaIDClient $alfaId)
    {
        $this->alfaId = $alfaId;
    }

    public function login()
    {
        return redirect($this->alfaId->getAuthorizationUrl());
    }
}
```

### Защита роутов с помощью Middleware

[](#защита-роутов-с-помощью-middleware)

Зарегистрируйте middleware в `app/Http/Kernel.php`:

```
protected $routeMiddleware = [
    // ... другие middleware
    'alfaid' => \Tigusigalpa\AlfaID\Middleware\AlfaIDAuthenticated::class,
];
```

Используйте в ваших роутах:

```
Route::middleware('alfaid')->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index']);
    Route::get('/profile', [ProfileController::class, 'show']);
});
```

### Использование вспомогательных функций

[](#использование-вспомогательных-функций)

```
use Tigusigalpa\AlfaID\Helpers\AlfaIDHelper;

// Проверить, аутентифицирован ли пользователь
if (AlfaIDHelper::isAuthenticated()) {
    // Пользователь аутентифицирован
}

// Получить access token
$accessToken = AlfaIDHelper::getAccessToken();

// Получить данные пользователя
$user = AlfaIDHelper::getUser();

// Получить конкретный атрибут пользователя
$email = AlfaIDHelper::getUserAttribute('email');
$name = AlfaIDHelper::getUserAttribute('name', 'Гость');

// Проверить, истек ли токен
if (AlfaIDHelper::isTokenExpired()) {
    // Токен нужно обновить
}
```

### Переключение окружений

[](#переключение-окружений)

```
use Tigusigalpa\AlfaID\Facades\AlfaID;

// Переключиться на production
AlfaID::setEnvironment('production');

// Переключиться на sandbox
AlfaID::setEnvironment('sandbox');

// Получить текущее окружение
$env = AlfaID::getEnvironment();
```

### Использование без Laravel (чистый PHP)

[](#использование-без-laravel-чистый-php)

Библиотеку можно использовать в любом PHP проекте без Laravel:

#### Установка через Composer

[](#установка-через-composer)

```
composer require tigusigalpa/alfa-id-php
```

#### Базовая настройка

[](#базовая-настройка)

```
