diff --git a/gravitee-am-gateway/gravitee-am-gateway-handler/gravitee-am-gateway-handler-oidc/src/main/java/io/gravitee/am/gateway/handler/oauth2/resources/auth/provider/CertificateUtils.java b/gravitee-am-gateway/gravitee-am-gateway-handler/gravitee-am-gateway-handler-oidc/src/main/java/io/gravitee/am/gateway/handler/oauth2/resources/auth/provider/CertificateUtils.java index 725cbe7a82..0e291e302b 100644 --- a/gravitee-am-gateway/gravitee-am-gateway-handler/gravitee-am-gateway-handler-oidc/src/main/java/io/gravitee/am/gateway/handler/oauth2/resources/auth/provider/CertificateUtils.java +++ b/gravitee-am-gateway/gravitee-am-gateway-handler/gravitee-am-gateway-handler-oidc/src/main/java/io/gravitee/am/gateway/handler/oauth2/resources/auth/provider/CertificateUtils.java @@ -61,7 +61,13 @@ public static Optional extractPeerCertificate(RoutingContext ro if (certHeaderValue != null) { try { - certHeaderValue = URLDecoder.decode(certHeaderValue.replaceAll("\t", "\n"), Charset.defaultCharset()); + certHeaderValue = certHeaderValue + .replaceAll("\\+","%2F") + .replaceAll("//","%2B") + .replaceAll("=","%3D") + .replaceAll("\t", "\n"); + + certHeaderValue = URLDecoder.decode(certHeaderValue, Charset.defaultCharset()); CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); certificate = Optional.ofNullable((X509Certificate) certificateFactory.generateCertificate(new ByteArrayInputStream(certHeaderValue.getBytes()))); } catch (CertificateException e) {