Сессия истекла в S3ObjectManager + AppSync + Okta - PullRequest
0 голосов
/ 01 февраля 2019

Я использую Okta для входа в систему, после успешного входа в систему мы получим awsAccessKey, awsSecretKey, sessionToken.И затем ниже приведены шаги для инициализации AWSAppSyncClient

// Creating the SessionCredentials and preparing the AmazonS3Client
BasicSessionCredentials sessionCredentials = new BasicSessionCredentials(data.getS3Credentials().accessKeyId(), data.getS3Credentials().secretAccessKey(), data.getS3Credentials().sessionToken());
AmazonS3Client amazonS3Client = new AmazonS3Client(sessionCredentials); 
amazonS3Client.setRegion(Region.getRegion(Regions.US_WEST_2));

OidcAuthProvider oidcAuthProvider = oktaAppAuth::getAccessToken;
    AWSAppSyncClient.Builder builder = AWSAppSyncClient.builder()
            .context(context)
            .awsConfiguration(new AWSConfiguration(context))
            .oidcAuthProvider(oidcAuthProvider);
    // Adding the S3ObjectManager Implementation to the AppSyncClient
    builder.s3ObjectManager(new S3ObjectManagerImplementation(amazonS3Client));
    AWSAppSyncClient mAWSAppSyncClient = builder.build();

Теперь я могу запустить мутации, но при загрузке S3 я получаю следующую ошибку.Каким-то образом я выяснил, что S3 кэширует старый токен даже после повторного входа в систему и даже после перезапуска приложения.

Мутации AppSync работают нормально

Ошибка:

Received error response: com.amazonaws.services.s3.model.AmazonS3Exception: The provided token has expired. (Service: null; Status Code: 400; Error Code: ExpiredToken;

...