Skip to content

Commit d28a6ed

Browse files
authored
fix: allow unset/null privateKeyId for JwtCredentials (#336)
* fix: add failing test for unset/null privateKeyId * fix: relax preconditions to allow null privateKeyId * chore: fix lint * fix: remove invalid test
1 parent 19f38ad commit d28a6ed

File tree

2 files changed

+36
-18
lines changed

2 files changed

+36
-18
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public class JwtCredentials extends Credentials implements JwtProvider {
8686

8787
private JwtCredentials(Builder builder) {
8888
this.privateKey = Preconditions.checkNotNull(builder.getPrivateKey());
89-
this.privateKeyId = Preconditions.checkNotNull(builder.getPrivateKeyId());
89+
this.privateKeyId = builder.getPrivateKeyId();
9090
this.jwtClaims = Preconditions.checkNotNull(builder.getJwtClaims());
9191
Preconditions.checkState(jwtClaims.isComplete(), JWT_INCOMPLETE_ERROR_MESSAGE);
9292
this.lifeSpanSeconds = Preconditions.checkNotNull(builder.getLifeSpanSeconds());
@@ -220,7 +220,7 @@ public PrivateKey getPrivateKey() {
220220
}
221221

222222
public Builder setPrivateKeyId(String privateKeyId) {
223-
this.privateKeyId = Preconditions.checkNotNull(privateKeyId);
223+
this.privateKeyId = privateKeyId;
224224
return this;
225225
}
226226

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

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -114,22 +114,6 @@ public void builder_requiresPrivateKey() {
114114
}
115115
}
116116

117-
@Test
118-
public void builder_requiresPrivateKeyId() {
119-
try {
120-
JwtClaims claims =
121-
JwtClaims.newBuilder()
122-
.setAudience("some-audience")
123-
.setIssuer("some-issuer")
124-
.setSubject("some-subject")
125-
.build();
126-
JwtCredentials.newBuilder().setJwtClaims(claims).setPrivateKey(getPrivateKey()).build();
127-
fail("Should throw exception");
128-
} catch (NullPointerException ex) {
129-
// expected
130-
}
131-
}
132-
133117
@Test
134118
public void builder_requiresClaims() {
135119
try {
@@ -248,6 +232,40 @@ public void getRequestMetadata_withAdditionalClaims_hasJwtAccess() throws IOExce
248232
Collections.singletonMap("foo", "bar"));
249233
}
250234

235+
@Test
236+
public void privateKeyIdNull() throws IOException {
237+
JwtClaims claims =
238+
JwtClaims.newBuilder()
239+
.setAudience("some-audience")
240+
.setIssuer("some-issuer")
241+
.setSubject("some-subject")
242+
.build();
243+
JwtCredentials credentials =
244+
JwtCredentials.newBuilder()
245+
.setJwtClaims(claims)
246+
.setPrivateKey(getPrivateKey())
247+
.setPrivateKeyId(null)
248+
.build();
249+
250+
Map<String, List<String>> metadata = credentials.getRequestMetadata();
251+
verifyJwtAccess(metadata, "some-audience", "some-issuer", "some-subject", null);
252+
}
253+
254+
@Test
255+
public void privateKeyIdNotSpecified() throws IOException {
256+
JwtClaims claims =
257+
JwtClaims.newBuilder()
258+
.setAudience("some-audience")
259+
.setIssuer("some-issuer")
260+
.setSubject("some-subject")
261+
.build();
262+
JwtCredentials credentials =
263+
JwtCredentials.newBuilder().setJwtClaims(claims).setPrivateKey(getPrivateKey()).build();
264+
265+
Map<String, List<String>> metadata = credentials.getRequestMetadata();
266+
verifyJwtAccess(metadata, "some-audience", "some-issuer", "some-subject", null);
267+
}
268+
251269
private void verifyJwtAccess(
252270
Map<String, List<String>> metadata,
253271
String expectedAudience,

0 commit comments

Comments
 (0)