Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awsdocs
GitHub Repository: awsdocs/amazon-s3-developer-guide
Path: blob/master/code_examples/java_examples/S3Examples/MakingRequestsWithFederatedTempCredentials.java
4084 views
1
// Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
// SPDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-s3-developer-guide/blob/master/LICENSE-SAMPLECODE.)
3
4
import java.io.IOException;
5
6
import com.amazonaws.AmazonServiceException;
7
import com.amazonaws.SdkClientException;
8
import com.amazonaws.auth.AWSStaticCredentialsProvider;
9
import com.amazonaws.auth.BasicSessionCredentials;
10
import com.amazonaws.auth.policy.Policy;
11
import com.amazonaws.auth.policy.Resource;
12
import com.amazonaws.auth.policy.Statement;
13
import com.amazonaws.auth.policy.Statement.Effect;
14
import com.amazonaws.auth.policy.actions.S3Actions;
15
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
16
import com.amazonaws.services.s3.AmazonS3;
17
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
18
import com.amazonaws.services.securitytoken.AWSSecurityTokenService;
19
import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClientBuilder;
20
import com.amazonaws.services.securitytoken.model.Credentials;
21
import com.amazonaws.services.securitytoken.model.GetFederationTokenRequest;
22
import com.amazonaws.services.securitytoken.model.GetFederationTokenResult;
23
import com.amazonaws.services.s3.model.ObjectListing;
24
25
public class MakingRequestsWithFederatedTempCredentials {
26
27
public static void main(String[] args) throws IOException {
28
String clientRegion = "*** Client region ***";
29
String bucketName = "*** Specify bucket name ***";
30
String federatedUser = "*** Federated user name ***";
31
String resourceARN = "arn:aws:s3:::" + bucketName;
32
33
try {
34
AWSSecurityTokenService stsClient = AWSSecurityTokenServiceClientBuilder
35
.standard()
36
.withCredentials(new ProfileCredentialsProvider())
37
.withRegion(clientRegion)
38
.build();
39
40
GetFederationTokenRequest getFederationTokenRequest = new GetFederationTokenRequest();
41
getFederationTokenRequest.setDurationSeconds(7200);
42
getFederationTokenRequest.setName(federatedUser);
43
44
// Define the policy and add it to the request.
45
Policy policy = new Policy();
46
policy.withStatements(new Statement(Effect.Allow)
47
.withActions(S3Actions.ListObjects)
48
.withResources(new Resource(resourceARN)));
49
getFederationTokenRequest.setPolicy(policy.toJson());
50
51
// Get the temporary security credentials.
52
GetFederationTokenResult federationTokenResult = stsClient.getFederationToken(getFederationTokenRequest);
53
Credentials sessionCredentials = federationTokenResult.getCredentials();
54
55
// Package the session credentials as a BasicSessionCredentials
56
// object for an Amazon S3 client object to use.
57
BasicSessionCredentials basicSessionCredentials = new BasicSessionCredentials(
58
sessionCredentials.getAccessKeyId(),
59
sessionCredentials.getSecretAccessKey(),
60
sessionCredentials.getSessionToken());
61
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
62
.withCredentials(new AWSStaticCredentialsProvider(basicSessionCredentials))
63
.withRegion(clientRegion)
64
.build();
65
66
// To verify that the client works, send a listObjects request using
67
// the temporary security credentials.
68
ObjectListing objects = s3Client.listObjects(bucketName);
69
System.out.println("No. of Objects = " + objects.getObjectSummaries().size());
70
}
71
catch(AmazonServiceException e) {
72
// The call was transmitted successfully, but Amazon S3 couldn't process
73
// it, so it returned an error response.
74
e.printStackTrace();
75
}
76
catch(SdkClientException e) {
77
// Amazon S3 couldn't be contacted for a response, or the client
78
// couldn't parse the response from Amazon S3.
79
e.printStackTrace();
80
}
81
}
82
}
83