gpt4 book ai didi

php - 为什么客户端凭证应该与 Laravel Passport 中的用户关联?

转载 作者:行者123 更新时间:2023-12-03 00:11:26 25 4
gpt4 key购买 nike

我想使用客户端凭据对客户端应用程序进行身份验证以访问 API。

我的问题是创建客户端凭据。使用 php artisan Passport:client 需要我输入 user_id 将客户端与该用户关联。我不明白。为什么客户端应用程序必须与用户关联?!或者还有其他方法吗?

passport:client 命令仅支持创建密码授予客户端和个人授予客户端。我认为其中任何一个都不是我所需要的。

我真正需要的是创建客户端凭据,该凭据仅由客户端应用程序用来授权自身访问某些 API。如何做到这一点?

最佳答案

我假设您想使用机器对机器身份验证(无用户交互)

我建议通读文档几次以掌握窍门。

我不相信有一种特定的方法来创建唯一的客户端凭据客户端,我所做的是创建一个个人客户端,然后更改数据库中个人客户端的字段personal_access_client 1 => 0

您可以使用个人客户端选项,如 --help 选项所示

Usage:
passport:client [options]

Options:
--personal Create a personal access token client
--password Create a password grant client
--name[=NAME] The name of the client
-h, --help Display this help message
...

php artisan Passport:client --personal

输出

Personal access client created successfully.
Client ID: 1
Client Secret: LbjQNxK5SQZ3pPrEBUwbkE8vaRkg8jh25Qh43HYy
<小时/>

您需要使用除默认中间件之外的另一种中间件,因为使用此方法时没有用户在场

  • 在内核中定义客户端凭据别名中间件
  • 向路由添加中间件
  • 发送请求

将客户端凭证中间件定义到http内核

\App\Http\Kernel:

 protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'client_credentials' => \Laravel\Passport\Http\Middleware\CheckClientCredentials::class,
//ommited
];

定义路由上的中间件

Route::get('/test', 'ApiTestController@test')->middleware('client_credentials');

\App\Http\Controllers\ApiTestController:

public function test() {
return response()->json(['data' => 'hey'] );
}

来自php artisan 路线:列表

GET|HEAD  | api/test | App\Http\Controllers\ApiTestController@test   | api,client_credentials  |

发送请求

遵循 client-credentials-grant-tokens 文档中的指定请求

为了简单起见,我使用 Postman,可以使用 Postman (www.getpostman.com) 轻松发送测试请求

设置授权为OAuth 2.0,图片:Postman authentication

将访问 token URL、客户端 ID、客户端 key 和授予类型设置为“客户端凭据”,图像:Postman OAuth Fields

Postman 创建一个 token 并将其附加到 URL 或 header ,在本例中为 header

Accept:application/json
Authorization:Bearer eyJ0eXAiOi...KCjK0

回应:

{
"data": "hey"
}

关于php - 为什么客户端凭证应该与 Laravel Passport 中的用户关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43706309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com