5

我正在玩 laravel 并尝试启用客户端凭据授予来保护一些 api 端点。

提供一些上下文: 我想创建一个位于数据库和多个网站(和 SPA)之间的 api。因此,我将能够进行一些监控(哪些网站/SPA 调用哪些资源),并且通常会增加一些安全性。因此,在这种不需要额外用户信息的情况下,机器对机器通信的客户端凭据授予应该是最好的方法。

我按照某人的教程(例如this tutrial)来实现这些授权类型,但我被卡住了......

我做了以下事情:

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

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

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

现在,当我想通过使用邮递员(在此处body.formdata提供的类似内容中添加) 为该客户端获取令牌时邮递员:调用 oauth/token

我收到以下错误。

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

提前致谢!!

4

2 回答 2

2

你拼错了grant_type。在屏幕截图中它说grand_type

于 2020-02-02T19:28:35.673 回答
0

正如你提到的,这是针对 SPA 的,所以

尝试这个

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

把这个放进你的邮递员

通过这个你会得到access token那个refresh token特定的用户

参考链接https://laravel.com/docs/5.8/passport#requesting-password-grant-tokens

于 2020-01-30T09:22:14.233 回答