当前位置: 首页 > 知识库问答 >
问题:

始终对我的Laravel Passport生成的OAuth 2令牌响应401(未经授权)

锺离边浩
2023-03-14

我正在使用:

  • 邮递员/失眠检查

为Laravel Passport制作了Laravel文档中描述的所有检查表,经过某些步骤后,我收到了有效OAuth访问令牌的HTTP 401。

  1. 由/oauth/token/请求具有客户端id和客户端机密的新访问令牌
  2. 使用接收到的访问令牌授权包含Oauth api中间件的简单Laravel REST测试控制器
  3. 结尾是1:401:(

下面是我的一些配置

共有2个答案

辛弘壮
2023-03-14

这是因为默认情况下,Apache不会将授权头传递给PHP。您需要编辑Apache站点配置,以便在Deskpro指令中添加一行。请注意,此配置必须直接添加到Apache的配置中(例如,将其添加到htaccess将不起作用)

<VirtualHost>
# ...
    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
# ...
姚骁
2023-03-14

我也有一个非常类似的问题:

您的代码和我的代码之间的差异:在路由/api中。php,我只使用了auth:api。我没有创建PassportServiceProvider。应用程序文件夹中的php。在内核中。php我的是客户端而不是客户端凭据

我在POST请求调用中使用了client\u凭证作为grant\u类型。结果我总是得到401。

直到我创建了一个用户使用密码授予客户端:

php artisan passport:client --password

并将POST请求呼叫中的客户端\u凭据更改为密码

$http = new GuzzleHttp\Client;

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

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

将返回的访问令牌放在头的承载器中,它就会工作。您还可以使用$request获取当前用户-

如果您使用client_credentials作为grant_type,它将通过客户端中间件,因此在中间件中需要删除auth: api

 类似资料:
  • 我想使用服务帐户实现谷歌表API请求。我创建了这个代码: 但是我得到了这个错误: com.google.api.client.auth.oauth2.TokenResponseException: 401 未经授权 在这个方法中 你知道我该如何解决这个问题吗?

  • 我使用了以下来自google的示例https://developers.google.com/identity/sign-in/web/server-side-flow到目前为止,我能够实现以下步骤: 用户在客户端(浏览器)进行身份验证。 代码返回并保存在服务器数据库中。 请求身份验证代码令牌时,响应异常:401未授权 我检查了以下内容: 接口已启用 在 https://developers.go

  • 我成功地将Graph API用于各种事情,但我需要访问OneNote API来在班级笔记本上执行学生和教师的添加/删除操作。当我用https://www.OneNote.com资源请求一个令牌时,它提供了一个令牌,但当我试图使用它访问OneNote API时,无论发送什么(有效)请求,我都会得到401--“请求不包含有效的身份验证令牌”。 我的令牌请求: POST https://login.mi

  • 我正在使用spring boot文档https://www.baeldung.com/spring-boot-keycloak并且我已经停在了第4点。我不能通过POSTMAN和curl生成令牌,请给我任何建议,特别是上面的文档。我的错误是客户端凭据错误。 curl-x POST http://localhost:8080/auth/realms/master/protocol/openid-con

  • 这快把我逼疯了...一切都应该是正确的,我总是得到未经授权的错误在我的API路由! Api.php路由: }); 注册控制器: 数据库: 请求: 接受应用/json设置为: 我也尝试使用jQuery来请求一个查询参数api_key但它也不起作用!! 我搜索了很多,但无法解决这个问题。我有另一个新的应用程序与Laravel和auth,它的作品完美,但这个项目是旧的,我最近更新到Laravel 7,我

  • 请看下面生成的guzzle请求数据。 我在这里做错了什么?请分享你的想法。谢谢你。