Как обрабатывать unsupported_grant_type из паспорта laravel

Я играю с laravel и пытаюсь включить предоставление учетных данных клиента для защиты некоторых конечных точек api.

Чтобы предоставить некоторый контекст: я хочу создать api, который стоит между базой данных и несколькими веб-сайтами (и SPA). Так что я смогу провести некоторый мониторинг (какой веб-сайт /SPA вызывает какие ресурсы) и в целом добавить некоторую безопасность. Таким образом, в этом случае, когда дополнительная информация о пользователе не требуется, предоставление учетных данных клиента для межмашинного взаимодействия должно быть лучшим подходом.

Я следовал чьим-то руководствам (например, этому руководству), чтобы реализовать этот тип гранта, но я застрял...

Я сделал следующее:

  • паспорт нагрузки: composer require laravel/passport
  • добавить поставщика услуг в config/app.php: Laravel\Passport\PassportServiceProvider::class,
  • мигрировать: php artisan migrate
  • установить: php artisan passport:install
  • добавлено HasApiTokens к App\User.php
  • добавлено Passport::routes() к app/Providers/AuthServiceProvider.php
  • последнее, но не менее важное: установите для параметра драйвера защиты аутентификации значение passport в config/auth.php

Все идет нормально. Теперь я создал образец клиента сphp artisan passport:client:

New client created successfully.
Client ID: 3
Client secret: S5s9oEIRm5DNy5ySsr1H6jWlraOCZyF24gcpoDrJ

Теперь, когда я хочу получить токен для этого клиента с помощью почтальона (добавлен в body.formdataкак предусмотрено здесь)

Я получаю следующую ошибку.

{
    "error": "unsupported_grant_type",
    "error_description": "The authorization grant type is not supported by the authorization server.",
    "hint": "Check that all required parameters have been provided",
    "message": "The authorization grant type is not supported by the authorization server."
}

Я что-то упускаю? Я думал, что сделал все необходимые шаги, чтобы зарегистрироватьgrant type?

Заранее спасибо!!

3 ответа

Решение

Вы неправильно написали grant_type. На скриншоте написаноgrand_type.

Ответ немного запоздал, но на случай, если у кого-то возникнет проблема в будущем...

На снимке экрана выше видно, что вы добавляете данные URL (имя пользователя, пароль, Grant_Type) в заголовок, а не в элемент body.

Нажав на вкладку body, а затем выберите переключатель «x-www-form-urlencoded», под ним должен быть список ключей и значений, где вы можете ввести данные запроса.

Как вы упомянули, это для СПА, поэтому

Попробуй это

grant_type: "password"
client_id:3
username:"your email"
password: "your password"
scope: "*"

вставь это в свой почтальон

этим вы получите access token а также refresh token для этого конкретного пользователя

ссылка на https://laravel.com/docs/5.8/passport

Другие вопросы по тегам