Skip to content
This repository was archived by the owner on May 14, 2026. It is now read-only.

Commit 5c75993

Browse files
feat: enable self signed jwt for gapic clients
1 parent ebe1aef commit 5c75993

14 files changed

Lines changed: 104 additions & 40 deletions

File tree

src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ public abstract class AbstractServiceStubSettingsClassComposer implements ClassC
139139

140140
protected static final TypeStore FIXED_TYPESTORE = createStaticTypes();
141141

142-
private static final VariableExpr DEFAULT_SERVICE_SCOPES_VAR_EXPR =
142+
protected static final VariableExpr DEFAULT_SERVICE_SCOPES_VAR_EXPR =
143143
createDefaultServiceScopesVarExpr();
144144
private static final VariableExpr NESTED_UNARY_METHOD_SETTINGS_BUILDERS_VAR_EXPR =
145145
createNestedUnaryMethodSettingsBuildersVarExpr();
@@ -197,6 +197,33 @@ public GapicClass generate(GapicContext context, Service service) {
197197
return GapicClass.create(GapicClass.Kind.STUB, classDef);
198198
}
199199

200+
protected MethodDefinition createDefaultCredentialsProviderBuilderMethod() {
201+
TypeNode returnType =
202+
TypeNode.withReference(
203+
ConcreteReference.withClazz(GoogleCredentialsProvider.Builder.class));
204+
MethodInvocationExpr credsProviderBuilderExpr =
205+
MethodInvocationExpr.builder()
206+
.setStaticReferenceType(FIXED_TYPESTORE.get("GoogleCredentialsProvider"))
207+
.setMethodName("newBuilder")
208+
.build();
209+
credsProviderBuilderExpr =
210+
MethodInvocationExpr.builder()
211+
.setExprReferenceExpr(credsProviderBuilderExpr)
212+
.setMethodName("setScopesToApply")
213+
.setArguments(DEFAULT_SERVICE_SCOPES_VAR_EXPR)
214+
.setReturnType(returnType)
215+
.build();
216+
return MethodDefinition.builder()
217+
.setHeaderCommentStatements(
218+
SettingsCommentComposer.DEFAULT_CREDENTIALS_PROVIDER_BUILDER_METHOD_COMMENT)
219+
.setScope(ScopeNode.PUBLIC)
220+
.setIsStatic(true)
221+
.setReturnType(returnType)
222+
.setName("defaultCredentialsProviderBuilder")
223+
.setReturnExpr(credsProviderBuilderExpr)
224+
.build();
225+
}
226+
200227
protected abstract MethodDefinition createDefaultTransportTransportProviderBuilderMethod();
201228

