Как обрабатывать 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