Matthias
Matthias

Reputation: 4163

How to handle "unsupported_grant_type" from laravel passport

I'm playing around with laravel and try to enable client credentials grant to secure some api endpoints.

To provide some context: I want to create an api that stands between a database and several websites (and SPAs). So I'll be able to do some monitoring (what website/SPA calls which ressources) and in general add some security. So in this case where no additional user inforamtion is required, the client credential grant for machine-to-machine communication should be the best approach.

I followed someone tutorials (e.g. this tutrial) to implement these grant type but I get stuck...

I did the following:

So far so good. Now I created a sample client with php artisan passport:client:

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

Now when I want to get a token for this client by using postman (added in the body.formdata like provided here) postman: call oauth/token

I get the following error.

{
    "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."
}

Am I missing something? I thought I did all the necessary steps to register the grant type?

Thanks in advance!!

Upvotes: 6

Views: 13751

Answers (4)

Mahdi Mirhendi
Mahdi Mirhendi

Reputation: 452

In latest versions you need to enable passwordGrant from AppServiceProvider boot method :

Passport::enablePasswordGrant();

Upvotes: 6

Abdullah Zafar
Abdullah Zafar

Reputation: 187

The response is a bit late - but in case anyone has the issue in the future...

From the screenshot above - it seems that you are adding the url data (username, password, grant_type) to the header and not to the body element.

Clicking on the body tab, and then select "x-www-form-urlencoded" radio button, there should be a key-value list below that where you can enter the request data

Upvotes: 2

rookian
rookian

Reputation: 1064

You misspelled grant_type. In the screenshot it says grand_type.

Upvotes: 4

Kamlesh Paul
Kamlesh Paul

Reputation: 12391

as you mention this is for SPA so

Try this

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

put this in you postman

by this you will get access token and refresh token for that specif user

ref link https://laravel.com/docs/5.8/passport#requesting-password-grant-tokens

Upvotes: 0

Related Questions