Search in sources :

Example 1 with UnresolvableKeyException

use of org.jose4j.lang.UnresolvableKeyException in project kafka by apache.

the class RefreshingHttpsJwksVerificationKeyResolver method resolveKey.

@Override
public Key resolveKey(JsonWebSignature jws, List<JsonWebStructure> nestingContext) throws UnresolvableKeyException {
    if (!isInitialized)
        throw new IllegalStateException("Please call init() first");
    try {
        List<JsonWebKey> jwks = refreshingHttpsJwks.getJsonWebKeys();
        JsonWebKey jwk = verificationJwkSelector.select(jws, jwks);
        if (jwk != null)
            return jwk.getKey();
        String keyId = jws.getKeyIdHeaderValue();
        if (refreshingHttpsJwks.maybeExpediteRefresh(keyId))
            log.debug("Refreshing JWKs from {} as no suitable verification key for JWS w/ header {} was found in {}", refreshingHttpsJwks.getLocation(), jws.getHeaders().getFullHeaderAsJsonString(), jwks);
        StringBuilder sb = new StringBuilder();
        sb.append("Unable to find a suitable verification key for JWS w/ header ").append(jws.getHeaders().getFullHeaderAsJsonString());
        sb.append(" from JWKs ").append(jwks).append(" obtained from ").append(refreshingHttpsJwks.getLocation());
        throw new UnresolvableKeyException(sb.toString());
    } catch (JoseException | IOException e) {
        StringBuilder sb = new StringBuilder();
        sb.append("Unable to find a suitable verification key for JWS w/ header ").append(jws.getHeaders().getFullHeaderAsJsonString());
        sb.append(" due to an unexpected exception (").append(e).append(") while obtaining or using keys from JWKS endpoint at ").append(refreshingHttpsJwks.getLocation());
        throw new UnresolvableKeyException(sb.toString(), e);
    }
}
Also used : UnresolvableKeyException(org.jose4j.lang.UnresolvableKeyException) JoseException(org.jose4j.lang.JoseException) JsonWebKey(org.jose4j.jwk.JsonWebKey) IOException(java.io.IOException)

Aggregations

IOException (java.io.IOException)1 JsonWebKey (org.jose4j.jwk.JsonWebKey)1 JoseException (org.jose4j.lang.JoseException)1 UnresolvableKeyException (org.jose4j.lang.UnresolvableKeyException)1