yandex-cloud / ydb-java-sdk

Yandex Database Java SDK
Other
32 stars 9 forks source link

Получение и обновление токенов из метаданных VM #5

Closed mad closed 4 years ago

mad commented 4 years ago

Что-то наподобие IamAuthContext

oleshiy commented 4 years ago

Полезная функциональность, сделаем

vasiliy-briginets commented 4 years ago

Павел, спасибо за issue! Мы это сделали)

На самом деле мы полностью переделали модуль auth-iam - скрестили его с yandex-cloud/java-sdk, чтобы можно было использовать все доступные в облаке способы аутентификации.
Теперь можно заиспользовать любой CredentialProvider, просто передав его при настройке транспорта. Например, провайдер по работе с метаданными:

  CredentialProvider provider =  Auth.computeEngineBuilder()
          .withDefaultBackgroundUpdater()
          .build();
  GrpcTransport transport = GrpcTransport.forEndpoint("some-ydb-endpoint", "my_db")
          .withAuthProvider(CloudAuthProvider.newAuthProvider(provider))
          .build();

А вот как будет выглядеть предыдущий вариант (с апи-ключами):

CredentialProvider provider = ApiKeyCredentialProvider.builder()
      .fromFile(/path/to/json/file"")
      .withDefaultBackgroundUpdater()
      .build();

  GrpcTransport transport = GrpcTransport.forEndpoint("some-ydb-endpoint", "my_db")
       .withAuthProvider(CloudAuthProvider.newAuthProvider(provider))
       .build();

Чуть побольше примеров работы с CredentialProvider можно найти здесь - https://github.com/yandex-cloud/java-sdk/blob/master/java-sdk-examples/src/main/java/yandex.cloud.sdk/examples/auth/AuthExample.java