Skip to content

Commit a770941

Browse files
committed
fetch token when a credential was given before retrieving vended creds
1 parent 7ce08bd commit a770941

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

aws/src/main/java/org/apache/iceberg/aws/s3/VendedCredentialsProvider.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,13 @@
2727
import org.apache.iceberg.rest.ErrorHandlers;
2828
import org.apache.iceberg.rest.HTTPClient;
2929
import org.apache.iceberg.rest.RESTClient;
30+
import org.apache.iceberg.rest.RESTUtil;
31+
import org.apache.iceberg.rest.ResourcePaths;
3032
import org.apache.iceberg.rest.auth.OAuth2Properties;
3133
import org.apache.iceberg.rest.auth.OAuth2Util;
3234
import org.apache.iceberg.rest.credentials.Credential;
3335
import org.apache.iceberg.rest.responses.LoadCredentialsResponse;
36+
import org.apache.iceberg.rest.responses.OAuthTokenResponse;
3437
import software.amazon.awssdk.auth.credentials.AwsCredentials;
3538
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
3639
import software.amazon.awssdk.auth.credentials.AwsSessionCredentials;
@@ -83,12 +86,27 @@ private RESTClient httpClient() {
8386
}
8487

8588
private LoadCredentialsResponse fetchCredentials() {
89+
String initToken = properties.get(OAuth2Properties.TOKEN);
90+
String credential = properties.get(OAuth2Properties.CREDENTIAL);
91+
Map<String, String> authHeaders = RESTUtil.merge(properties, OAuth2Util.authHeaders(initToken));
92+
if (credential != null && !credential.isEmpty()) {
93+
OAuthTokenResponse authResponse =
94+
OAuth2Util.fetchToken(
95+
httpClient(),
96+
authHeaders,
97+
credential,
98+
properties.getOrDefault(OAuth2Properties.SCOPE, OAuth2Properties.CATALOG_SCOPE),
99+
properties.getOrDefault(OAuth2Properties.OAUTH2_SERVER_URI, ResourcePaths.tokens()),
100+
OAuth2Util.buildOptionalParam(properties));
101+
authHeaders = RESTUtil.merge(authHeaders, OAuth2Util.authHeaders(authResponse.token()));
102+
}
103+
86104
return httpClient()
87105
.get(
88106
properties.get(URI),
89107
null,
90108
LoadCredentialsResponse.class,
91-
OAuth2Util.authHeaders(properties.get(OAuth2Properties.TOKEN)),
109+
authHeaders,
92110
ErrorHandlers.defaultErrorHandler());
93111
}
94112

0 commit comments

Comments
 (0)