202229
protected abstract MethodDefinition createDefaultApiClientHeaderProviderBuilderMethod(
@@ -992,33 +1019,7 @@ private List<MethodDefinition> createDefaultHelperAndGetterMethods(
9921019
.setReturnExpr(DEFAULT_SERVICE_SCOPES_VAR_EXPR)
9931020
.build());
9941021

995-
// Create the defaultCredentialsProviderBuilder method.
996-
returnType =
997-
TypeNode.withReference(
998-
ConcreteReference.withClazz(GoogleCredentialsProvider.Builder.class));
999-
MethodInvocationExpr credsProviderBuilderExpr =
1000-
MethodInvocationExpr.builder()
1001-
.setStaticReferenceType(FIXED_TYPESTORE.get("GoogleCredentialsProvider"))
1002-
.setMethodName("newBuilder")
1003-
.build();
1004-
credsProviderBuilderExpr =
1005-
MethodInvocationExpr.builder()
1006-
.setExprReferenceExpr(credsProviderBuilderExpr)
1007-
.setMethodName("setScopesToApply")
1008-
.setArguments(DEFAULT_SERVICE_SCOPES_VAR_EXPR)
1009-
.setReturnType(returnType)
1010-
.build();
1011-
javaMethods.add(
1012-
MethodDefinition.builder()
1013-
.setHeaderCommentStatements(
1014-
SettingsCommentComposer.DEFAULT_CREDENTIALS_PROVIDER_BUILDER_METHOD_COMMENT)
1015-
.setScope(ScopeNode.PUBLIC)
1016-
.setIsStatic(true)
1017-
.setReturnType(returnType)
1018-
.setName("defaultCredentialsProviderBuilder")
1019-
.setReturnExpr(credsProviderBuilderExpr)
1020-
.build());
1021-
1022+
javaMethods.add(createDefaultCredentialsProviderBuilderMethod());
10221023
javaMethods.add(createDefaultTransportTransportProviderBuilderMethod());
10231024
javaMethods.add(createDefaultTransportChannelProviderMethod());
10241025
javaMethods.add(createDefaultApiClientHeaderProviderBuilderMethod(service, typeStore));

src/main/java/com/google/api/generator/gapic/composer/grpc/ServiceStubSettingsClassComposer.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
package com.google.api.generator.gapic.composer.grpc;
1616

17+
import com.google.api.gax.core.GoogleCredentialsProvider;
1718
import com.google.api.gax.grpc.GaxGrpcProperties;
1819
import com.google.api.gax.grpc.GrpcTransportChannel;
1920
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
@@ -22,6 +23,7 @@
2223
import com.google.api.generator.engine.ast.ConcreteReference;
2324
import com.google.api.generator.engine.ast.MethodDefinition;
2425
import com.google.api.generator.engine.ast.MethodInvocationExpr;
26+
import com.google.api.generator.engine.ast.PrimitiveValue;
2527
import com.google.api.generator.engine.ast.ScopeNode;
2628
import com.google.api.generator.engine.ast.StringObjectValue;
2729
import com.google.api.generator.engine.ast.TypeNode;
@@ -94,6 +96,43 @@ protected MethodDefinition createDefaultTransportTransportProviderBuilderMethod(
9496
.build();
9597
}
9698

99+
@Override
100+
protected MethodDefinition createDefaultCredentialsProviderBuilderMethod() {
101+
TypeNode returnType =
102+
TypeNode.withReference(
103+
ConcreteReference.withClazz(GoogleCredentialsProvider.Builder.class));
104+
MethodInvocationExpr credsProviderBuilderExpr =
105+
MethodInvocationExpr.builder()
106+
.setStaticReferenceType(FIXED_TYPESTORE.get("GoogleCredentialsProvider"))
107+
.setMethodName("newBuilder")
108+
.build();
109+
credsProviderBuilderExpr =
110+
MethodInvocationExpr.builder()
111+
.setExprReferenceExpr(credsProviderBuilderExpr)
112+
.setMethodName("setScopesToApply")
113+
.setArguments(DEFAULT_SERVICE_SCOPES_VAR_EXPR)
114+
.setReturnType(returnType)
115+
.build();
116+
credsProviderBuilderExpr =
117+
MethodInvocationExpr.builder()
118+
.setExprReferenceExpr(credsProviderBuilderExpr)
119+
.setMethodName("setUseJwtAccessWithScope")
120+
.setArguments(
121+
ValueExpr.withValue(
122+
PrimitiveValue.builder().setType(TypeNode.BOOLEAN).setValue("true").build()))
123+
.setReturnType(returnType)
124+
.build();
125+
return MethodDefinition.builder()
126+
.setHeaderCommentStatements(
127+
SettingsCommentComposer.DEFAULT_CREDENTIALS_PROVIDER_BUILDER_METHOD_COMMENT)
128+
.setScope(ScopeNode.PUBLIC)
129+
.setIsStatic(true)
130+
.setReturnType(returnType)
131+
.setName("defaultCredentialsProviderBuilder")
132+
.setReturnExpr(credsProviderBuilderExpr)
133+
.build();
134+
}
135+
97136
@Override
98137
protected MethodDefinition createDefaultApiClientHeaderProviderBuilderMethod(
99138
Service service, TypeStore typeStore) {

test/integration/goldens/asset/com/google/cloud/asset/v1/stub/AssetServiceStubSettings.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -452,7 +452,9 @@ public static List<String> getDefaultServiceScopes() {
452452

453453
/** Returns a builder for the default credentials for this service. */
454454
public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
455-
return GoogleCredentialsProvider.newBuilder().setScopesToApply(DEFAULT_SERVICE_SCOPES);
455+
return GoogleCredentialsProvider.newBuilder()
456+
.setScopesToApply(DEFAULT_SERVICE_SCOPES)
457+
.setUseJwtAccessWithScope(true);
456458
}
457459

458460
/** Returns a builder for the default ChannelProvider for this service. */

test/integration/goldens/credentials/com/google/cloud/iam/credentials/v1/stub/IamCredentialsStubSettings.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,9 @@ public static List<String> getDefaultServiceScopes() {
150150

151151
/** Returns a builder for the default credentials for this service. */
152152
public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
153-
return GoogleCredentialsProvider.newBuilder().setScopesToApply(DEFAULT_SERVICE_SCOPES);
153+
return GoogleCredentialsProvider.newBuilder()
154+
.setScopesToApply(DEFAULT_SERVICE_SCOPES)
155+
.setUseJwtAccessWithScope(true);
154156
}
155157

156158
/** Returns a builder for the default ChannelProvider for this service. */

test/integration/goldens/iam/com/google/iam/v1/stub/IAMPolicyStubSettings.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,9 @@ public static List<String> getDefaultServiceScopes() {
137137

138138
/** Returns a builder for the default credentials for this service. */
139139
public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
140-
return GoogleCredentialsProvider.newBuilder().setScopesToApply(DEFAULT_SERVICE_SCOPES);
140+
return GoogleCredentialsProvider.newBuilder()
141+
.setScopesToApply(DEFAULT_SERVICE_SCOPES)
142+
.setUseJwtAccessWithScope(true);
141143
}
142144

143145
/** Returns a builder for the default ChannelProvider for this service. */

test/integration/goldens/kms/com/google/cloud/kms/v1/stub/KeyManagementServiceStubSettings.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -657,7 +657,9 @@ public static List<String> getDefaultServiceScopes() {
657657

658658
/** Returns a builder for the default credentials for this service. */
659659
public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
660-
return GoogleCredentialsProvider.newBuilder().setScopesToApply(DEFAULT_SERVICE_SCOPES);
660+
return GoogleCredentialsProvider.newBuilder()
661+
.setScopesToApply(DEFAULT_SERVICE_SCOPES)
662+
.setUseJwtAccessWithScope(true);
661663
}
662664

663665
/** Returns a builder for the default ChannelProvider for this service. */

test/integration/goldens/library/com/google/cloud/example/library/v1/stub/LibraryServiceStubSettings.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,9 @@ public static List<String> getDefaultServiceScopes() {
316316

317317
/** Returns a builder for the default credentials for this service. */
318318
public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
319-
return GoogleCredentialsProvider.newBuilder().setScopesToApply(DEFAULT_SERVICE_SCOPES);
319+
return GoogleCredentialsProvider.newBuilder()
320+
.setScopesToApply(DEFAULT_SERVICE_SCOPES)
321+
.setUseJwtAccessWithScope(true);
320322
}
321323

322324
/** Returns a builder for the default ChannelProvider for this service. */

test/integration/goldens/logging/com/google/cloud/logging/v2/stub/ConfigServiceV2StubSettings.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,9 @@ public static List<String> getDefaultServiceScopes() {
526526

527527
/** Returns a builder for the default credentials for this service. */
528528
public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
529-
return GoogleCredentialsProvider.newBuilder().setScopesToApply(DEFAULT_SERVICE_SCOPES);
529+
return GoogleCredentialsProvider.newBuilder()
530+
.setScopesToApply(DEFAULT_SERVICE_SCOPES)
531+
.setUseJwtAccessWithScope(true);
530532
}
531533

532534
/** Returns a builder for the default ChannelProvider for this service. */

test/integration/goldens/logging/com/google/cloud/logging/v2/stub/LoggingServiceV2StubSettings.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,9 @@ public static List<String> getDefaultServiceScopes() {
456456

457457
/** Returns a builder for the default credentials for this service. */
458458
public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
459-
return GoogleCredentialsProvider.newBuilder().setScopesToApply(DEFAULT_SERVICE_SCOPES);
459+
return GoogleCredentialsProvider.newBuilder()
460+
.setScopesToApply(DEFAULT_SERVICE_SCOPES)
461+
.setUseJwtAccessWithScope(true);
460462
}
461463

462464
/** Returns a builder for the default ChannelProvider for this service. */

test/integration/goldens/logging/com/google/cloud/logging/v2/stub/MetricsServiceV2StubSettings.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,9 @@ public static List<String> getDefaultServiceScopes() {
224224

225225
/** Returns a builder for the default credentials for this service. */
226226
public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() {
227-
return GoogleCredentialsProvider.newBuilder().setScopesToApply(DEFAULT_SERVICE_SCOPES);
227+
return GoogleCredentialsProvider.newBuilder()
228+
.setScopesToApply(DEFAULT_SERVICE_SCOPES)
229+
.setUseJwtAccessWithScope(true);
228230
}
229231

230232
/** Returns a builder for the default ChannelProvider for this service. */

0 commit comments

Comments
 (0)