Laravel Auth0 Неавторизованный пользователь

Мое приложение — это одностраничное приложение, использующее Angular 1.x на стороне клиента и Laravel 5.3 для моего сервера / API. Мне легко удалось заставить аутентификацию Auth0 работать на моей клиентской стороне (угловой), и она успешно генерирует токен. Переходя к моему API (laravel), к сожалению, я не могу получить доступ ни к каким маршрутам, защищенным auth0.jwt промежуточное ПО, хотя заголовок авторизации присутствует. Его ответ представляет собой простой текст, который говорит Unauthorized user,

Я использую Chrome почтальон, чтобы проверить маршруты на моем API.
Auth0 Middleware направляет защищенные вызовы с помощью 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, и также клонировал их примеры проектов, просто чтобы убедиться, что конфигурации верны, но, к сожалению, это также не работает. Любые мысли или идеи о том, как я могу решить мою проблему? Заранее спасибо!

1

Решение

У меня такая же проблема. Было 2 вещи, которые мне пришлось изменить, чтобы решить. Благодарим @ Kangoo13 за первое предложение:

1; Убедитесь, что в вашем файле config / laravel-auth0.php secret_base64_encoded = false. Вы увидите, что на панели инструментов Auth0 рядом с вашим ключом указано: «Секрет клиента не закодирован в base64»

 'secret_base64_encoded'  => false,

2; в том же файле конфигурации, проверьте, что «поддерживается» имеет правильное написание. Может показаться, что кто-то неправильно набрал «suported», если вы только что применили файл конфигурации по умолчанию после запуска composer, скорее всего, это неправильно!

Глядя в JWTVerifier.php, он, кажется, обслуживает неправильно написанный ключ, но по умолчанию будет «HS256», руководство Auth0 прямо заявляет, что вы должны использовать «RS256:

 'supported_algs'        => ['RS256'],

Надеюсь, это поможет!

2

Другие решения

Я прочитал suported_algs вопрос выше, но прочитайте его и пропустили тот факт, что вы должны исправить написание для его работы, потратили дополнительный день, пытаясь выяснить это перед повторным чтением. Надеюсь, следующий человек, который прочтет это, увидит это и не пропустит проблему правописания! Спасибо @ user1286856

1

По вопросам рекламы [email protected]