我正在尝试使用laravel,并尝试启用客户端凭证授权来保护一些api端点。
**提供一些上下文:**我想创建一个API,它位于数据库和几个网站(以及SPA)之间。这样我就可以进行一些监控(哪些网站/SPA调用哪些资源),并在总体上增加一些安全性。因此,在这种情况下,不需要额外的用户信息,为机器到机器通信授予客户端凭据应该是最好的方法。
我按照某人的教程(eidogg. this tutrial)来实现这些授权类型,但我卡住了...
我执行了以下操作:
- 载入护照:
config/app.php
- 将服务提供商添加到
config/app.php
:Laravel\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
的所有必要步骤?
提前感谢!!
3条答案
按热度按时间n3ipq98p1#
您拼错了
grant_type
。在屏幕截图中,它显示为grand_type
。sy5wg1nm2#
正如您提到,这是SPA,因此
试试这个
把这个放进你 Postman
这样,您将获得指定用户
access token
和refresh token
参考链接https://laravel.com/docs/5.8/passport#requesting-password-grant-tokens
kgsdhlau3#
回应有点晚-但万一将来有人有这个问题...
从上面的屏幕截图中可以看出,您似乎是将url数据(username、password、grant_type)添加到了header而不是body元素中。
单击body选项卡,然后选择“x-www-form-urlencoded”单选按钮,下面应该有一个键值列表,您可以在其中输入请求数据