Получение ошибки 403 Предоставленный токен авторизации для запроса отличается от токена аутентификации сеанса при использовании Laravel Passport oauth - PullRequest
0 голосов
/ 24 марта 2020

Я использую Laravel 7 и пытаюсь ознакомиться с реализацией паспорта oauth 2.0. Я все правильно настроил на своем клиентском сайте:

Route::get('/redirect', function () {
    request()->session()->put('state', $state = Str::random(40));
    $query = http_build_query([
        'client_id' => 5,
        'redirect_uri' => 'http://localhost:8001/callback',
        'response_type' => 'code',
        'scope' => '',
        'state' => $state,
    ]);

    return redirect('http://localhost:8000/oauth/authorize?'.$query);
});

Route::get('/callback', function () {
    $state = request()->session()->pull('state');

    throw_unless(
        strlen($state) > 0 && $state === request()->state,
        InvalidArgumentException::class
    );

    $http = new GuzzleHttp\Client;

    $response = $http->post('http://localhost:8000/oauth/token', [
        'form_params' => [
            'grant_type' => 'authorization_code',
            'client_id' => '1',
            'client_secret' => 'XcxHBsIAPDsmCBTsy0PtAHE7pG9TbbkemVtmAXD8',
            'redirect_uri' => 'http://localhost:8001/callback',
            'code' => request()->code,
        ],
    ]);

    return json_decode((string) $response->getBody(), true);
});

Я не особо настраивал сервер аутентификации, я просто включил строку Passport::routes(); в класс AuthServiceProvider. Тем не менее я обнаружил следующую ошибку, связанную с чертой RetrievesAuthRequestFromSession в паспортном пакете после того, как я одобрил запрос . Это метод:

protected function assertValidAuthToken(Request $request)
    {
        dump($request->session()->get('authToken'));
        dump($request->get('auth_token'));
        if ($request->has('auth_token') && $request->session()->get('authToken') !== $request->get('auth_token')) {
            $request->session()->forget(['authToken', 'authRequest']);

            throw InvalidAuthTokenException::different();
        }
    }

Дополнительная информация; мой клиентский порт 8001. Сервер 8000. Может кто-нибудь, пожалуйста, помогите мне с этой проблемой. Заранее спасибо.

...