У меня есть приложение на основе 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 ?
- Знаете ли вы какие-либо ресурсы, которые обрабатывают этот запрос?