Skip to content

Commit 659c510

Browse files
committed
chore: Update ComputeEngineCredentials to retrieve the default service account when retrieving token
1 parent b15da71 commit 659c510

File tree

3 files changed

+11
-0
lines changed

3 files changed

+11
-0
lines changed

oauth2_http/java/com/google/auth/oauth2/ComputeEngineCredentials.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,12 @@ private String getUniverseDomainFromMetadata() throws IOException {
354354
/** Refresh the access token by getting it from the GCE metadata server */
355355
@Override
356356
public AccessToken refreshAccessToken() throws IOException {
357+
// Retrieve the default service account email if MDS wasn't available during the constructor
358+
if (serviceAccountEmail == null) {
359+
serviceAccountEmail = getDefaultServiceAccount();
360+
principal = serviceAccountEmail;
361+
}
362+
357363
HttpResponse response =
358364
getMetadataResponse(createTokenUrlWithScopes(), RequestType.ACCESS_TOKEN_REQUEST, true);
359365
int statusCode = response.getStatusCode();

oauth2_http/javatests/com/google/auth/oauth2/ComputeEngineCredentialsTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,7 @@ public void create_scoped_correctMargins() {
387387
@Test
388388
public void getRequestMetadata_hasAccessToken() throws IOException {
389389
MockMetadataServerTransportFactory transportFactory = new MockMetadataServerTransportFactory();
390+
transportFactory.transport.setServiceAccountEmail("[email protected]");
390391
ComputeEngineCredentials credentials =
391392
ComputeEngineCredentials.newBuilder().setHttpTransportFactory(transportFactory).build();
392393
Map<String, List<String>> metadata = credentials.getRequestMetadata(CALL_URI);
@@ -403,6 +404,7 @@ public void getRequestMetadata_hasAccessToken() throws IOException {
403404
public void getRequestMetadata_shouldInvalidateAccessTokenWhenScoped_newAccessTokenFromRefresh()
404405
throws IOException {
405406
MockMetadataServerTransportFactory transportFactory = new MockMetadataServerTransportFactory();
407+
transportFactory.transport.setServiceAccountEmail("[email protected]");
406408
ComputeEngineCredentials credentials =
407409
ComputeEngineCredentials.newBuilder().setHttpTransportFactory(transportFactory).build();
408410
Map<String, List<String>> metadata = credentials.getRequestMetadata(CALL_URI);
@@ -423,6 +425,7 @@ public void getRequestMetadata_shouldInvalidateAccessTokenWhenScoped_newAccessTo
423425
public void getRequestMetadata_missingServiceAccount_throws() {
424426
MockMetadataServerTransportFactory transportFactory = new MockMetadataServerTransportFactory();
425427
transportFactory.transport.setStatusCode(HttpStatusCodes.STATUS_CODE_NOT_FOUND);
428+
transportFactory.transport.setServiceAccountEmail("[email protected]");
426429
ComputeEngineCredentials credentials =
427430
ComputeEngineCredentials.newBuilder().setHttpTransportFactory(transportFactory).build();
428431
try {
@@ -440,6 +443,7 @@ public void getRequestMetadata_missingServiceAccount_throws() {
440443
public void getRequestMetadata_serverError_throws() {
441444
MockMetadataServerTransportFactory transportFactory = new MockMetadataServerTransportFactory();
442445
transportFactory.transport.setStatusCode(HttpStatusCodes.STATUS_CODE_SERVER_ERROR);
446+
transportFactory.transport.setServiceAccountEmail("[email protected]");
443447
ComputeEngineCredentials credentials =
444448
ComputeEngineCredentials.newBuilder().setHttpTransportFactory(transportFactory).build();
445449
try {

oauth2_http/javatests/com/google/auth/oauth2/DefaultCredentialsProviderTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,7 @@ public void getDefaultCredentials_appEngineSkipWorks_retrievesCloudShellCredenti
305305
@Test
306306
public void getDefaultCredentials_compute_providesToken() throws IOException {
307307
MockMetadataServerTransportFactory transportFactory = new MockMetadataServerTransportFactory();
308+
transportFactory.transport.setServiceAccountEmail("[email protected]");
308309
TestDefaultCredentialsProvider testProvider = new TestDefaultCredentialsProvider();
309310

310311
GoogleCredentials defaultCredentials = testProvider.getDefaultCredentials(transportFactory);

0 commit comments

Comments
 (0)