Auth0 Laravel 获取 JWT 令牌
Posted
技术标签:
【中文标题】Auth0 Laravel 获取 JWT 令牌【英文标题】:Auth0 Laravel get JWT token 【发布时间】:2021-10-20 14:41:00 【问题描述】:我使用 Auth0 作为我的 OAuth 提供程序,它运行良好。整个事情在我的 Laravel 后端运行,它正确地重定向并返回身份验证。然而问题是我找不到检索 JWT 令牌的函数。我知道我可以使用正确的数据进行 curl 请求,但是当所有 url 数据已经在 Auth0\Login\Auth0Service
中可用时构建一个似乎不合逻辑。所以我要么没有找到正确的方向,要么它不存在。
问题是:Laravel 的 Auth0 包中提供的 jwt 令牌有没有方便检索的功能。
【问题讨论】:
【参考方案1】:我的问题的字面答案在配置文件'persist_id_token' => true,
中。这给了我 jwt 令牌。但最终这并不是完全的解决方案。由于两个问题,未包含用户数据。首先是范围;它没有配置文件。第二个问题是很多数据超出了范围。所以我们制作了自定义范围来解决这个问题。
最后,我似乎不知道 OIDC 定义的范围/声明。可以在这里找到:https://auth0.com/docs/tokens/json-web-tokens/json-web-token-claims
【讨论】:
【参考方案2】:您可以提供您的示例,然后我将查看您的代码中的具体问题,
一般情况下,您可以访问令牌。
下一个示例有一个不记名令牌,您可以访问$request->bearerToken()
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
$auth0 = app()->make('auth0');
$accessToken = $request->bearerToken();
try
$tokenInfo = $auth0->decodeJWT($accessToken);
$user = $this->userRepository->getUserByDecodedJWT($tokenInfo);
if (!$user)
return response()->json(["message" => "Unauthorized user"], 401);
catch (InvalidTokenException $e)
return response()->json(["message" => $e->getMessage()], 401);
catch (CoreException $e)
return response()->json(["message" => $e->getMessage()], 401);
return $next($request);
【讨论】:
您正在显示 API 连接。这样,请求正文中有一个不记名令牌。我正在使用 webapp 版本:auth0.com/docs/quickstart/webapp/laravel#configure-auth0以上是关于Auth0 Laravel 获取 JWT 令牌的主要内容,如果未能解决你的问题,请参考以下文章
@auth0/angular-jwt : 从解码的令牌中获取声明
Auth0 授权者拒绝来自服务的 JWT 令牌 - “jwt 颁发者无效。预期:https://myservice.auth0.com”