簡體   English   中英

Laravel Auth0未經授權的用戶

[英]Laravel Auth0 Unauthorized user

我的應用程序是一個單頁面應用程序,在客戶端使用Angular 1.x,在我的服務器/ api上使用Laravel 5.3。 我很容易設法使Auth0身份驗證在我的客戶端(角度)工作,並成功生成一個令牌。 移動到我的api(laravel),遺憾的是我無法訪問受auth0.jwt中間件保護的任何路由,即使存在Authorization標頭。 它的響應是一個簡單的文字,說Unauthorized user

我正在使用Chrome郵遞員測試我的api上的路線。 Auth0中間件使用Chrome郵遞員路由受保護的呼叫

我試圖通過檢查vendor\\auth0\\login\\src\\Auth0\\Login\\Middleware\\Auth0JWTMiddleware.php來追蹤負責響應的函數,並發現正在拋出CoreException

這是Auth0JWTMIddleware的句柄方法:

/**
     * @param $request
     * @param \Closure $next
     *
     * @return mixed
     */
    public function handle($request, \Closure $next)
    {
        $auth0 = \App::make('auth0');

        $token = $this->getToken($request);

        if (!$this->validateToken($token)) {
            return \Response::make('Unauthorized user', 401);
        }

        if ($token) {
            try {
                $jwtUser = $auth0->decodeJWT($token);
            } catch (CoreException $e) {
                return \Response::make('Unauthorized user', 401);
            } catch (InvalidTokenException $e) {
                return \Response::make('Unauthorized user', 401);
            }

            // if it does not represent a valid user, return a HTTP 401
            $user = $this->userRepository->getUserByDecodedJWT($jwtUser);

            if (!$user) {
                return \Response::make('Unauthorized user', 401);
            }

            // lets log the user in so it is accessible
            \Auth::login($user);
        }

        // continue the execution
        return $next($request);
    }

我懷疑是從Auth0生成的令牌有更新的算法或什么,而Laravel Auth0包還沒有支持它。

我完全遵循Auth0提供的文檔,我還克隆了他們的示例項目,以確保配置正確但不幸的是它也不起作用。 關於如何解決我的問題的任何想法或想法? 提前致謝!

我有同樣的問題。 我必須改變兩件事才能解決。 感謝@ Kangoo13的第一個建議:

1; 在config / laravel-auth0.php文件中檢查secret_base64_encoded = false。 您會注意到您的密鑰旁邊的Auth0儀表板中顯示“客戶端密鑰不是base64編碼的”

 'secret_base64_encoded'  => false,

2; 在同一個配置文件中,檢查“支持”是否具有正確的拼寫。 如果您在運行composer之后剛剛應用了默認配置文件,那么有人會錯誤地鍵入“suported”,那么這可能是錯誤的!

看看JWTVerifier.php它看起來似乎是為了迎合拼寫錯誤的密鑰,但它默認為'HS256',Auth0指南明確指出你應該使用'RS256:

 'supported_algs'        => ['RS256'],

希望有所幫助!

我閱讀了上面的suported_algs問題,但是略讀了它並且錯過了你必須糾正拼寫才能工作的事實,花了一天時間試圖在重新閱讀之前解決它。 希望下一個閱讀它的人看到這個並且不會錯過拼寫問題! 謝謝@ user1286856

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM