Используйте E-Mail и Пароль для аутентификации на OAUTH2-провайдере - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть приложение на основе laravel, которое предоставляет Laravel / Passport для своего внешнего SPA.

Теперь я хотел бы использовать этот OAUTH2-сервер во втором приложении Laravel для обеспечения входа в систему -функциональность для пользователей.

Список приложений

  • Laravel -Provider : OAUTH2-провайдер на основе Laravel / Passport
  • Laravel -Клиент : Laravel приложение

Обе службы могут получать доступ друг к другу через внутреннюю сеть. Laravel -Provider не опубликован c, поэтому он не подвергается действию "www".

Моя цель

Я хотел бы разрешить пользователям Laravel -Клиент для входа в систему Laravel -Клиент с использованием учетных данных пользователя, хранящихся в приложении Laravel -Provider .

Мои попытки

Сначала я проверял Laravel / Socialite для подключения к Laravel -Provider . Но в этом случае пользователь, который посетил Laravel - Клиент перенаправляется на Laravel -Provider 'oath/authorize URL и должен предоставить свои учетные данные там. Кроме того, пользователь должен не иметь возможность доступа Laravel -Provider напрямую.

Теперь я думаю о каком-то специальном User провайдере на Laravel -Клиенте , который не хранит пользовательские данные в базе данных (или, может быть, это так, но нет информации о пароле или логине), но я не вижу хороших ресурсов в inte rnet, чтобы получить примеры для этого.

Я alr Любая возможность извлекать информацию, используя своего рода «суперпользователя» через API, предоставляемый Laravel -Provider :

Это извлекает токен:

return $client->request('POST',
    'https://laravel-provider.test/oauth/token', [
        'headers'     => [
            'cache-control' => 'no-cache',
            'Content-Type'  => 'application/x-www-form-urlencoded',
        ],
        'form_params' => [
            'client_id'     => config('accounting.client_id'),
            'client_secret' => config('accounting.client_secret'),
            'grant_type'    => 'password',
            'username'      => config('accounting.user'),
            'password'      => config('accounting.password'),
        ],
    ]);

This извлекает информацию:

<?php
$client   = $this->client;
$response = $client->request('GET',
    'https://laravel-provider.test/test', [
        'headers' => [
            'Accept'        => 'application/json',
            'Authorization' => 'Bearer '.$this->getAccessToken(),
        ],
    ]);

Мои вопросы

  • Возможно ли войти в систему моего пользователя на Laravel -Клиенте с использованием учетных данных, хранящихся на Laravel -Provider ?
  • Знаете ли вы какие-либо ресурсы, которые обрабатывают этот запрос?
...