Skip to content

Commit cf83646

Browse files
authored
Merge pull request quarkusio#47668 from ayagmar/issues/47630
Handle empty bearer token file in ClientAssertionProvider
2 parents 93191f3 + 6b7dbea commit cf83646

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

extensions/oidc-common/runtime/src/main/java/io/quarkus/oidc/common/runtime/ClientAssertionProvider.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@ private ClientAssertion loadFromFileSystem() {
7575
if (Files.exists(bearerTokenPath)) {
7676
try {
7777
String bearerToken = Files.readString(bearerTokenPath).trim();
78+
if (bearerToken.isEmpty()) {
79+
LOG.error(String.format("Bearer token file at path %s is empty or contains only whitespace",
80+
bearerTokenPath));
81+
return null;
82+
}
7883
Long expiresAt = getExpiresAtFromExpClaim(bearerToken);
7984
if (expiresAt != null) {
8085
return new ClientAssertion(bearerToken, expiresAt, scheduleRefresh(expiresAt));

extensions/oidc-common/runtime/src/test/java/io/quarkus/oidc/common/runtime/ClientAssertionProviderTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static java.nio.file.StandardOpenOption.TRUNCATE_EXISTING;
55
import static java.nio.file.StandardOpenOption.WRITE;
66
import static org.junit.jupiter.api.Assertions.assertEquals;
7+
import static org.junit.jupiter.api.Assertions.assertNull;
78

89
import java.io.IOException;
910
import java.nio.file.Files;
@@ -40,6 +41,25 @@ public void testJwtBearerTokenRefresh() {
4041
}
4142
}
4243

44+
@Test
45+
public void EmptyBearerTokenFileShouldReturnNullClientAssertion() {
46+
Vertx vertx = Vertx.vertx();
47+
Path emptyTokenPath = Path.of("target").resolve("empty-jwt-bearer-token.json");
48+
49+
storeNewJwtBearerToken(emptyTokenPath, "");
50+
try (var clientAssertionProvider = new ClientAssertionProvider(vertx, emptyTokenPath)) {
51+
assertNull(clientAssertionProvider.getClientAssertion());
52+
53+
String validToken = createJwtBearerToken();
54+
storeNewJwtBearerToken(emptyTokenPath, validToken);
55+
56+
Awaitility.await().atMost(Duration.ofSeconds(10))
57+
.untilAsserted(() -> assertEquals(validToken, clientAssertionProvider.getClientAssertion()));
58+
} finally {
59+
vertx.close().toCompletionStage().toCompletableFuture().join();
60+
}
61+
}
62+
4363
private static void storeNewJwtBearerToken(Path jwtBearerTokenPath, String jwtBearerToken) {
4464
try {
4565
Files.writeString(jwtBearerTokenPath, jwtBearerToken, TRUNCATE_EXISTING, CREATE, WRITE);

0 commit comments

Comments
 (0)