Как организовать такую ​​защиту маршрута, используя Laravel Паспорт? - PullRequest
1 голос
/ 03 февраля 2020

В моем laravel проекте я использую Laravel Паспорт Пароль и Клиентские учетные данные Предоставление токенов.

Клиентские учетные данные Предоставление токенов

Предоставление учетных данных клиента подходит для проверки подлинности между компьютерами. Например, вы можете использовать этот грант в запланированном задании, выполняющем задачи обслуживания через API.

Этот тип гранта имеет промежуточное ПО для проверки учетных данных клиента.

Путь промежуточного ПО

Laravel\Passport\Http\Middleware\CheckClientCredentials

Регистрируя это промежуточное ПО в app/Http/Kernel.php, мы можем защитить наши маршруты

use Laravel\Passport\Http\Middleware\CheckClientCredentials;

protected $routeMiddleware = [
    'client' => CheckClientCredentials::class,
];

Пример защиты маршрута

Route::get('/orders', function (Request $request) {
    ...
})->middleware('client');

Мы можем получить любые токены доступа типа предоставления, запросив: http://your-app.com/oauth/token

Пример

$guzzle = new GuzzleHttp\Client;

$response = $guzzle->post('http://your-app.com/oauth/token', [
    'form_params' => [
        'grant_type' => 'client_credentials',
        'client_id' => 'client-id',
        'client_secret' => 'client-secret',
        'scope' => 'your-scope',
    ],
]);

return json_decode((string) $response->getBody(), true)['access_token'];

Токены предоставления пароля

Предоставление пароля OAuth2 позволяет другим сторонним клиентам, таким как мобильное приложение, получить токен доступа, используя адрес электронной почты / имя пользователя и пароль. Это позволяет вам безопасно выдавать токены доступа вашим сторонним клиентам, не требуя от пользователей go через весь процесс перенаправления кода авторизации OAuth2.

Whith Client Grant Client мы можем авторизовать наши пользователи и защищают авторизованные маршруты, используя промежуточное ПО auth:api. Для авторизованных маршрутов eccess необходимо установить токен для заголовка запроса в поле access_token.

Пример защиты маршрута

Route::get('/orders', function (Request $request) {
    ...
})->middleware('auth:api');

Теперь, когда оба типа предоставлены ( Токены предоставления пароля && Токены предоставления клиента ) необходимо получить доступ к токену из поля заголовка access_token как я могу защитить свои маршруты?

Что-то вроде этого

Route::get('/orders', function (Request $request) {
    ...
})->middleware(['client', 'auth:api']);

Как организовать такую ​​защиту с использованием Laravel Паспорта, когда оба промежуточного ПО ожидают токен из одного поля access_token заголовка?

1 Ответ

0 голосов
/ 03 февраля 2020

как это возможно ??

Route::middleware(['client', 'auth:api'])->group(function(){
            Route::get(....);
        });
...