Laravel Auth0 未授权用户
Posted
技术标签:
【中文标题】Laravel Auth0 未授权用户【英文标题】:Laravel Auth0 Unauthorized user 【发布时间】:2017-06-12 20:10:31 【问题描述】:我的应用程序是一个单页应用程序,在客户端使用 Angular 1.x,在我的服务器/api 使用 Laravel 5.3。我很容易设法使 Auth0 身份验证在我的客户端(角度)上工作,并成功生成了一个令牌。转到我的 api (laravel),不幸的是,即使存在 Authorization 标头,我也无法访问受 auth0.jwt
中间件保护的任何路由。它的回复是一个简单的文字,上面写着Unauthorized user
。
我正在使用 Chrome 邮递员来测试我的 api 上的路线。
我试图通过检查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 提供的文档进行操作,我还克隆了他们的示例项目,以确保配置正确,但不幸的是它也不起作用。关于如何解决我的问题的任何想法或想法?提前致谢!
【问题讨论】:
你好,我遇到了同样的问题,我通过 var_dumping 整个过程解决了这个问题,我发现我必须把 'secret_base64_encoded' => false 放在 laravel-auth0.php 中,如果这有帮助的话你 ! :) 【参考方案1】:我遇到了同样的问题。为了解决,我必须改变两件事。感谢@Kangoo13 的第一个建议:
1;检查您的 config/laravel-auth0.php 文件中的 secret_base64_encoded = false。您会在密钥旁边的 Auth0 仪表板中注意到“客户端密码不是 base64 编码”
'secret_base64_encoded' => false,
2;在同一个配置文件中,检查“支持”的拼写是否正确。似乎有人错误地输入了“支持”,如果您在运行 composer 后刚刚应用了默认配置文件,那么很可能这是错误的!
在 JWTVerifier.php 中查看它似乎确实可以解决拼写错误的密钥,但它会默认为“HS256”,Auth0 指南明确指出您应该使用“RS256:”
'supported_algs' => ['RS256'],
希望有帮助!
【讨论】:
【参考方案2】:我阅读了上面的suported_algs
问题,但略读阅读它并错过了你必须更正拼写才能使其工作的事实,在重新阅读之前花了额外的一天时间试图弄清楚它。希望下一个阅读它的人看到这个并且不会错过拼写问题!谢谢@user1286856
【讨论】:
以上是关于Laravel Auth0 未授权用户的主要内容,如果未能解决你的问题,请参考以下文章
auth0-js:UnauthorizedError:未找到授权令牌,但已登录
未授权客户端:客户端不允许授予类型“授权代码”。 Django -auth0 -login