Skip to content

Commit 9d7eb5a

Browse files
authored
Merge pull request #1181 from gabriel-farache/fix_1180
Fix #1180: also look into outgoing header while propagating
2 parents aee8e52 + cff9e4d commit 9d7eb5a

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

client/runtime/src/main/java/io/quarkiverse/openapi/generator/providers/AbstractAuthenticationPropagationHeadersFactory.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import jakarta.ws.rs.core.MultivaluedMap;
88

99
import org.eclipse.microprofile.rest.client.ext.ClientHeadersFactory;
10+
import org.slf4j.Logger;
11+
import org.slf4j.LoggerFactory;
1012

1113
import io.quarkiverse.openapi.generator.OpenApiGeneratorConfig;
1214

@@ -23,6 +25,8 @@ public abstract class AbstractAuthenticationPropagationHeadersFactory implements
2325
protected OpenApiGeneratorConfig generatorConfig;
2426
protected HeadersProvider headersProvider;
2527

28+
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractAuthenticationPropagationHeadersFactory.class);
29+
2630
protected AbstractAuthenticationPropagationHeadersFactory(BaseCompositeAuthenticationProvider compositeProvider,
2731
OpenApiGeneratorConfig generatorConfig,
2832
HeadersProvider headersProvider) {
@@ -36,6 +40,11 @@ public MultivaluedMap<String, String> update(MultivaluedMap<String, String> inco
3640
MultivaluedMap<String, String> clientOutgoingHeaders) {
3741
MultivaluedMap<String, String> propagatedHeaders = new MultivaluedHashMap<>();
3842
MultivaluedMap<String, String> providedHeaders = headersProvider.getStringHeaders(generatorConfig);
43+
44+
LOGGER.debug("Incoming headers keys{}", incomingHeaders.keySet());
45+
LOGGER.debug("Outgoing headers keys{}", clientOutgoingHeaders.keySet());
46+
LOGGER.debug("Provided headers keys{}", providedHeaders.keySet());
47+
3948
compositeProvider.getAuthenticationProviders().stream()
4049
.filter(AbstractAuthProvider.class::isInstance)
4150
.map(AbstractAuthProvider.class::cast)
@@ -46,9 +55,14 @@ public MultivaluedMap<String, String> update(MultivaluedMap<String, String> inco
4655
// get priority to the headers coming from the headers provider.
4756
List<String> headerValue = providedHeaders.get(headerName);
4857
if (headerValue == null) {
49-
// lastly look into the incoming headers.
58+
// next, look into the incoming headers.
5059
headerValue = incomingHeaders.get(headerName);
5160
}
61+
if (headerValue == null) {
62+
// lastly look into the outgoing headers.
63+
headerValue = clientOutgoingHeaders.get(headerName);
64+
}
65+
5266
if (headerValue != null) {
5367
propagatedHeaders.put(propagationHeaderName(authProvider.getOpenApiSpecId(),
5468
authProvider.getName(),

client/runtime/src/main/java/io/quarkiverse/openapi/generator/providers/BearerAuthenticationProvider.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
import jakarta.ws.rs.client.ClientRequestContext;
77
import jakarta.ws.rs.core.HttpHeaders;
88

9+
import org.slf4j.Logger;
10+
import org.slf4j.LoggerFactory;
11+
912
/**
1013
* Provides bearer token authentication or any other valid scheme.
1114
*
@@ -14,6 +17,7 @@
1417
public class BearerAuthenticationProvider extends AbstractAuthProvider {
1518

1619
private final String scheme;
20+
private static final Logger LOGGER = LoggerFactory.getLogger(BearerAuthenticationProvider.class);
1721

1822
public BearerAuthenticationProvider(final String openApiSpecId, final String name, final String scheme,
1923
List<OperationAuthInfo> operations, CredentialsProvider credentialsProvider) {
@@ -23,6 +27,7 @@ public BearerAuthenticationProvider(final String openApiSpecId, final String nam
2327

2428
@Override
2529
public void filter(ClientRequestContext requestContext) throws IOException {
30+
LOGGER.debug("Headers keys set in incoming requestContext: {}", requestContext.getHeaders().keySet());
2631
String bearerToken = getBearerToken(requestContext);
2732

2833
if (isTokenPropagation()) {
@@ -32,6 +37,7 @@ public void filter(ClientRequestContext requestContext) throws IOException {
3237
if (!bearerToken.isBlank()) {
3338
requestContext.getHeaders().add(HttpHeaders.AUTHORIZATION, AuthUtils.authTokenOrBearer(this.scheme, bearerToken));
3439
}
40+
LOGGER.debug("Header keys set in filtered requestContext: {}", requestContext.getHeaders().keySet());
3541
}
3642

3743
private String getBearerToken(ClientRequestContext requestContext) {

0 commit comments

Comments
 (0)