Skip to content

Commit 42ef044

Browse files
new default jwt validator method
1 parent cca4781 commit 42ef044

File tree

3 files changed

+29
-2
lines changed

3 files changed

+29
-2
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.bastiaanjansen.jwt;
22

3+
@FunctionalInterface
34
public interface ClaimValidator {
45
boolean validate(Object value);
56
}

src/main/java/com/bastiaanjansen/jwt/DefaultJWTValidator.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,16 @@ public Builder withOneOfAudience(String... audience) {
125125
}
126126
return false;
127127
});
128+
129+
return this;
130+
}
131+
132+
public Builder withAllOfAudience(String... audience) {
133+
withClaim(Payload.Registered.AUDIENCE, value -> {
134+
String[] values = (String[]) value;
135+
return Arrays.asList(values).containsAll(Arrays.asList(audience));
136+
});
137+
128138
return this;
129139
}
130140

@@ -195,10 +205,10 @@ public DefaultJWTValidator build() {
195205
}
196206

197207
public Map<String, ClaimValidator> getHeaderValidators() {
198-
return headerValidators;
208+
return new HashMap<>(headerValidators);
199209
}
200210

201211
public Map<String, ClaimValidator> getPayloadValidators() {
202-
return payloadValidators;
212+
return new HashMap<>(payloadValidators);
203213
}
204214
}

src/test/java/com/bastiaanjansen/jwt/DefaultJWTValidatorTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,22 @@ void validateWithValidAudience_doesNotThrow() throws JWTCreationException {
159159
assertDoesNotThrow(() -> validator.validate(jwt));
160160
}
161161

162+
@Test
163+
void validateWithValidAllAudience_doesNotThrow() throws JWTCreationException {
164+
JWT jwt = new JWT.Builder(algorithm).withAudience("aud1", "aud2", "aud3").build();
165+
JWTValidator validator = new DefaultJWTValidator.Builder().withAllOfAudience("aud1", "aud2").build();
166+
167+
assertDoesNotThrow(() -> validator.validate(jwt));
168+
}
169+
170+
@Test
171+
void validateWithValidAllAudience_throwsJWTValidationException() throws JWTCreationException {
172+
JWT jwt = new JWT.Builder(algorithm).withAudience("aud1", "aud3").build();
173+
JWTValidator validator = new DefaultJWTValidator.Builder().withAllOfAudience("aud1", "aud2").build();
174+
175+
assertThrows(JWTValidationException.class, () -> validator.validate(jwt));
176+
}
177+
162178
@Test
163179
void validateWithInvalidExpirationDate_throwsJWTValidationException() throws JWTCreationException {
164180
JWT jwt = new JWT.Builder(algorithm).withExpirationTime(100).build();

0 commit comments

Comments
 (0)