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 Laravel:验证令牌并获取用户信息

PHP中的Auth0 JWT令牌验证

JWT 授权 laravel / angularjs 问题

Auth0 java-jwt 库无法验证有效令牌

Auth0 授权者拒绝来自服务的 JWT 令牌 - “jwt 颁发者无效。预期:https://myservice.auth0.com”