Php Laravel Auth0未经授权的用户
我的应用程序是一个单页应用程序,客户端使用Angular 1.x,服务器/api使用Laravel 5.3。我很容易地使Auth0身份验证在我的客户端(angular)上工作,它成功地生成了一个令牌。转到我的api(laravel),不幸的是,即使存在授权头,我也无法访问受Php Laravel Auth0未经授权的用户,php,angularjs,laravel,jwt,auth0,Php,Angularjs,Laravel,Jwt,Auth0,我的应用程序是一个单页应用程序,客户端使用Angular 1.x,服务器/api使用Laravel 5.3。我很容易地使Auth0身份验证在我的客户端(angular)上工作,它成功地生成了一个令牌。转到我的api(laravel),不幸的是,即使存在授权头,我也无法访问受auth0.jwt中间件保护的任何路由。它的响应是一个简单的文本,上面写着未经授权的用户 我正在使用Chrome postman在我的api上测试路由。 我试图通过检查vendor\auth0\login\src\auth0
auth0.jwt
中间件保护的任何路由。它的响应是一个简单的文本,上面写着未经授权的用户
我正在使用Chrome postman在我的api上测试路由。
我试图通过检查vendor\auth0\login\src\auth0\login\Middleware\Auth0JWTMiddleware.php
来跟踪负责响应的函数,并发现正在抛出CoreException
以下是Auth0JWT中间件的句柄方法:
/**
* @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: 一,;在config/laravel-auth0.php文件中检查secret\u base64\u encoded=false。您会注意到,在Auth0仪表板中,在密钥旁边,它声明“客户端密码不是base64编码的” 二,;在同一配置文件中,检查“受支持”的拼写是否正确。如果您在运行composer之后应用了默认的配置文件,那么很可能有人输入了错误的“支持”,这是错误的 在JWTVerifier.php中查看,它看起来确实适合拼写错误的密钥,但它将默认为“HS256”,Auth0指南明确指出您应该使用“RS256:
'supported_algs' => ['RS256'],
希望有帮助 我读了上面的
suported_algs
一期,但略读了一下,错过了一个事实,那就是你必须纠正拼写才能正常工作,在重读之前花了额外的一天时间试图弄清楚它。希望下一个阅读它的人看到这一点,不要错过拼写问题!谢谢@user1286856您好,我也遇到了同样的问题,我通过var_转储整个过程解决了这个问题,我发现我必须在laravel-auth0.php中输入'secret_base64_encoded'=>false,如果这对您有帮助的话!:)
'supported_algs' => ['RS256'],