From 8f5e3797ef7803c2984e4eba4bb1839f49aa4625 Mon Sep 17 00:00:00 2001 From: Athish Pranav D Date: Thu, 5 Sep 2024 10:17:58 +0530 Subject: [PATCH 1/2] Added UA string for JWKS fetcher Signed-off-by: Athish Pranav D --- source/common/http/headers.h | 1 + source/extensions/filters/http/common/jwks_fetcher.cc | 1 + 2 files changed, 2 insertions(+) diff --git a/source/common/http/headers.h b/source/common/http/headers.h index b1368b060ea3..17550b4a0b62 100644 --- a/source/common/http/headers.h +++ b/source/common/http/headers.h @@ -350,6 +350,7 @@ class HeaderValues { struct { const std::string EnvoyHealthChecker{"Envoy/HC"}; + const std::string GoBrowser{"Go-browser"}; } UserAgentValues; struct { diff --git a/source/extensions/filters/http/common/jwks_fetcher.cc b/source/extensions/filters/http/common/jwks_fetcher.cc index 70cdbbc4c77b..fa281f973520 100644 --- a/source/extensions/filters/http/common/jwks_fetcher.cc +++ b/source/extensions/filters/http/common/jwks_fetcher.cc @@ -57,6 +57,7 @@ class JwksFetcherImpl : public JwksFetcher, Http::RequestMessagePtr message = Http::Utility::prepareHeaders(remote_jwks_.http_uri()); message->headers().setReferenceMethod(Http::Headers::get().MethodValues.Get); + message->headers().setReferenceUserAgent(Http::Headers::get().UserAgentValues.GoBrowser); ENVOY_LOG(debug, "fetch pubkey from [uri = {}]: start", remote_jwks_.http_uri().uri()); auto options = Http::AsyncClient::RequestOptions() .setTimeout(std::chrono::milliseconds( From b1d63b351483ba0c54f6cce9bced2aa7883c0772 Mon Sep 17 00:00:00 2001 From: Athish Pranav D Date: Mon, 9 Sep 2024 23:30:48 +0530 Subject: [PATCH 2/2] Added UTs Signed-off-by: Athish Pranav D --- .../filters/http/common/jwks_fetcher_test.cc | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/test/extensions/filters/http/common/jwks_fetcher_test.cc b/test/extensions/filters/http/common/jwks_fetcher_test.cc index 59184dda5b0e..571b61e23208 100644 --- a/test/extensions/filters/http/common/jwks_fetcher_test.cc +++ b/test/extensions/filters/http/common/jwks_fetcher_test.cc @@ -81,6 +81,28 @@ TEST_F(JwksFetcherTest, TestGetSuccess) { fetcher_->fetch(parent_span_, receiver); } +TEST_F(JwksFetcherTest, TestMessageHeader) { + // Setup + setupFetcher(config); + MockUpstream mock_pubkey(mock_factory_ctx_.server_factory_context_.cluster_manager_, "200", + publicKey); + MockJwksReceiver receiver; + + // Expectations for message + EXPECT_CALL(mock_factory_ctx_.server_factory_context_.cluster_manager_.thread_local_cluster_ + .async_client_, + send_(_, _, _)) + .WillOnce(Invoke([](Http::RequestMessagePtr& message, Http::AsyncClient::Callbacks&, + const Http::AsyncClient::RequestOptions&) -> Http::AsyncClient::Request* { + EXPECT_EQ(message->headers().getUserAgentValue(), + Http::Headers::get().UserAgentValues.GoBrowser); + return nullptr; + })); + + // Act + fetcher_->fetch(parent_span_, receiver); +} + TEST_F(JwksFetcherTest, TestGet400) { // Setup setupFetcher(config);