diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index 3473042c0..f60d77493 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,4 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-java:latest
- digest: sha256:df8d7b2cc0dbc65871e7edd86601901a0612b272fa3f7f0eb590c5c53aa5f92e
+ digest: sha256:fc52b202aa298a50a12c64efd04fea3884d867947effe2fa85382a246c09e813
+# created: 2022-04-06T16:30:03.627422514Z
diff --git a/.github/auto-label.yaml b/.github/auto-label.yaml
new file mode 100644
index 000000000..4caef688b
--- /dev/null
+++ b/.github/auto-label.yaml
@@ -0,0 +1,15 @@
+# Copyright 2021 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+requestsize:
+ enabled: true
diff --git a/.github/workflows/downstream.yaml b/.github/workflows/downstream.yaml
index 78e1940fa..6985f0ed4 100644
--- a/.github/workflows/downstream.yaml
+++ b/.github/workflows/downstream.yaml
@@ -134,9 +134,11 @@ jobs:
- workflows
steps:
- uses: actions/checkout@v2
- - uses: actions/setup-java@v1
+ - uses: actions/setup-java@v3
with:
+ distribution: zulu
java-version: ${{matrix.java}}
- run: java -version
+ - run: sudo apt-get update -y
- run: sudo apt-get install libxml2-utils
- run: .kokoro/downstream-client-library-check.sh google-auth-library-bom ${{matrix.repo}}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4582e8ef6..069f22b80 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,18 @@
# Changelog
+## [1.7.0](https://github.com/googleapis/google-auth-library-java/compare/v1.6.0...v1.7.0) (2022-05-12)
+
+
+### Features
+
+* Add ability to provide PrivateKey as Pkcs8 encoded string [#883](https://github.com/googleapis/google-auth-library-java/issues/883) ([#889](https://github.com/googleapis/google-auth-library-java/issues/889)) ([e0d6996](https://github.com/googleapis/google-auth-library-java/commit/e0d6996ac0db1bf75d92e5aba3eaab512affafe4))
+* Add iam endpoint override to ImpersonatedCredentials ([#910](https://github.com/googleapis/google-auth-library-java/issues/910)) ([97bfc4c](https://github.com/googleapis/google-auth-library-java/commit/97bfc4c8ceb199e775784ac3ed4fa992d4d2dcbf))
+
+
+### Bug Fixes
+
+* update branding in ExternalAccountCredentials ([#893](https://github.com/googleapis/google-auth-library-java/issues/893)) ([0200dbb](https://github.com/googleapis/google-auth-library-java/commit/0200dbb05cff06a333879cf99bac64adaada3239))
+
## [1.6.0](https://github.com/googleapis/google-auth-library-java/compare/v1.5.3...v1.6.0) (2022-03-15)
diff --git a/appengine/pom.xml b/appengine/pom.xml
index e5154125e..b23af89fc 100644
--- a/appengine/pom.xml
+++ b/appengine/pom.xml
@@ -5,7 +5,7 @@
com.google.authgoogle-auth-library-parent
- 1.6.0
+ 1.7.0../pom.xml
diff --git a/bom/pom.xml b/bom/pom.xml
index fe9057003..f9f23bfcb 100644
--- a/bom/pom.xml
+++ b/bom/pom.xml
@@ -3,7 +3,7 @@
4.0.0com.google.authgoogle-auth-library-bom
- 1.6.0
+ 1.7.0pomGoogle Auth Library for Java BOM
@@ -72,7 +72,7 @@
org.sonatype.pluginsnexus-staging-maven-plugin
- 1.6.12
+ 1.6.13trueossrh
@@ -83,7 +83,7 @@
org.apache.maven.pluginsmaven-javadoc-plugin
- 3.3.2
+ 3.4.0true
@@ -91,7 +91,7 @@
org.apache.maven.pluginsmaven-site-plugin
- 3.11.0
+ 3.12.0true
diff --git a/credentials/pom.xml b/credentials/pom.xml
index e3a3de0b2..5fed3789b 100644
--- a/credentials/pom.xml
+++ b/credentials/pom.xml
@@ -4,7 +4,7 @@
com.google.authgoogle-auth-library-parent
- 1.6.0
+ 1.7.0../pom.xml
diff --git a/oauth2_http/java/com/google/auth/oauth2/ExternalAccountCredentials.java b/oauth2_http/java/com/google/auth/oauth2/ExternalAccountCredentials.java
index 547a04261..379e2a1cf 100644
--- a/oauth2_http/java/com/google/auth/oauth2/ExternalAccountCredentials.java
+++ b/oauth2_http/java/com/google/auth/oauth2/ExternalAccountCredentials.java
@@ -58,7 +58,8 @@
/**
* Base external account credentials class.
*
- *
Handles initializing external credentials, calls to STS, and service account impersonation.
+ *
Handles initializing external credentials, calls to the Security Token Service, and service
+ * account impersonation.
*/
public abstract class ExternalAccountCredentials extends GoogleCredentials
implements QuotaProjectIdProvider {
@@ -89,8 +90,9 @@ abstract static class CredentialSource {
@Nullable private final String clientId;
@Nullable private final String clientSecret;
- // This is used for Workforce Pools. It is passed to STS during token exchange in the
- // `options` param and will be embedded in the token by STS.
+ // This is used for Workforce Pools. It is passed to the Security Token Service during token
+ // exchange in the `options` param and will be embedded in the token by the Security Token
+ // Service.
@Nullable private final String workforcePoolUserProject;
protected transient HttpTransportFactory transportFactory;
@@ -104,18 +106,17 @@ abstract static class CredentialSource {
* workforce credentials.
*
* @param transportFactory HTTP transport factory, creates the transport used to get access tokens
- * @param audience the STS audience which is usually the fully specified resource name of the
- * workload/workforce pool provider
- * @param subjectTokenType the STS subject token type based on the OAuth 2.0 token exchange spec.
- * Indicates the type of the security token in the credential file
- * @param tokenUrl the STS token exchange endpoint
+ * @param audience the Security Token Service audience, which is usually the fully specified
+ * resource name of the workload/workforce pool provider
+ * @param subjectTokenType the Security Token Service subject token type based on the OAuth 2.0
+ * token exchange spec. Indicates the type of the security token in the credential file
+ * @param tokenUrl the Security Token Service token exchange endpoint
* @param tokenInfoUrl the endpoint used to retrieve account related information. Required for
* gCloud session account identification.
* @param credentialSource the external credential source
* @param serviceAccountImpersonationUrl the URL for the service account impersonation request.
- * This is only required for workload identity pools when APIs to be accessed have not
- * integrated with UberMint. If this is not available, the STS returned GCP access token is
- * directly used. May be null.
+ * This URL is required for some APIs. If this URL is not available, the access token from the
+ * Security Token Service is used directly. May be null.
* @param quotaProjectId the project used for quota and billing purposes. May be null.
* @param clientId client ID of the service account from the console. May be null.
* @param clientSecret client secret of the service account from the console. May be null.
@@ -264,6 +265,7 @@ private ImpersonatedCredentials initializeImpersonatedCredentials() {
.setTargetPrincipal(targetPrincipal)
.setScopes(new ArrayList<>(scopes))
.setLifetime(3600) // 1 hour in seconds
+ .setIamEndpointOverride(serviceAccountImpersonationUrl)
.build();
}
@@ -395,11 +397,11 @@ private static boolean isAwsCredential(Map credentialSource) {
}
/**
- * Exchanges the external credential for a GCP access token.
+ * Exchanges the external credential for a Google Cloud access token.
*
- * @param stsTokenExchangeRequest the STS token exchange request
- * @return the access token returned by STS
- * @throws OAuthException if the call to STS fails
+ * @param stsTokenExchangeRequest the Security Token Service token exchange request
+ * @return the access token returned by the Security Token Service
+ * @throws OAuthException if the call to the Security Token Service fails
*/
protected AccessToken exchangeExternalCredentialForAccessToken(
StsTokenExchangeRequest stsTokenExchangeRequest) throws IOException {
@@ -413,7 +415,8 @@ protected AccessToken exchangeExternalCredentialForAccessToken(
tokenUrl, stsTokenExchangeRequest, transportFactory.create().createRequestFactory());
// If this credential was initialized with a Workforce configuration then the
- // workforcePoolUserProject must passed to STS via the the internal options param.
+ // workforcePoolUserProject must be passed to the Security Token Service via the internal
+ // options param.
if (isWorkforcePoolConfiguration()) {
GenericJson options = new GenericJson();
options.setFactory(OAuth2Utils.JSON_FACTORY);
@@ -431,7 +434,7 @@ protected AccessToken exchangeExternalCredentialForAccessToken(
}
/**
- * Retrieves the external subject token to be exchanged for a GCP access token.
+ * Retrieves the external subject token to be exchanged for a Google Cloud access token.
*
*
Must be implemented by subclasses as the retrieval method is dependent on the credential
* source.
@@ -603,8 +606,8 @@ public Builder setHttpTransportFactory(HttpTransportFactory transportFactory) {
}
/**
- * Sets the STS audience which is usually the fully specified resource name of the
- * workload/workforce pool provider.
+ * Sets the Security Token Service audience, which is usually the fully specified resource name
+ * of the workload/workforce pool provider.
*/
public Builder setAudience(String audience) {
this.audience = audience;
@@ -612,15 +615,15 @@ public Builder setAudience(String audience) {
}
/**
- * Sets the STS subject token type based on the OAuth 2.0 token exchange spec. Indicates the
- * type of the security token in the credential file.
+ * Sets the Security Token Service subject token type based on the OAuth 2.0 token exchange
+ * spec. Indicates the type of the security token in the credential file.
*/
public Builder setSubjectTokenType(String subjectTokenType) {
this.subjectTokenType = subjectTokenType;
return this;
}
- /** Sets the STS token exchange endpoint. */
+ /** Sets the Security Token Service token exchange endpoint. */
public Builder setTokenUrl(String tokenUrl) {
this.tokenUrl = tokenUrl;
return this;
@@ -633,9 +636,9 @@ public Builder setCredentialSource(CredentialSource credentialSource) {
}
/**
- * Sets the optional URL used for service account impersonation. This is only required when APIs
- * to be accessed have not integrated with UberMint. If this is not available, the STS returned
- * GCP access token is directly used.
+ * Sets the optional URL used for service account impersonation, which is required for some
+ * APIs. If this URL is not available, the access token from the Security Token Service is used
+ * directly.
*/
public Builder setServiceAccountImpersonationUrl(String serviceAccountImpersonationUrl) {
this.serviceAccountImpersonationUrl = serviceAccountImpersonationUrl;
diff --git a/oauth2_http/java/com/google/auth/oauth2/ImpersonatedCredentials.java b/oauth2_http/java/com/google/auth/oauth2/ImpersonatedCredentials.java
index 962c105cd..9694619df 100644
--- a/oauth2_http/java/com/google/auth/oauth2/ImpersonatedCredentials.java
+++ b/oauth2_http/java/com/google/auth/oauth2/ImpersonatedCredentials.java
@@ -105,6 +105,7 @@ public class ImpersonatedCredentials extends GoogleCredentials
private List scopes;
private int lifetime;
private String quotaProjectId;
+ private String iamEndpointOverride;
private final String transportFactoryClassName;
private transient HttpTransportFactory transportFactory;
@@ -192,6 +193,54 @@ public static ImpersonatedCredentials create(
.build();
}
+ /**
+ * @param sourceCredentials the source credential used to acquire the impersonated credentials. It
+ * should be either a user account credential or a service account credential.
+ * @param targetPrincipal the service account to impersonate
+ * @param delegates the chained list of delegates required to grant the final access_token. If
+ * set, the sequence of identities must have "Service Account Token Creator" capability
+ * granted to the preceding identity. For example, if set to [serviceAccountB,
+ * serviceAccountC], the sourceCredential must have the Token Creator role on serviceAccountB.
+ * serviceAccountB must have the Token Creator on serviceAccountC. Finally, C must have Token
+ * Creator on target_principal. If unset, sourceCredential must have that role on
+ * targetPrincipal.
+ * @param scopes scopes to request during the authorization grant
+ * @param lifetime number of seconds the delegated credential should be valid. By default this
+ * value should be at most 3600. However, you can follow these
+ * instructions to set up the service account and extend the maximum lifetime to 43200 (12
+ * hours). If the given lifetime is 0, default value 3600 will be used instead when creating
+ * the credentials.
+ * @param transportFactory HTTP transport factory that creates the transport used to get access
+ * tokens.
+ * @param quotaProjectId the project used for quota and billing purposes. Should be null unless
+ * the caller wants to use a project different from the one that owns the impersonated
+ * credential for billing/quota purposes.
+ * @param iamEndpointOverride The full IAM endpoint override with the target_principal embedded.
+ * This is useful when supporting impersonation with regional endpoints.
+ * @return new credentials
+ */
+ public static ImpersonatedCredentials create(
+ GoogleCredentials sourceCredentials,
+ String targetPrincipal,
+ List delegates,
+ List scopes,
+ int lifetime,
+ HttpTransportFactory transportFactory,
+ String quotaProjectId,
+ String iamEndpointOverride) {
+ return ImpersonatedCredentials.newBuilder()
+ .setSourceCredentials(sourceCredentials)
+ .setTargetPrincipal(targetPrincipal)
+ .setDelegates(delegates)
+ .setScopes(scopes)
+ .setLifetime(lifetime)
+ .setHttpTransportFactory(transportFactory)
+ .setQuotaProjectId(quotaProjectId)
+ .setIamEndpointOverride(iamEndpointOverride)
+ .build();
+ }
+
/**
* @param sourceCredentials the source credential used to acquire the impersonated credentials. It
* should be either a user account credential or a service account credential.
@@ -257,6 +306,11 @@ public String getQuotaProjectId() {
return this.quotaProjectId;
}
+ @VisibleForTesting
+ String getIamEndpointOverride() {
+ return this.iamEndpointOverride;
+ }
+
@VisibleForTesting
List getDelegates() {
return delegates;
@@ -320,9 +374,9 @@ static ImpersonatedCredentials fromJson(
String sourceCredentialsType;
String quotaProjectId;
String targetPrincipal;
+ String serviceAccountImpersonationUrl;
try {
- String serviceAccountImpersonationUrl =
- (String) json.get("service_account_impersonation_url");
+ serviceAccountImpersonationUrl = (String) json.get("service_account_impersonation_url");
if (json.containsKey("delegates")) {
delegates = (List) json.get("delegates");
}
@@ -354,6 +408,7 @@ static ImpersonatedCredentials fromJson(
.setLifetime(DEFAULT_LIFETIME_IN_SECONDS)
.setHttpTransportFactory(transportFactory)
.setQuotaProjectId(quotaProjectId)
+ .setIamEndpointOverride(serviceAccountImpersonationUrl)
.build();
}
@@ -370,6 +425,7 @@ public GoogleCredentials createScoped(Collection scopes) {
.setDelegates(this.delegates)
.setHttpTransportFactory(this.transportFactory)
.setQuotaProjectId(this.quotaProjectId)
+ .setIamEndpointOverride(this.iamEndpointOverride)
.build();
}
@@ -393,6 +449,7 @@ private ImpersonatedCredentials(Builder builder) {
builder.getHttpTransportFactory(),
getFromServiceLoader(HttpTransportFactory.class, OAuth2Utils.HTTP_TRANSPORT_FACTORY));
this.quotaProjectId = builder.quotaProjectId;
+ this.iamEndpointOverride = builder.iamEndpointOverride;
this.transportFactoryClassName = this.transportFactory.getClass().getName();
if (this.delegates == null) {
this.delegates = new ArrayList();
@@ -424,7 +481,10 @@ public AccessToken refreshAccessToken() throws IOException {
HttpCredentialsAdapter adapter = new HttpCredentialsAdapter(sourceCredentials);
HttpRequestFactory requestFactory = httpTransport.createRequestFactory();
- String endpointUrl = String.format(IAM_ACCESS_TOKEN_ENDPOINT, this.targetPrincipal);
+ String endpointUrl =
+ this.iamEndpointOverride != null
+ ? this.iamEndpointOverride
+ : String.format(IAM_ACCESS_TOKEN_ENDPOINT, this.targetPrincipal);
GenericUrl url = new GenericUrl(endpointUrl);
Map body =
@@ -489,7 +549,13 @@ public IdToken idTokenWithAudience(String targetAudience, List(), credentials.getScopes());
@@ -201,6 +206,7 @@ void fromJson_userAsSource_WithoutQuotaProjectId() throws IOException {
ImpersonatedCredentials credentials =
ImpersonatedCredentials.fromJson(json, mockTransportFactory);
assertEquals(IMPERSONATED_CLIENT_EMAIL, credentials.getAccount());
+ assertEquals(IMPERSONATION_URL, credentials.getIamEndpointOverride());
assertNull(credentials.getQuotaProjectId());
assertEquals(DELEGATES, credentials.getDelegates());
assertEquals(new ArrayList(), credentials.getScopes());
@@ -223,6 +229,7 @@ void fromJson_userAsSource_MissingDelegatesField() throws IOException {
ImpersonatedCredentials credentials =
ImpersonatedCredentials.fromJson(json, mockTransportFactory);
assertEquals(IMPERSONATED_CLIENT_EMAIL, credentials.getAccount());
+ assertEquals(IMPERSONATION_URL, credentials.getIamEndpointOverride());
assertNull(credentials.getQuotaProjectId());
assertEquals(new ArrayList(), credentials.getDelegates());
assertEquals(new ArrayList(), credentials.getScopes());
@@ -238,6 +245,7 @@ void fromJson_ServiceAccountAsSource() throws IOException {
ImpersonatedCredentials credentials =
ImpersonatedCredentials.fromJson(json, mockTransportFactory);
assertEquals(IMPERSONATED_CLIENT_EMAIL, credentials.getAccount());
+ assertEquals(IMPERSONATION_URL, credentials.getIamEndpointOverride());
assertEquals(QUOTA_PROJECT_ID, credentials.getQuotaProjectId());
assertEquals(DELEGATES, credentials.getDelegates());
assertEquals(new ArrayList(), credentials.getScopes());
@@ -329,6 +337,25 @@ void createScopedWithImmutableScopes() {
assertEquals(Arrays.asList("scope1", "scope2"), scoped_credentials.getScopes());
}
+ @Test
+ void createScopedWithIamEndpointOverride() {
+ ImpersonatedCredentials targetCredentials =
+ ImpersonatedCredentials.create(
+ sourceCredentials,
+ IMPERSONATED_CLIENT_EMAIL,
+ DELEGATES,
+ IMMUTABLE_SCOPES_LIST,
+ VALID_LIFETIME,
+ mockTransportFactory,
+ QUOTA_PROJECT_ID,
+ IMPERSONATION_URL);
+
+ ImpersonatedCredentials scoped_credentials =
+ (ImpersonatedCredentials) targetCredentials.createScoped(IMMUTABLE_SCOPES_SET);
+ assertEquals(
+ targetCredentials.getIamEndpointOverride(), scoped_credentials.getIamEndpointOverride());
+ }
+
@Test
void refreshAccessToken_unauthorized() throws IOException {
@@ -449,6 +476,29 @@ void refreshAccessToken_success() throws IOException, IllegalStateException {
mockTransportFactory);
assertEquals(ACCESS_TOKEN, targetCredentials.refreshAccessToken().getTokenValue());
+ assertEquals(DEFAULT_IMPERSONATION_URL, mockTransportFactory.transport.getRequest().getUrl());
+ }
+
+ @Test
+ void refreshAccessToken_endpointOverride() throws IOException, IllegalStateException {
+ mockTransportFactory.transport.setTargetPrincipal(IMPERSONATED_CLIENT_EMAIL);
+ mockTransportFactory.transport.setAccessToken(ACCESS_TOKEN);
+ mockTransportFactory.transport.setExpireTime(getDefaultExpireTime());
+ mockTransportFactory.transport.setAccessTokenEndpoint(IMPERSONATION_URL);
+
+ ImpersonatedCredentials targetCredentials =
+ ImpersonatedCredentials.create(
+ sourceCredentials,
+ IMPERSONATED_CLIENT_EMAIL,
+ null,
+ IMMUTABLE_SCOPES_LIST,
+ VALID_LIFETIME,
+ mockTransportFactory,
+ QUOTA_PROJECT_ID,
+ IMPERSONATION_URL);
+
+ assertEquals(ACCESS_TOKEN, targetCredentials.refreshAccessToken().getTokenValue());
+ assertEquals(IMPERSONATION_URL, mockTransportFactory.transport.getRequest().getUrl());
}
@Test
diff --git a/oauth2_http/javatests/com/google/auth/oauth2/MockIAMCredentialsServiceTransport.java b/oauth2_http/javatests/com/google/auth/oauth2/MockIAMCredentialsServiceTransport.java
index dcf1ef950..d3da05aa2 100644
--- a/oauth2_http/javatests/com/google/auth/oauth2/MockIAMCredentialsServiceTransport.java
+++ b/oauth2_http/javatests/com/google/auth/oauth2/MockIAMCredentialsServiceTransport.java
@@ -46,7 +46,7 @@
/** Transport that simulates the IAMCredentials server for access tokens. */
public class MockIAMCredentialsServiceTransport extends MockHttpTransport {
- private static final String IAM_ACCESS_TOKEN_ENDPOINT =
+ private static final String DEFAULT_IAM_ACCESS_TOKEN_ENDPOINT =
"https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/%s:generateAccessToken";
private static final String IAM_ID_TOKEN_ENDPOINT =
"https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/%s:generateIdToken";
@@ -58,6 +58,7 @@ public class MockIAMCredentialsServiceTransport extends MockHttpTransport {
private byte[] signedBlob;
private int responseCode = HttpStatusCodes.STATUS_CODE_OK;
private String errorMessage;
+ private String iamAccessTokenEndpoint;
private String accessToken;
private String expireTime;
@@ -101,6 +102,10 @@ public void setIdToken(String idToken) {
this.idToken = idToken;
}
+ public void setAccessTokenEndpoint(String accessTokenEndpoint) {
+ this.iamAccessTokenEndpoint = accessTokenEndpoint;
+ }
+
public MockLowLevelHttpRequest getRequest() {
return request;
}
@@ -109,7 +114,9 @@ public MockLowLevelHttpRequest getRequest() {
public LowLevelHttpRequest buildRequest(String method, String url) throws IOException {
String iamAccesssTokenformattedUrl =
- String.format(IAM_ACCESS_TOKEN_ENDPOINT, this.targetPrincipal);
+ iamAccessTokenEndpoint != null
+ ? iamAccessTokenEndpoint
+ : String.format(DEFAULT_IAM_ACCESS_TOKEN_ENDPOINT, this.targetPrincipal);
String iamSignBlobformattedUrl = String.format(IAM_SIGN_ENDPOINT, this.targetPrincipal);
String iamIdTokenformattedUrl = String.format(IAM_ID_TOKEN_ENDPOINT, this.targetPrincipal);
if (url.equals(iamAccesssTokenformattedUrl)) {
diff --git a/oauth2_http/pom.xml b/oauth2_http/pom.xml
index d9ab07527..156c3c5d2 100644
--- a/oauth2_http/pom.xml
+++ b/oauth2_http/pom.xml
@@ -5,7 +5,7 @@
com.google.authgoogle-auth-library-parent
- 1.6.0
+ 1.7.0../pom.xml
@@ -61,7 +61,7 @@
org.apache.maven.pluginsmaven-failsafe-plugin
- 3.0.0-M5
+ 3.0.0-M61200sponge_log
diff --git a/pom.xml b/pom.xml
index 02bed18df..190f87cb4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0com.google.authgoogle-auth-library-parent
- 1.6.0
+ 1.7.0pomGoogle Auth Library for JavaClient libraries providing authentication and
@@ -59,10 +59,10 @@
UTF-8
- 1.41.4
+ 1.41.85.8.231.0.1-android
- 2.0.4
+ 2.0.53.0.2false1.8.2
@@ -142,7 +142,7 @@
org.sonatype.pluginsnexus-staging-maven-plugin
- 1.6.12
+ 1.6.13trueossrh
@@ -166,7 +166,7 @@
org.apache.maven.pluginsmaven-javadoc-plugin
- 3.3.2
+ 3.4.07
@@ -194,7 +194,7 @@
org.apache.maven.pluginsmaven-surefire-plugin
- 3.0.0-M5
+ 3.0.0-M6sponge_log
@@ -271,7 +271,7 @@
org.apache.maven.pluginsmaven-site-plugin
- 3.11.0
+ 3.12.0true
@@ -279,7 +279,7 @@
org.jacocojacoco-maven-plugin
- 0.8.7
+ 0.8.8
@@ -318,7 +318,7 @@
org.apache.maven.pluginsmaven-javadoc-plugin
- 3.3.2
+ 3.4.0html
@@ -385,7 +385,7 @@
org.apache.maven.pluginsmaven-javadoc-plugin
- 3.3.2
+ 3.4.0attach-javadocs
@@ -485,7 +485,7 @@
org.apache.maven.pluginsmaven-javadoc-plugin
- 3.3.2
+ 3.4.0com.microsoft.doclet.DocFxDocletfalse
diff --git a/versions.txt b/versions.txt
index 93cdd0df7..3b95a5022 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,9 +1,9 @@
# Format:
# module:released-version:current-version
-google-auth-library:1.6.0:1.6.0
-google-auth-library-bom:1.6.0:1.6.0
-google-auth-library-parent:1.6.0:1.6.0
-google-auth-library-appengine:1.6.0:1.6.0
-google-auth-library-credentials:1.6.0:1.6.0
-google-auth-library-oauth2-http:1.6.0:1.6.0
+google-auth-library:1.7.0:1.7.0
+google-auth-library-bom:1.7.0:1.7.0
+google-auth-library-parent:1.7.0:1.7.0
+google-auth-library-appengine:1.7.0:1.7.0
+google-auth-library-credentials:1.7.0:1.7.0
+google-auth-library-oauth2-http:1.7.0:1.7.0