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