Skip to content

Commit dd29669

Browse files
committed
Improve the code in security-oidc-bearer-token-authentication.adoc to include a list in AcrValueValidator
1 parent 324da28 commit dd29669

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

docs/src/main/asciidoc/security-oidc-bearer-token-authentication.adoc

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1706,10 +1706,13 @@ Or, if you need more flexibility, write a <<jose4j-validator-bearer>>:
17061706
----
17071707
package io.quarkus.it.oidc;
17081708
1709+
import java.util.Collections;
1710+
import java.util.List;
17091711
import java.util.Map;
17101712
17111713
import jakarta.enterprise.context.ApplicationScoped;
17121714
1715+
import org.eclipse.microprofile.jwt.Claims;
17131716
import org.jose4j.jwt.MalformedClaimException;
17141717
import org.jose4j.jwt.consumer.JwtContext;
17151718
import org.jose4j.jwt.consumer.Validator;
@@ -1727,9 +1730,19 @@ public class AcrValueValidator implements Validator {
17271730
@Override
17281731
public String validate(JwtContext jwtContext) throws MalformedClaimException {
17291732
var jwtClaims = jwtContext.getJwtClaims();
1730-
if (jwtClaims.hasClaim("acr")) {
1731-
var acrClaim = jwtClaims.getStringListClaimValue("acr");
1732-
if (acrClaim.contains("myACR") && acrClaim.contains("yourACR")) {
1733+
var acrClaimName = Claims.acr.name();
1734+
1735+
if (jwtClaims.hasClaim(acrClaimName)) {
1736+
// The claim 'acr' could be a String or a list
1737+
List<String> acrClaimValues;
1738+
if (jwtClaims.isClaimValueStringList(acrClaimName)) {
1739+
acrClaimValues = jwtClaims.getStringListClaimValue(acrClaimName);
1740+
} else if (jwtClaims.isClaimValueString(acrClaimName)) {
1741+
acrClaimValues = List.of(jwtClaims.getStringClaimValue(acrClaimName));
1742+
} else {
1743+
throw new MalformedClaimException("Claim '" + acrClaimName + "' is not a String or List of Strings.");
1744+
}
1745+
if (acrClaimValues.contains("myACR") && acrClaimValues.contains("yourACR")) {
17331746
return null;
17341747
}
17351748
}

0 commit comments

Comments
 (0)