BasicSessionCredentials credentials = credProvider.getCredentials(account,roleName); String accessKey = credentials.getAWSAccessKeyId(); String secretKey = credentials.getAWSSecretKey(); String sessionToken = credentials.getSessionToken();
@Override public Credentials get() { String identity = getIdentity() != null ? getIdentity().trim() : null; String credential = getCredential() != null ? getCredential().trim() : null; if (identity == null || identity.isEmpty() || credential == null || credential.isEmpty()) { DefaultAWSCredentialsProviderChain chain = new DefaultAWSCredentialsProviderChain(); AWSCredentials cred = chain.getCredentials(); if (cred instanceof BasicSessionCredentials) { BasicSessionCredentials sesCred = (BasicSessionCredentials)cred; return new SessionCredentials.Builder() .identity(sesCred.getAWSAccessKeyId()) .credential(sesCred.getAWSSecretKey()) .sessionToken(sesCred.getSessionToken()) .build(); } else { return new Credentials.Builder<>() .identity(cred.getAWSAccessKeyId()) .credential(cred.getAWSSecretKey()) .build(); } } return super.get(); } }
@SuppressWarnings("unchecked") @Override public PutObjectResult answer(InvocationOnMock invocation) throws Throwable { AmazonS3Client amazonS3Client = invocation.getArgument(1); AWSCredentialsProviderChain awsCredentialsProviderChain = (AWSCredentialsProviderChain) ReflectionTestUtils.getField(amazonS3Client, "awsCredentialsProvider"); List<AWSCredentialsProvider> credentialsProviders = (List<AWSCredentialsProvider>) ReflectionTestUtils.getField(awsCredentialsProviderChain, "credentialsProviders"); assertEquals(2, credentialsProviders.size()); // refresh() does nothing, but gives code coverage credentialsProviders.get(0).refresh(); /* * We can't inspect the field directly since the class definition is private. * Instead we call the getCredentials() and verify that it returns the credentials staged as part of this test. */ AWSCredentials credentials = awsCredentialsProviderChain.getCredentials(); assertEquals(BasicSessionCredentials.class, credentials.getClass()); BasicSessionCredentials basicSessionCredentials = (BasicSessionCredentials) credentials; assertEquals(awsAccessKey, basicSessionCredentials.getAWSAccessKeyId()); assertEquals(awsSecretKey, basicSessionCredentials.getAWSSecretKey()); assertEquals(awsSessionToken, basicSessionCredentials.getSessionToken()); return new PutObjectResult(); } });
@Test public void useSession() { BasicSessionCredentials sessionCredentials = getSessionCredentials(); ConfigSource config = this.config.deepCopy() .set("auth_method", "session") .set("access_key_id", sessionCredentials.getAWSAccessKeyId()) .set("secret_access_key", sessionCredentials.getAWSSecretKey()) .set("session_token", sessionCredentials.getSessionToken()); doTest(config); }