Laravel Passport без oAuth - PullRequest
       49

Laravel Passport без oAuth

2 голосов
/ 14 октября 2019

Я хочу использовать паспорт laravel для защиты моих вызовов API. Но я не хочу использовать access_tokens, которые подключены к пользователям.

Я хотел бы создать клиента (artisan passport:client) и использовать идентификатор и секретный ключ для авторизации моих запросов. Я просто не могу понять, как это должно работать или вообще возможно. Кто-нибудь знает, как этого добиться?

Я хочу сделать вызовы API, используя жрет в php.

1 Ответ

0 голосов
/ 14 октября 2019

ммм, вы можете использовать клиентские учетные данные Grant . Из документов:

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

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

Прежде чем ваше приложение сможет выдавать токены с помощью клиентского предоставления учетных данных, вам нужно будет создать клиентское клиентское предоставление полномочий. Вы можете сделать это, используя параметр --client команды passport:client:

php artisan passport:client --client

Далее, чтобы использовать этот тип предоставления, вам необходимо добавить промежуточное ПО CheckClientCredentials к свойству $routeMiddlewareВаш app/Http/Kernel.php файл:

use Laravel\Passport\Http\Middleware\CheckClientCredentials;

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

Затем присоедините промежуточное программное обеспечение к маршруту:

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

Чтобы ограничить доступ к маршруту для определенных областей, вы можете предоставить список с разделителями-запятымитребуемых областей при подключении промежуточного программного обеспечения client к маршруту:

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

Получение токенов

Чтобы получить токен с использованием этого типа предоставления, сделайте запрос к конечной точке 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'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...