Концепция, отдельный Laravel Passport на сервере ресурсов и авторизации - PullRequest
0 голосов
/ 18 января 2019

Хорошо, у меня небольшой вопрос о концепции приложения. Я хочу различить ресурс и сервер авторизации по паспорту laravel.

У меня есть сервер OAuth2 и классическое приложение laravel с самодельной системой аутентификации без сохранения состояния. У меня есть SPA с Vue.js, который отправляет запрос на вход в интерфейс REST для приложения front laravel. Это приложение называется GuzzleClient для отправки запроса типа пароля oauth для получения токена.

    public function login(Request $request, Client $client)
    {
        $url = config('app.auth.server') .'/oauth/token';
        $response = $client->post($url, [
            'form_params' => [
                'grant_type' => 'password',
                'username' => $request->name,
                'password' => $request->password,
                'client_id' => config('auth.oauth.password.client-id'),
                'client_secret' => config('auth.oauth.password.client-secret'),
            ]
        ]);

        if ($response->getStatusCode() !== Response::HTTP_OK) {
            return http_response_code($response->getStatusCode());
        }

        return response()->json($response->getBody()->getContent(), Response::HTTP_OK);
    }

Но, если я хочу защитить маршрут API, я не могу использовать auth: api guard, предоставляемый паспортом.

2 решения.

  • Создание промежуточного программного обеспечения во внешнем приложении, которое вызывает пользовательский маршрут, созданный на сервере авторизации (паспорт laravel), для отправки однонаправленного канала-носителя (отправленного из javascript) и проверки его подлинности сервером OAuth.
  • Получите секретный ключ, используемый в паспорте для jwt, и позвольте серверу ресурсов самостоятельно проверить действительность токена. (с использованием специальной охраны)

Второе решение, вероятно, лучше. Но что вы думаете ? У вас есть идеи или лучшие практики?

Спасибо за чтение.

...