oauth-2.0 如何处理laravel passport中的“unsupported_grant_type”

yws3nbqq  于 2022-10-31  发布在  其他
关注(0)|答案(3)|浏览(257)

我正在尝试使用laravel,并尝试启用客户端凭证授权来保护一些api端点。

**提供一些上下文:**我想创建一个API,它位于数据库和几个网站(以及SPA)之间。这样我就可以进行一些监控(哪些网站/SPA调用哪些资源),并在总体上增加一些安全性。因此,在这种情况下,不需要额外的用户信息,为机器到机器通信授予客户端凭据应该是最好的方法。

我按照某人的教程(eidogg. this tutrial)来实现这些授权类型,但我卡住了...
我执行了以下操作:

  • 载入护照:config/app.php
  • 将服务提供商添加到config/app.phpLaravel\Passport\PassportServiceProvider::class,
  • 迁移:php artisan migrate
  • 安装:php artisan passport:install
  • HasApiTokens添加到App\User.php
  • Passport::routes()添加到app/Providers/AuthServiceProvider.php
  • 最后但并非最不重要的是,在config/auth.php中将身份验证保护的驱动程序选项设置为passport

到目前为止一切都很好。现在我创建了一个示例客户端,使用php artisan passport:client

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

现在,当我想通过使用postman(添加在body.formdata中,与提供的here类似)x1c 0d1x获取此客户端的令牌时
出现以下错误。

{
    "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的所有必要步骤?
提前感谢!!

n3ipq98p

n3ipq98p1#

您拼错了grant_type。在屏幕截图中,它显示为grand_type

sy5wg1nm

sy5wg1nm2#

正如您提到,这是SPA,因此
试试这个

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

把这个放进你 Postman
这样,您将获得指定用户access tokenrefresh token
参考链接https://laravel.com/docs/5.8/passport#requesting-password-grant-tokens

kgsdhlau

kgsdhlau3#

回应有点晚-但万一将来有人有这个问题...
从上面的屏幕截图中可以看出,您似乎是将url数据(username、password、grant_type)添加到了header而不是body元素中。
单击body选项卡,然后选择“x-www-form-urlencoded”单选按钮,下面应该有一个键值列表,您可以在其中输入请求数据

相关问题