Вместо установки действия формы, как action="example.com/user/login"
установите для какого-либо действия в вашем контроллере. Затем в этом контроллере вызовите внешний API, прочитайте JSON, и если все в порядке, то войдите в систему пользователя программно. Например:
public function handleExternalApiLogin(Request $request, $token, GuardAuthenticatorHandler $handler, LoginFormAuthenticator $loginFormAuthenticator)
{
... //<- call external api and check if everything is ok
$user = ... //get user that you want to be logged
if ($user) {
$handler->authenticateUserAndHandleSuccess($user, $request, $loginFormAuthenticator, 'main'); // <- here 'main' is your firewall name
return $this->redirectToRoute('some_route_to_redirect_user_to');
}
return $this->redirectToRoute('route_where_login_form_is');
}