войти в стороннее приложение с авторизационным кодом Grant в laravel Паспорт не работает - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь использовать код авторизации для авторизации сторонних клиентов на паспортном Oauth-сервере. когда я использую пароль, предоставьте его работу должным образом, и паспорт даст мне маркер, и все в порядке. в стороннем приложении я добавляю этот код:

Route::get('/redirect', function (Request $request) {
    $query = http_build_query([
        'client_id' => 3,
        'redirect_uri' => 'http://127.0.0.1:8001/callback',
        'response_type' => 'code',
        'scope' => '',
        'state' => \Str::random(40),
    ]);

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

Route::get('/callback', function (Request $request) {
    $response = (new GuzzleHttp\Client)->post('http://127.0.0.1:8000/oauth/token', [
        'form_params' => [
            'grant_type' => 'authorization_code',
            'client_id' => 3, 
            'client_secret' => 'Ux6p201tRFrPQ5lLZI1RMce1GYD6qTJ9Qvj7nM2Z',
            'redirect_uri' => 'http://127.0.0.1:8001/callback',
            'code' => $request->code,
        ]
    ]);
    session()->put('token', json_decode((string)$response->getBody(), true));

    return redirect('/todos');
});

Route::get('/todos', function () {
    $response = (new GuzzleHttp\Client)->get('http://127.0.0.1:8000/api/todos', [
        'headers' => [
            'Authorization' => 'Bearer ' . session()->get('token.access_token')
        ]
    ]);

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

на другом сервере я создаю клиента с идентификатором: 3 секрет: Ux6p201tRFrPQ5lLZI1RMce1GYD6qTJ9Qvj7nM2Z обратный вызов: 'http://127.0.0.1: 8001 / callback ' 1007 *

, но когда я создаю запрос на / перенаправление из стороннего приложения, я получаю: 401 без проверки подлинности и перенаправление для входа в систему, также я пытаюсь добавить

  Passport::$ignoreCsrfToken = true;

в AuthServiceProvider. но пока не работает. Кто-нибудь может мне помочь, пожалуйста?

1 Ответ

0 голосов
/ 14 марта 2020

Подобная проблема уже указана в Laravel Хранилище паспортов github

Чтобы устранить эту ошибку, добавьте Passport::$ignoreCsrfToken = true; в AuthServiceProvider файл

https://github.com/laravel/passport/issues/839

...