Я сделаю это максимально простым.
Допустим, у меня есть WordPress-сайт "test.com" с 5 пользователями.
Каждому пользователю вручную назначается уникальный аккаунт Google Cloud Platform.
На каждой учетной записи GCP развернута 1 виртуальная машина.
У меня есть полный доступ к этим учетным записям (для создания oauth clientID-ключей json и / или авторизации "test.com" и / или добавления областей "compute.engine (readonly)")
Мне нужна самая простая из возможных стратегий и код для создания wp-совместимого dashboard.php, который извлекает данные виртуальной машины GCP вошедшего в систему пользователя (возможно, через / compute / v1 / projects / {project} / zone / {zone} / экземпляры / {ResourceId} / addAccessConfig).
Пример:
User1 is previously assigned test1@google.com
test1@google.com has 1 CENTOS VM deployed in compute engine
User1 logs into WORDPRESS-SITE-1.com
User1 goes on "Dashboard" and sees details of CENTOS Deployed VM.
User2 is previously assigned test2@google.com
test2@google.com had 1 Windows SRV VM deployed
...
Как я могу реализовать это с зарегистрированными пользователями WordPress.
OAUTH с GCP должен быть полностью безмолвным.
По сути, я хотел бы хранить «пользовательские ключи», например:
usr1_key.json
usr2_key.json
...
тогда я бы выбрал соответствующий ключ для авторизации с GCP compute engine
PHP, если возможно.
Я много читаю, но есть 500 различных способов реализации Google OAUTH.
Мое использование довольно специфично, и я не могу найти ПРОСТОЙ способ сделать то, что нужно.
В заключение, в идеальном случае я бы добавил неизвестный код в последние строки wp-login.php:
заставить нас тихо авторизоваться в GCP compute engine через правильный ключ (json)
В отсутствие лучших терминов, заставьте wp-login.php извлечь правильные ключи GCP и сгенерировать токен API, чтобы usr1 мог: GET / compute / v1 / projects / {project} / zone / {zone} / acceleratorTypes / {RESOURCEID}
А что-то вроде этого:
<?php
require_once 'vendor/autoload.php';
$current_user = wp_get_current_user();
$accessTokenUrl = 'https://accounts.google.com/o/oauth2/token';
$client = new Google_Client();
$client->setAuthConfig('keys/$current_user.json');
$client->addScope("https://www.googleapis.com/auth/compute")