Skip to content

Commit 3ebe6f2

Browse files
gabriel-farachericardozanini
authored andcommitted
Fix quarkiverse#1180: also look into outgoing header while propagating
Signed-off-by: gabriel-farache <[email protected]>
1 parent 6e7a1c5 commit 3ebe6f2

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
@@ -10,6 +10,9 @@
1010
import org.slf4j.Logger;
1111
import org.slf4j.LoggerFactory;
1212

13+
import org.slf4j.Logger;
14+
import org.slf4j.LoggerFactory;
15+
1316
/**
1417
* Provides bearer token authentication or any other valid scheme.
1518
*
@@ -20,6 +23,7 @@ public class BearerAuthenticationProvider extends AbstractAuthProvider {
2023
private static final Logger LOGGER = LoggerFactory.getLogger(BearerAuthenticationProvider.class);
2124

2225
private final String scheme;
26+
private static final Logger LOGGER = LoggerFactory.getLogger(BearerAuthenticationProvider.class);
2327

2428
public BearerAuthenticationProvider(final String openApiSpecId, final String name, final String scheme,
2529
List<OperationAuthInfo> operations, CredentialsProvider credentialsProvider) {
@@ -29,6 +33,7 @@ public BearerAuthenticationProvider(final String openApiSpecId, final String nam
2933

3034
@Override
3135
public void filter(ClientRequestContext requestContext) throws IOException {
36+
LOGGER.debug("Headers keys set in incoming requestContext: {}", requestContext.getHeaders().keySet());
3237
String bearerToken = getBearerToken(requestContext);
3338

3439
if (isTokenPropagation()) {
@@ -43,6 +48,7 @@ public void filter(ClientRequestContext requestContext) throws IOException {
4348
getName(), getCanonicalAuthConfigPropertyName(BEARER_TOKEN, getOpenApiSpecId(), getName()),
4449
getHeaderForPropagation());
4550
}
51+
LOGGER.debug("Header keys set in filtered requestContext: {}", requestContext.getHeaders().keySet());
4652
}
4753

4854
private String getBearerToken(ClientRequestContext requestContext) {

0 commit comments

Comments
 (0)