Пример Java GCP IAP, возвращающий ComputeEngineCredentials вместо ServiceAccountCredentials - PullRequest
0 голосов
/ 01 октября 2018

Контекст

У меня есть несколько служб в Google AppEngine Гибкая среда, взаимодействующая через API, и в то время как я использую IAP для управления доступом пользователей.Я должен программно аутентифицировать каждый сервис с токеном Bearer JWT.

Проблема

В моем приложении Java я использую код, предоставляемый Google для аутентификации служб IAP, который вы можете найти здесь: https://cloud.google.com/iap/docs/authentication-howto#iap_make_request-java

Проблема вэтот блок кода:

GoogleCredentials credentials =
    GoogleCredentials.getApplicationDefault().createScoped(Collections.singleton(IAM_SCOPE));
// service account credentials are required to sign the jwt token
if (credentials == null || !(credentials instanceof ServiceAccountCredentials)) {
  throw new Exception("Google credentials : service accounts credentials expected");
}
return (ServiceAccountCredentials) credentials;

Метод createScoped возвращает ComputeEngineCredentials, в то время как код ожидает объект ответа ServiceAccountCredentials.

Все предложения приветствуются.Заранее благодарим за величайшее в истории сообщество.

1 Ответ

0 голосов
/ 02 октября 2018

Вы на самом деле не упоминаете природу трудности, с которой вы столкнулись.Учетная запись службы гибкой среды App Engine автоматически создается в проекте GCP.При попытке создать учетную запись службы гибкой среды App Engine - это отдельная учетная запись службы из стандартной учетной записи службы App Engine .Учетные данные возврата (ServiceAccountCredentials);оператор использует приведение для возврата ServiceAccountCredentials;это должно быть хорошо.

Строка: GoogleCredentials.getApplicationDefault (). CreateScoped (Collections.singleton (IAM_SCOPE) создает объект GoogleCredentials, для его работы не требуется файл учетной записи службы JSON.

...