从 curl 使用 Auth0 调用 Laravel 5.3 API 时未经授权的用户

Posted

技术标签:

【中文标题】从 curl 使用 Auth0 调用 Laravel 5.3 API 时未经授权的用户【英文标题】:Unauthorized user when calling Laravel 5.3 API with Auth0 from curl 【发布时间】:2017-04-05 04:52:42 【问题描述】:

寻找 Auth0 的便利性来整理我的 Angular 2 客户端和 Laravel 5.3 API 之间的 JWT。我已遵循(并仔细检查了我已遵循)Auth0 的入门指南:

https://auth0.com/docs/quickstart/backend/php-laravel

但似乎无法让它对我进行身份验证。当我卷曲如下:

curl --request GET --url http://localhost/api/test --header 'authorization: auth0_id_token'

我明白了:

Unauthorized user curl: (6) Could not resolve host: auth0_id_token

在我的\routes\api 中,我有:

Route::get('/test', array('middleware' => 'auth0.jwt', function() 
    return "Hello " . Auth0::jwtuser()->name;
));

我正在使用这个生成id_token

https://auth0.com/docs/api/authentication#!#post--oauth-ro

当我转到 (https://manage.auth0.com/#/users) 时,可以看到 Auth0 认为用户已登录。

任何关于我应该在哪里尝试和调试的指针?

【问题讨论】:

【参考方案1】:

在 HTTP Authorization 标头中包含不记名令牌的正确方法是使用 Bearer 身份验证方案,因此您的标头应该是:

Authorization: Bearer [auth0_id_token]

此外,您从curl 收到的错误还表明该命令未按您的预期进行解析,更具体地说,似乎'authorization: auth0_id_token' 被解析为多个参数,这导致auth0_id_token 部分被考虑作为尝试解析主机时将失败的 URL;尝试使用双引号。

【讨论】:

非常感谢@João Angelo。这正是问题所在,虽然我检查了所有 Laravel 位是否正确,但我没有发现我的 Curl 是错误的。如果它可以帮助其他人,工作命令是: curl --request GET --url localhost/api/test --header "Authorization: Bearer auth0_id_token"。再次感谢。

以上是关于从 curl 使用 Auth0 调用 Laravel 5.3 API 时未经授权的用户的主要内容,如果未能解决你的问题,请参考以下文章

Auth0 Laravel 获取 JWT 令牌

Auth0 .NET Core - 从 access_token 读取权限

Auth0 登录调用 Youtube Data API v3

使用 VS Code 中的 Auth0 为 REST API 调用调试 VUE 应用程序

Azure Functions 应用程序 + Auth0 提供程序,使用身份验证令牌调用 API 时出现 401

Spring Security:未调用自定义 UserDetailsS​​ervice(使用 Auth0 身份验证)