php Laravel Passport -无需用户创建授权

qgelzfjb  于 2023-03-16  发布在  PHP
关注(0)|答案(2)|浏览(132)

我有一个API,我希望这个API只用于授权的客户端(就像我的Web应用程序,应用程序等)
不会有任何用户。我想使用一个client_id & client_secret来授权我的应用程序,并创建承载令牌用于每个请求。
我在oauth_clients上创建了一个新客户端,并尝试在/oauth/token方法中使用它自己的client_id和client_secret。
但它返回“客户端身份验证失败”错误。
我在用那个身体:

{
  grant_type: "authorization_code",
  client_id: "blabla",
  client_secret: "blabla
}

如何仅使用client_secret和client_id而不定义任何其他用户来获取我的不记名令牌?

7kqas0il

7kqas0il1#

开发人员常犯的一个错误是试图使用授权码授予类型来验证没有用户界面或用户验证的客户端,如机器对机器(M2M)客户端。
Check my answer: Which OAuth 2.0 grant should I use?
您需要客户端凭据授权类型。此授权类型允许机密客户端(即可以保留客户端密码的客户端)仅使用其客户端ID和客户端密码获取访问令牌。

$response = $http->post('http://your-app.com/oauth/token', [
    'form_params' => [
        'grant_type' => 'client_credentials',
        'client_id' => 'your-client-id',
        'client_secret' => 'your-client-secret',
        'scope' => '',
    ],
]);

$access_token = json_decode((string) $response->getBody(), true)['access_token'];

视觉学习者?

myss37ts

myss37ts2#

我认为没有更多的参数是不可能验证客户端的。几个月前我在项目中遇到了同样的问题,我不得不添加authorization_code和redirect_uri参数。之后,我得到了访问和刷新令牌。也许,这个链接会有帮助:

相关问题