From fbef2f40e8d0bb4fba198927387eecea8f9a458d Mon Sep 17 00:00:00 2001 From: An Tran Date: Fri, 31 Jan 2025 16:17:54 +1000 Subject: [PATCH 1/7] [deps] Update lua-resty-jwt to v0.2.3 --- Dockerfile | 2 +- gateway/Roverfile.lock | 2 +- gateway/apicast-scm-1.rockspec | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1537c7c5a..8480bfcb7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -47,7 +47,7 @@ ENV PATH="./lua_modules/bin:/usr/local/openresty/luajit/bin/:${PATH}" \ RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/manifests/pintsized/lua-resty-http-0.17.1-0.src.rock RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/manifests/kikito/router-2.1-0.src.rock RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/manifests/kikito/inspect-3.1.1-0.src.rock -RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/manifests/cdbattags/lua-resty-jwt-0.2.0-0.src.rock +RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/manifests/cdbattags/lua-resty-jwt-0.2.3-0.src.rock RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/manifests/3scale/lua-resty-url-0.3.5-1.src.rock RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/manifests/3scale/lua-resty-env-0.4.0-1.src.rock RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/manifests/3scale/liquid-0.2.0-2.src.rock diff --git a/gateway/Roverfile.lock b/gateway/Roverfile.lock index f20d26b7c..291384db6 100644 --- a/gateway/Roverfile.lock +++ b/gateway/Roverfile.lock @@ -13,7 +13,7 @@ lua-resty-http 0.17.1-0|4ab4269cf442ba52507aa2c718f606054452fcad|production lua-resty-ipmatcher 0.6.1-0|62d4c44d67227e8f3fe02331c2f8b90fe0d7ccd1|production lua-resty-iputils 0.3.0-2|6110b41eaa52efd25e56f89e34412ab95f700d57|production lua-resty-jit-uuid 0.0.7-2|64ae38de75c9d58f330d89e140ac872771c19223|production -lua-resty-jwt 0.2.0-0|2a62ff95eae91df6bd8655080a4b9b04c61bec6b|production +lua-resty-jwt 0.2.3-0|b3d5c085643fa95099e72a609c57095802106ff9|production lua-resty-openssl 1.5.1-1|a900c5f5897448c181dd58073e51cdeeb3fd0029|production lua-resty-repl 0.0.6-0|3878f41b7e8f97b1c96919db19dbee9496569dda|development lua-resty-url 0.3.5-1||production diff --git a/gateway/apicast-scm-1.rockspec b/gateway/apicast-scm-1.rockspec index e4c019c36..9548ebcea 100644 --- a/gateway/apicast-scm-1.rockspec +++ b/gateway/apicast-scm-1.rockspec @@ -14,7 +14,7 @@ dependencies = { 'inspect', 'lyaml', 'router', - 'lua-resty-jwt == 0.2.0', + 'lua-resty-jwt', 'lua-resty-url', 'lua-resty-env', 'lua-resty-execvp', From daddd45d3e4562b38b4dcaab7811c17129d34467 Mon Sep 17 00:00:00 2001 From: An Tran Date: Fri, 31 Jan 2025 16:38:32 +1000 Subject: [PATCH 2/7] [runtime-image] Bump luarocks version to 3.11.1 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 8480bfcb7..359b85b7a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ FROM registry.access.redhat.com/ubi8:8.5 ARG OPENRESTY_RPM_VERSION="1.21.4-1.el8" -ARG LUAROCKS_VERSION="2.3.0" +ARG LUAROCKS_VERSION="3.11.1" ARG JAEGERTRACING_CPP_CLIENT_RPM_VERSION="0.3.1-13.el8" LABEL summary="The 3scale API gateway (APIcast) is an OpenResty application, which consists of two parts: NGINX configuration and Lua files." \ From e9d2a13acd7636bd265d5a28c64cce6fa79c09f1 Mon Sep 17 00:00:00 2001 From: An Tran Date: Mon, 3 Feb 2025 12:44:10 +1000 Subject: [PATCH 3/7] [t] add test for ES256/ES512 --- t/apicast-oidc.t | 111 +++++++++++++++++++++++++ t/fixtures/certs/ec256_private_key.pem | 5 ++ t/fixtures/certs/ec256_public_key.pem | 4 + t/fixtures/certs/ec521_private_key.pem | 7 ++ t/fixtures/certs/ec521_public_key.pem | 6 ++ 5 files changed, 133 insertions(+) create mode 100644 t/fixtures/certs/ec256_private_key.pem create mode 100644 t/fixtures/certs/ec256_public_key.pem create mode 100644 t/fixtures/certs/ec521_private_key.pem create mode 100644 t/fixtures/certs/ec521_public_key.pem diff --git a/t/apicast-oidc.t b/t/apicast-oidc.t index 6c8aab812..8763d792e 100644 --- a/t/apicast-oidc.t +++ b/t/apicast-oidc.t @@ -3,6 +3,10 @@ use Test::APIcast::Blackbox 'no_plan'; our $private_key = `cat t/fixtures/rsa.pem`; our $public_key = `cat t/fixtures/rsa.pub`; +our $ec256_private_key = `cat t/fixtures/certs/ec256_private_key.pem`; +our $ec256_public_key = `cat t/fixtures/certs/ec256_public_key.pem`; +our $ec521_private_key = `cat t/fixtures/certs/ec521_private_key.pem`; +our $ec521_public_key = `cat t/fixtures/certs/ec521_public_key.pem`; repeat_each(1); @@ -440,3 +444,110 @@ my $jwt = encode_jwt(payload => { "Authorization: Bearer $jwt" --- error_log eval [ qr/Claim 'iss' \('unexpected_issuer'\) returned failure/ ] + + + +=== TEST 10: Verify JWT - ES256 +--- configuration env eval +use JSON qw(to_json); + +to_json({ + services => [{ + id => 42, + backend_version => 'oauth', + backend_authentication_type => 'provider_key', + backend_authentication_value => 'fookey', + proxy => { + authentication_method => 'oidc', + oidc_issuer_endpoint => 'https://example.com/auth/realms/apicast', + api_backend => "http://test:$TEST_NGINX_SERVER_PORT/", + proxy_rules => [ + { pattern => '/', http_method => 'GET', metric_system_name => 'hits', delta => 1 } + ] + } + }], + oidc => [{ + issuer => 'https://example.com/auth/realms/apicast', + config => { id_token_signing_alg_values_supported => [ 'ES256' ] }, + keys => { somekid => { pem => $::ec256_public_key, alg => 'ES256' } }, + }] +}); +--- upstream + location /test { + echo "yes"; + } +--- backend + location = /transactions/oauth_authrep.xml { + content_by_lua_block { + local expected = "provider_key=fookey&service_id=42&usage%5Bhits%5D=1&app_id=appid" + require('luassert').same(ngx.decode_args(expected), ngx.req.get_uri_args(0)) + } + } +--- request: GET /test +--- error_code: 200 +--- more_headers eval +use Crypt::JWT qw(encode_jwt); +my $jwt = encode_jwt(payload => { + aud => 'something', + azp => 'appid', + sub => 'someone', + iss => 'https://example.com/auth/realms/apicast', + exp => time + 3600 }, key => \$::ec256_private_key, alg => 'ES256', extra_headers => { kid => 'somekid' }); +"Authorization: Bearer $jwt" +--- no_error_log +[error] + + + +=== TEST 11: Verify JWT - ES512 +--- configuration env eval +use JSON qw(to_json); + +to_json({ + services => [{ + id => 42, + backend_version => 'oauth', + backend_authentication_type => 'provider_key', + backend_authentication_value => 'fookey', + proxy => { + authentication_method => 'oidc', + oidc_issuer_endpoint => 'https://example.com/auth/realms/apicast', + api_backend => "http://test:$TEST_NGINX_SERVER_PORT/", + proxy_rules => [ + { pattern => '/', http_method => 'GET', metric_system_name => 'hits', delta => 1 } + ] + } + }], + oidc => [{ + issuer => 'https://example.com/auth/realms/apicast', + config => { id_token_signing_alg_values_supported => [ 'ES512' ] }, + keys => { somekid => { pem => $::ec521_public_key, alg => 'ES512' } }, + }] +}); +--- upstream + location /test { + content_by_lua_block { + ngx.log(ngx.INFO, "\n---\n HEADER: ", ngx.get_headers()["Authorization"], "\n---\n") + } + echo "yes"; + } +--- backend + location = /transactions/oauth_authrep.xml { + content_by_lua_block { + local expected = "provider_key=fookey&service_id=42&usage%5Bhits%5D=1&app_id=appid" + require('luassert').same(ngx.decode_args(expected), ngx.req.get_uri_args(0)) + } + } +--- request: GET /test +--- error_code: 200 +--- more_headers eval +use Crypt::JWT qw(encode_jwt); +my $jwt = encode_jwt(payload => { + aud => 'something', + azp => 'appid', + sub => 'someone', + iss => 'https://example.com/auth/realms/apicast', + exp => time + 3600 }, key => \$::ec521_private_key, alg => 'ES512', extra_headers => { kid => 'somekid' }); +"Authorization: Bearer $jwt" +--- no_error_log +[error] diff --git a/t/fixtures/certs/ec256_private_key.pem b/t/fixtures/certs/ec256_private_key.pem new file mode 100644 index 000000000..bd452d999 --- /dev/null +++ b/t/fixtures/certs/ec256_private_key.pem @@ -0,0 +1,5 @@ +-----BEGIN EC PRIVATE KEY----- +MHcCAQEEIA8Bv35dnS289gK/lBbp0bj3LzFuvFvZowNClcUW4E84oAoGCCqGSM49 +AwEHoUQDQgAERm/e/qZmgIyVSksHrHh1lzf9F6WToTKnyWLfLdz8SZiaLVaI1GW3 +GekLwVlbKZUkmqUnKfrNs2U9DuJ3jSyX8A== +-----END EC PRIVATE KEY----- diff --git a/t/fixtures/certs/ec256_public_key.pem b/t/fixtures/certs/ec256_public_key.pem new file mode 100644 index 000000000..cce237639 --- /dev/null +++ b/t/fixtures/certs/ec256_public_key.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERm/e/qZmgIyVSksHrHh1lzf9F6WT +oTKnyWLfLdz8SZiaLVaI1GW3GekLwVlbKZUkmqUnKfrNs2U9DuJ3jSyX8A== +-----END PUBLIC KEY----- diff --git a/t/fixtures/certs/ec521_private_key.pem b/t/fixtures/certs/ec521_private_key.pem new file mode 100644 index 000000000..7c7e38d29 --- /dev/null +++ b/t/fixtures/certs/ec521_private_key.pem @@ -0,0 +1,7 @@ +-----BEGIN EC PRIVATE KEY----- +MIHcAgEBBEIBEsogZYirhy12UPSwJx3ps/6j9fRHdIrqzUfz8uDz1xZ4KGm1uzyQ +oB355ifR/5IriiWzai1LZM+dyR1uS8wV2qKgBwYFK4EEACOhgYkDgYYABAHzlvzU +iiXqNVDBW66xFHhJgdQ3qg8qEtZbKhtjJ0gn9UCaYQeDlaL9Vxik/f+qVq0yG5A8 +qML+PiV8tqXvXpvJGgBwS1L5XjDrJPWkizPACi+ny7g8mkSh7d/0mixXda+bNq6T +6jS5pb9wWJqtvzWFANMP8ajEVYRh+qBLWS/42kQkAA== +-----END EC PRIVATE KEY----- diff --git a/t/fixtures/certs/ec521_public_key.pem b/t/fixtures/certs/ec521_public_key.pem new file mode 100644 index 000000000..9c6493a5d --- /dev/null +++ b/t/fixtures/certs/ec521_public_key.pem @@ -0,0 +1,6 @@ +-----BEGIN PUBLIC KEY----- +MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQB85b81Iol6jVQwVuusRR4SYHUN6oP +KhLWWyobYydIJ/VAmmEHg5Wi/VcYpP3/qlatMhuQPKjC/j4lfLal716byRoAcEtS ++V4w6yT1pIszwAovp8u4PJpEoe3f9JosV3Wvmzauk+o0uaW/cFiarb81hQDTD/Go +xFWEYfqgS1kv+NpEJAA= +-----END PUBLIC KEY----- From 7ad24bf510829fb13f1cefa6d80d4204906b6d13 Mon Sep 17 00:00:00 2001 From: An Tran Date: Mon, 3 Feb 2025 15:08:59 +1000 Subject: [PATCH 4/7] [spec] add tests for ES256/ES512 --- spec/fixtures/certs.lua | 49 ++++++++++ spec/fixtures/rsa.lua | 19 ---- spec/oauth/oidc_spec.lua | 92 +++++++++++++++---- .../3scale_batcher/keys_helper_spec.lua | 4 +- .../oidc_authentication_spec.lua | 8 +- 5 files changed, 127 insertions(+), 45 deletions(-) create mode 100644 spec/fixtures/certs.lua delete mode 100644 spec/fixtures/rsa.lua diff --git a/spec/fixtures/certs.lua b/spec/fixtures/certs.lua new file mode 100644 index 000000000..839f7175a --- /dev/null +++ b/spec/fixtures/certs.lua @@ -0,0 +1,49 @@ +return { +rsa_public_key = [[ +-----BEGIN PUBLIC KEY----- +MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALClz96cDQ965ENYMfZzG+Acu25lpx2K +NpAALBQ+catCA59us7+uLY5rjQR6SOgZpCz5PJiKNAdRPDJMXSmXqM0CAwEAAQ== +-----END PUBLIC KEY----- +]], +rsa_private_key = [[ +-----BEGIN RSA PRIVATE KEY----- +MIIBPAIBAAJBALClz96cDQ965ENYMfZzG+Acu25lpx2KNpAALBQ+catCA59us7+u +LY5rjQR6SOgZpCz5PJiKNAdRPDJMXSmXqM0CAwEAAQJBAJnwZa4BIACVf8aQXToA +JhKv90bFn1TG1bW38LHTmQs8EM9XCmghLWCje7d/NbUrUceotIOnjtv/xHTywGt2 +NwECIQDhvMZDQ+ZRRbbwONcvO9G7h6hFgy0okiv6JciZccvtxQIhAMhUTAWgV1hQ +O2yWTRYRQZosEIsFB3kZfsLMeTKjk8dpAiEAslsZ92m9n3dKrJDsjFhiRR5ROOMF +Gior7xBNZ9e+vdUCIDsjf4nNqttcXB6TRFB2aapsxbl0k58xYpV5LXJAjfi5AiEA +vRaSauBfRCP3JgXHNgcDSW017/BtbwGiz8aITv6B0Fw= +-----END RSA PRIVATE KEY----- +]], +es256_public_key = [[ +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERm/e/qZmgIyVSksHrHh1lzf9F6WT +oTKnyWLfLdz8SZiaLVaI1GW3GekLwVlbKZUkmqUnKfrNs2U9DuJ3jSyX8A== +-----END PUBLIC KEY----- +]], +es256_private_key = [[ +-----BEGIN EC PRIVATE KEY----- +MHcCAQEEIA8Bv35dnS289gK/lBbp0bj3LzFuvFvZowNClcUW4E84oAoGCCqGSM49 +AwEHoUQDQgAERm/e/qZmgIyVSksHrHh1lzf9F6WToTKnyWLfLdz8SZiaLVaI1GW3 +GekLwVlbKZUkmqUnKfrNs2U9DuJ3jSyX8A== +-----END EC PRIVATE KEY----- +]], +es512_public_key = [[ +-----BEGIN PUBLIC KEY----- +MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQB85b81Iol6jVQwVuusRR4SYHUN6oP +KhLWWyobYydIJ/VAmmEHg5Wi/VcYpP3/qlatMhuQPKjC/j4lfLal716byRoAcEtS ++V4w6yT1pIszwAovp8u4PJpEoe3f9JosV3Wvmzauk+o0uaW/cFiarb81hQDTD/Go +xFWEYfqgS1kv+NpEJAA= +-----END PUBLIC KEY----- +]], +es512_private_key = [[ +-----BEGIN EC PRIVATE KEY----- +MIHcAgEBBEIBEsogZYirhy12UPSwJx3ps/6j9fRHdIrqzUfz8uDz1xZ4KGm1uzyQ +oB355ifR/5IriiWzai1LZM+dyR1uS8wV2qKgBwYFK4EEACOhgYkDgYYABAHzlvzU +iiXqNVDBW66xFHhJgdQ3qg8qEtZbKhtjJ0gn9UCaYQeDlaL9Vxik/f+qVq0yG5A8 +qML+PiV8tqXvXpvJGgBwS1L5XjDrJPWkizPACi+ny7g8mkSh7d/0mixXda+bNq6T +6jS5pb9wWJqtvzWFANMP8ajEVYRh+qBLWS/42kQkAA== +-----END EC PRIVATE KEY----- +]], +} diff --git a/spec/fixtures/rsa.lua b/spec/fixtures/rsa.lua deleted file mode 100644 index 10a2ece9e..000000000 --- a/spec/fixtures/rsa.lua +++ /dev/null @@ -1,19 +0,0 @@ -return { - pub = [[ ------BEGIN PUBLIC KEY----- -MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALClz96cDQ965ENYMfZzG+Acu25lpx2K -NpAALBQ+catCA59us7+uLY5rjQR6SOgZpCz5PJiKNAdRPDJMXSmXqM0CAwEAAQ== ------END PUBLIC KEY----- -]], - private = [[ ------BEGIN RSA PRIVATE KEY----- -MIIBPAIBAAJBALClz96cDQ965ENYMfZzG+Acu25lpx2KNpAALBQ+catCA59us7+u -LY5rjQR6SOgZpCz5PJiKNAdRPDJMXSmXqM0CAwEAAQJBAJnwZa4BIACVf8aQXToA -JhKv90bFn1TG1bW38LHTmQs8EM9XCmghLWCje7d/NbUrUceotIOnjtv/xHTywGt2 -NwECIQDhvMZDQ+ZRRbbwONcvO9G7h6hFgy0okiv6JciZccvtxQIhAMhUTAWgV1hQ -O2yWTRYRQZosEIsFB3kZfsLMeTKjk8dpAiEAslsZ92m9n3dKrJDsjFhiRR5ROOMF -Gior7xBNZ9e+vdUCIDsjf4nNqttcXB6TRFB2aapsxbl0k58xYpV5LXJAjfi5AiEA -vRaSauBfRCP3JgXHNgcDSW017/BtbwGiz8aITv6B0Fw= ------END RSA PRIVATE KEY----- -]] -} diff --git a/spec/oauth/oidc_spec.lua b/spec/oauth/oidc_spec.lua index 7e576d640..8438a9939 100644 --- a/spec/oauth/oidc_spec.lua +++ b/spec/oauth/oidc_spec.lua @@ -3,7 +3,7 @@ local _M = require('apicast.oauth.oidc') local jwt_validators = require('resty.jwt-validators') local jwt = require('resty.jwt') -local rsa = require('fixtures.rsa') +local certs = require('fixtures.certs') local ngx_variable = require('apicast.policy.ngx_variable') describe('OIDC', function() @@ -43,19 +43,29 @@ describe('OIDC', function() local oidc_config = { issuer = 'https://example.com/auth/realms/apicast', config = { id_token_signing_alg_values_supported = { 'RS256', 'HS256' } }, - keys = { somekid = { pem = rsa.pub, alg = 'RS256' } }, + keys = { somekid = { pem = certs.rsa_public_key, alg = 'RS256' } }, + } + local es256_oidc_config = { + issuer = 'https://example.com/auth/realms/apicast', + config = { id_token_signing_alg_values_supported = { 'ES256'} }, + keys = { somekid = { pem = certs.es256_public_key, alg = 'ES256' } }, + } + local es512_oidc_config = { + issuer = 'https://example.com/auth/realms/apicast', + config = { id_token_signing_alg_values_supported = { 'ES512' } }, + keys = { somekid = { pem = certs.es512_public_key, alg = 'ES512' } }, } local oidc_config_no_alg = { issuer = 'https://example.com/auth/realms/apicast', config = { id_token_signing_alg_values_supported = { 'RS256', 'HS256' } }, - keys = { somekid = { pem = rsa.pub } }, + keys = { somekid = { pem = certs.rsa_public_key } }, } before_each(function() jwt_validators.set_system_clock(function() return 0 end) end) - it('successfully verifies token', function() + it('successfully verifies token using RS256', function() local oidc = _M.new(oidc_config) - local access_token = jwt:sign(rsa.private, { + local access_token = jwt:sign(certs.rsa_private_key, { header = { typ = 'JWT', alg = 'RS256', kid = 'somekid' }, payload = { iss = oidc_config.issuer, @@ -74,9 +84,51 @@ describe('OIDC', function() assert.equal(10, ttl) end) + it('successfully verifies token using ES256', function() + local oidc = _M.new(es256_oidc_config) + local access_token = jwt:sign(certs.es256_private_key, { + header = { typ = 'JWT', alg = 'ES256', kid = 'somekid' }, + payload = { + iss = oidc_config.issuer, + aud = 'notused', + azp = 'ce3b2e5e', + sub = 'someone', + exp = ngx.now() + 10, + }, + }) + + local credentials, ttl, _, err = oidc:transform_credentials({ access_token = access_token }) + + assert(credentials, err) + + assert.same({ app_id = "ce3b2e5e" }, credentials) + assert.equal(10, ttl) + end) + + it('successfully verifies token using ES512', function() + local oidc = _M.new(es512_oidc_config) + local access_token = jwt:sign(certs.es512_private_key, { + header = { typ = 'JWT', alg = 'ES512', kid = 'somekid' }, + payload = { + iss = oidc_config.issuer, + aud = 'notused', + azp = 'ce3b2e5e', + sub = 'someone', + exp = ngx.now() + 10, + }, + }) + + local credentials, ttl, _, err = oidc:transform_credentials({ access_token = access_token }) + + assert(credentials, err) + + assert.same({ app_id = "ce3b2e5e" }, credentials) + assert.equal(10, ttl) + end) + it('caches verification', function() local oidc = _M.new(oidc_config) - local access_token = jwt:sign(rsa.private, { + local access_token = jwt:sign(certs.rsa_private_key, { header = { typ = 'JWT', alg = 'RS256', kid = 'somekid' }, payload = { iss = oidc_config.issuer, @@ -103,7 +155,7 @@ describe('OIDC', function() it('verifies iss', function() local oidc = _M.new(oidc_config) - local access_token = jwt:sign(rsa.private, { + local access_token = jwt:sign(certs.rsa_private_key, { header = { typ = 'JWT', alg = 'RS256', kid = 'somekid' }, payload = { iss = oidc_config.issuer, @@ -124,7 +176,7 @@ describe('OIDC', function() stub(ngx, 'now', now) local oidc = _M.new(oidc_config) - local access_token = jwt:sign(rsa.private, { + local access_token = jwt:sign(certs.rsa_private_key, { header = { typ = 'JWT', alg = 'RS256', kid = 'somekid' }, payload = { iss = oidc_config.issuer, @@ -142,7 +194,7 @@ describe('OIDC', function() it('verifies iat', function() local oidc = _M.new(oidc_config) - local access_token = jwt:sign(rsa.private, { + local access_token = jwt:sign(certs.rsa_private_key, { header = { typ = 'JWT', alg = 'RS256', kid = 'somekid' }, payload = { iss = oidc_config.issuer, @@ -160,7 +212,7 @@ describe('OIDC', function() it('verifies exp', function() local oidc = _M.new(oidc_config, {}) - local access_token = jwt:sign(rsa.private, { + local access_token = jwt:sign(certs.rsa_private_key, { header = { typ = 'JWT', alg = 'RS256', kid = 'somekid' }, payload = { iss = oidc_config.issuer, @@ -184,7 +236,7 @@ describe('OIDC', function() it('verifies alg', function() local oidc = _M.new(oidc_config) - local access_token = jwt:sign(rsa.private, { + local access_token = jwt:sign(certs.rsa_private_key, { header = { typ = 'JWT', alg = 'HS512' }, payload = { }, }) @@ -197,7 +249,7 @@ describe('OIDC', function() it('validation fails when typ is invalid', function() local oidc = _M.new(oidc_config) - local access_token = jwt:sign(rsa.private, { + local access_token = jwt:sign(certs.rsa_private_key, { header = { typ = 'JWT', alg = 'RS256', kid = 'somekid' }, payload = { iss = oidc_config.issuer, @@ -217,7 +269,7 @@ describe('OIDC', function() it('validation is successful when typ is included and is Bearer', function() local oidc = _M.new(oidc_config) - local access_token = jwt:sign(rsa.private, { + local access_token = jwt:sign(certs.rsa_private_key, { header = { typ = 'JWT', alg = 'RS256', kid = 'somekid' }, payload = { iss = oidc_config.issuer, @@ -236,7 +288,7 @@ describe('OIDC', function() it('validation fails when jwk.alg does not match jwt.header.alg', function() local oidc = _M.new(oidc_config) - local access_token = jwt:sign(rsa.private, { + local access_token = jwt:sign(certs.rsa_private_key, { header = { typ = 'JWT', alg = 'HS256', kid = 'somekid' }, payload = { iss = oidc_config.issuer, @@ -256,7 +308,7 @@ describe('OIDC', function() it('validation passes when jwk.alg matches jwt.header.alg', function() local oidc = _M.new(oidc_config) - local access_token = jwt:sign(rsa.private, { + local access_token = jwt:sign(certs.rsa_private_key, { header = { typ = 'JWT', alg = 'RS256', kid = 'somekid' }, payload = { iss = oidc_config.issuer, @@ -275,7 +327,7 @@ describe('OIDC', function() it('validation passes when jwk.alg does not exist', function() local oidc = _M.new(oidc_config_no_alg) - local access_token = jwt:sign(rsa.private, { + local access_token = jwt:sign(certs.rsa_private_key, { header = { typ = 'JWT', alg = 'RS256', kid = 'somekid' }, payload = { iss = oidc_config.issuer, @@ -294,7 +346,7 @@ describe('OIDC', function() it('token was signed by a different key', function() local oidc = _M.new(oidc_config) - local access_token = jwt:sign(rsa.private, { + local access_token = jwt:sign(certs.rsa_private_key, { header = { typ = 'JWT', alg = 'RS256', kid = 'otherkid' }, payload = { iss = oidc_config.issuer, @@ -312,7 +364,7 @@ describe('OIDC', function() it('token was signed by a different issuer', function() local oidc = _M.new(oidc_config) - local access_token = jwt:sign(rsa.private, { + local access_token = jwt:sign(certs.rsa_private_key, { header = { typ = 'JWT', alg = 'RS256', kid = 'somekid' }, payload = { iss = 'other_issuer', @@ -334,7 +386,7 @@ describe('OIDC', function() stub(ngx_variable, 'available_context', function(context) return context end) end) - local access_token = jwt:sign(rsa.private, { + local access_token = jwt:sign(certs.rsa_private_key, { header = { typ = 'JWT', alg = 'RS256', kid = 'somekid' }, payload = { iss = oidc_config.issuer, @@ -350,7 +402,7 @@ describe('OIDC', function() local config = { issuer = 'https://example.com/auth/realms/apicast', config = { id_token_signing_alg_values_supported = { 'RS256' } }, - keys = { somekid = { pem = rsa.pub, alg = 'RS256' } }} + keys = { somekid = { pem = certs.rsa_public_key, alg = 'RS256' } }} for key,value in pairs(params) do config[key] = value diff --git a/spec/policy/3scale_batcher/keys_helper_spec.lua b/spec/policy/3scale_batcher/keys_helper_spec.lua index 32a60811c..15d3f8586 100644 --- a/spec/policy/3scale_batcher/keys_helper_spec.lua +++ b/spec/policy/3scale_batcher/keys_helper_spec.lua @@ -2,7 +2,7 @@ local keys_helper = require 'apicast.policy.3scale_batcher.keys_helper' local Usage = require 'apicast.usage' local Transaction = require 'apicast.policy.3scale_batcher.transaction' local JWT = require('resty.jwt') -local rsa = require('fixtures.rsa') +local certs = require('fixtures.certs') local access_token = setmetatable({ header = { typ = 'JWT', alg = 'RS256', kid = 'somekid' }, @@ -12,7 +12,7 @@ local access_token = setmetatable({ aud = 'one', exp = ngx.now() + 3600, }, -}, { __tostring = function(jwt) return JWT:sign(rsa.private, jwt) end }) +}, { __tostring = function(jwt) return JWT:sign(certs.rsa_private_key, jwt) end }) describe('Keys Helper', function() describe('.key_for_cached_auth', function() diff --git a/spec/policy/oidc_authentication/oidc_authentication_spec.lua b/spec/policy/oidc_authentication/oidc_authentication_spec.lua index 8932af255..2cef16549 100644 --- a/spec/policy/oidc_authentication/oidc_authentication_spec.lua +++ b/spec/policy/oidc_authentication/oidc_authentication_spec.lua @@ -1,6 +1,6 @@ local _M = require('apicast.policy.oidc_authentication') local JWT = require('resty.jwt') -local rsa = require('fixtures.rsa') +local certs = require('fixtures.certs') local OIDC = require('apicast.oauth.oidc') local http_ng = require 'resty.http_ng' @@ -12,7 +12,7 @@ local access_token = setmetatable({ aud = 'one', exp = ngx.now() + 3600, }, -}, { __tostring = function(jwt) return JWT:sign(rsa.private, jwt) end }) +}, { __tostring = function(jwt) return JWT:sign(certs.rsa_private_key, jwt) end }) describe('oidc_authentication policy', function() describe('.new', function() @@ -92,7 +92,7 @@ describe('oidc_authentication policy', function() ngx.var.http_authorization = 'Bearer ' .. tostring(access_token) policy.oidc.alg_whitelist = { RS256 = true } - policy.oidc.keys = { [access_token.header.kid] = { pem = rsa.pub } } + policy.oidc.keys = { [access_token.header.kid] = { pem = certs.rsa_public_key } } policy:rewrite(context) @@ -185,7 +185,7 @@ describe('oidc_authentication policy', function() local oidc = OIDC.new{ issuer = access_token.payload.iss, config = { id_token_signing_alg_values_supported = { access_token.header.alg } }, - keys = { [access_token.header.kid] = { pem = rsa.pub, alg = access_token.header.alg } }, + keys = { [access_token.header.kid] = { pem = certs.rsa_public_key, alg = access_token.header.alg } }, } local policy = _M.new{ oidc = oidc } local jwt = oidc:parse(access_token) From 46e8ffeebb3ad0642fac702277ecc0b007b0d3c9 Mon Sep 17 00:00:00 2001 From: An Tran Date: Mon, 3 Feb 2025 13:54:24 +1000 Subject: [PATCH 5/7] Install lua-resty-jwt from source So we can use the fix for authentication bypass. See: https://github.com/cdbattags/lua-resty-jwt/pull/62 --- Dockerfile | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 359b85b7a..febc053ae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -47,7 +47,6 @@ ENV PATH="./lua_modules/bin:/usr/local/openresty/luajit/bin/:${PATH}" \ RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/manifests/pintsized/lua-resty-http-0.17.1-0.src.rock RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/manifests/kikito/router-2.1-0.src.rock RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/manifests/kikito/inspect-3.1.1-0.src.rock -RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/manifests/cdbattags/lua-resty-jwt-0.2.3-0.src.rock RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/manifests/3scale/lua-resty-url-0.3.5-1.src.rock RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/manifests/3scale/lua-resty-env-0.4.0-1.src.rock RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/manifests/3scale/liquid-0.2.0-2.src.rock @@ -63,6 +62,14 @@ RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/man RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/manifests/membphis/lua-resty-ipmatcher-0.6.1-0.src.rock RUN luarocks install --deps-mode=none --tree /usr/local https://luarocks.org/manifests/fffonion/lua-resty-openssl-1.5.1-1.src.rock +# Install lua-resty-jwt from source due to Authentication Bypass bug +# See https://github.com/cdbattags/lua-resty-jwt/issues/61 +RUN cd /tmp \ + && git clone --recurse-submodules https://github.com/cdbattags/lua-resty-jwt \ + && cd lua-resty-jwt \ + && git reset --hard d1558e2 \ + && luarocks make --tree /usr/local lua-resty-jwt-dev-0.rockspec + RUN yum -y remove libyaml-devel m4 openssl-devel git gcc luarocks && \ rm -rf /var/cache/yum && yum clean all -y && \ rm -rf ./* From a08524ed3d2273ccaf3f736217100a1aa85c2f97 Mon Sep 17 00:00:00 2001 From: An Tran Date: Mon, 3 Feb 2025 15:44:09 +1000 Subject: [PATCH 6/7] [build] Update lua-resty-jwt to v0.2.3 --- .../gateway-rockspecs/gateway-rockspecs.spec | 4 +++- .../rpm-specs/gateway-rockspecs/rockspecs | 2 +- .../source_rocks/lua-resty-jwt-0.2.0-0.src.rock | Bin 63375 -> 0 bytes .../source_rocks/lua-resty-jwt-0.2.3-1.src.rock | Bin 0 -> 89161 bytes 4 files changed, 4 insertions(+), 2 deletions(-) delete mode 100644 dependencies/rpm-specs/gateway-rockspecs/source_rocks/lua-resty-jwt-0.2.0-0.src.rock create mode 100644 dependencies/rpm-specs/gateway-rockspecs/source_rocks/lua-resty-jwt-0.2.3-1.src.rock diff --git a/dependencies/rpm-specs/gateway-rockspecs/gateway-rockspecs.spec b/dependencies/rpm-specs/gateway-rockspecs/gateway-rockspecs.spec index b29988b2c..4119fe29c 100644 --- a/dependencies/rpm-specs/gateway-rockspecs/gateway-rockspecs.spec +++ b/dependencies/rpm-specs/gateway-rockspecs/gateway-rockspecs.spec @@ -16,7 +16,7 @@ Source0: licenses.xml Source1: lua-resty-http-0.17.1-0.src.rock Source2: router-2.1-0.src.rock Source3: inspect-3.1.1-0.src.rock -Source4: lua-resty-jwt-0.2.0-0.src.rock +Source4: lua-resty-jwt-0.2.3-1.src.rock Source5: lua-resty-url-0.3.5-1.src.rock Source6: lua-resty-env-0.4.0-1.src.rock Source7: liquid-0.2.0-2.src.rock @@ -80,6 +80,8 @@ rm -rf %{buildroot} %license licenses.xml %changelog +* Mon Jan 03 2025 An Tran - 2.10.0-2 +- Upgrade lua-resty-jwt to v0.2.3-1 * Fri Dec 02 2022 Yorgos Saslis - 2.10.0-1 - Minor version bump to clarify lua-liquid dependency bump that already happened in 2.9.6-12 diff --git a/dependencies/rpm-specs/gateway-rockspecs/rockspecs b/dependencies/rpm-specs/gateway-rockspecs/rockspecs index 57caff8c8..437f5e01a 100644 --- a/dependencies/rpm-specs/gateway-rockspecs/rockspecs +++ b/dependencies/rpm-specs/gateway-rockspecs/rockspecs @@ -1,7 +1,7 @@ https://luarocks.org/manifests/pintsized/lua-resty-http-0.17.1-0.rockspec https://luarocks.org/manifests/kikito/router-2.1-0.rockspec https://luarocks.org/manifests/kikito/inspect-3.1.1-0.rockspec -https://luarocks.org/manifests/cdbattags/lua-resty-jwt-0.2.0-0.rockspec +https://luarocks.org/manifests/cdbattags/lua-resty-jwt-0.2.3-0.rockspec https://luarocks.org/manifests/3scale/lua-resty-url-0.3.5-1.rockspec https://luarocks.org/manifests/3scale/lua-resty-env-0.4.0-1.rockspec https://luarocks.org/manifests/3scale/liquid-0.2.0-2.rockspec diff --git a/dependencies/rpm-specs/gateway-rockspecs/source_rocks/lua-resty-jwt-0.2.0-0.src.rock b/dependencies/rpm-specs/gateway-rockspecs/source_rocks/lua-resty-jwt-0.2.0-0.src.rock deleted file mode 100644 index e4ac15ad03c5e3794b37ce0085c83d3631f84121..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63375 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 Ht8f1YXPmhi diff --git a/dependencies/rpm-specs/gateway-rockspecs/source_rocks/lua-resty-jwt-0.2.3-1.src.rock b/dependencies/rpm-specs/gateway-rockspecs/source_rocks/lua-resty-jwt-0.2.3-1.src.rock new file mode 100644 index 0000000000000000000000000000000000000000..3f3368191837d563128b4c4a7f266bb1f9c0d539 GIT binary patch literal 89161 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 z zv-+b6(uMVr)%(R}miaFB2qY_l-7lP(bw|Teq)IXlm9V3`yvG&q6*$duBo0*7U$VlK zlA_?w?P3nawBk2SEQ?)kx=#K|@|!TTM{NFG7`qp4!JV!%o^$bUg%Wu&n;%A8op4*- zCq+!nA=EWin2oVDXWB)x3;5alyM!KOrJs7!W>@at-xTBcqT=Mck>Q(mX$e)3&s8X| zw@jEC@vWkEt%z`SBid*$vrclm&p@)+k|NO5Qws_v1|XT&DW=n zJ9A@MDx4@kmC1O(F0NSrQzm-SBwn#}YkzKagy-a!`ox9pAUngg=P@MP%aaC78L7F9 zF26vCBgM$ogpy+>6u!Ce?fyxa)F}2QYAtjTZaOn{Dk)7Khaf(c5`j;?{vRKpWTdqJYTS5 zy)Zy;I)hg`s8&_`b)qinmM%#>`Gh=z#zc7)O>OnOBZ&c599Bow9I`B}lnHhu(yK6b zgHKuW)3NalFKQUsqkN4?#S`auDNsMlj7PhAse+9|K$B|@%An^c{u+4C z2gfa8FL_CEt2dJxpz(}FVWGp~^n}%D;`)uqO$n>}+!E}c2jf0rR`=G}q5?n=a{xeO zeQm(%N5n*l94KZ^?vQ=P5B``XO`~Zs7*_~JOsU!>1A{dIz4HkB%@3D-xy)L1I7Mi0{+`WC$4%j{-aHGv zpDT~+@+e7e0ax|OM9-_67M)Q`AQG}SFqSg4D-S)N>#;qT1j~a;tsCI&_7cWMwG+EP zyYx1BP(oHe+N;c`zeiHYo?v(iO)HRW3Qcz_c$;pz`}#D<54iJP60I_~tw9W)dpZ|H z8_FGDN}%1$&bRpeI}kwu{OhG=FQobJ5C8WK25bkDM~W( zA(FYJrN@!~CSMzLgC)c=K3G=4*H^;kx2}L?b*!$VLqe>rt0if;+BoQcgkZf#h9=B! zO{3%Q^}k5d{LepE6cG@X5uvj&{<|OQ5Fv1l1GFc3#*4O>zq6V}4i+*a~4d5;lg^M7AeYzo<@iZL6s^O`rR``ACe6kfloHwc!nkJwT2Ud?3 zDiAt^-fQM261_&HuIvF(968hezT}=4ee&x*G zbS|w@fL!TmmILf^=iJ)}rOqsYd|W|n+I5^WWzIXcLaMDlUZ|H{s9;I$`P7zl1sXi#=pU1`8lULgy5S&`EpTZccU~_iU)sJE~}s@+uWwRQ6}dm_o0JH`mq(p4jLyJ3Qd0 zU(b#4di3X*n6vBq)k(Im3u}y8qnP@hKCT%!S z$~|qAwrh})vV!RRR$TrTRzxsn{*y?`5?I~DOs0a^i>Nsr)NFnzqSYc1M%x8BwWJ^` z__G)FK(n^5wey+QZ;aEI&w0ILsabxYI?Fmh0Bjdc00ra**QW7{1eg-S$$<1H3ILPM zKFhcqte)fyC8<$y7*41PDZ7;dMwVgTz*huCA)hN3D&!%iHRu9Dz#Y$Ajm1q=)goovUUvYe9lh zfFOy@Ywkt(0+4_xR)AP4`={-tiiigTm{)QxVjs3&M_pX2DdHZ=kej4C&$kl@H@C(+ zi3f~i=*<_Z^fl45Lx^6wsl#DR6hlI;`+qvEqs)bl$X-)izfT%o`G||^B6)@*f}r2c zf{LyrAHWna)s<8q1r_5@%HT8bEM*}N*B#mzmRTcT@Y!l#5v4PGIIXaRuw%GVG5JiAB#>%G*<%P7?Ot`<6h z{5_ibSHz?y&G_a1kobI19EyzU`*BR9l{$uMR%jSaA(@tB>2dm#u@GY65ZIiM;8N;zh$3fen zv}j~ox8&_hdy2|$s1OHIEv2F^f!HDsxc!c~2hxRI*!RAGFyV$WLe&m(<-xgjINN7& zB?cNg+nMOnO%{opR2+w}NCH#PgdSWu%Q59{KF!g6ttrc~FdvgfR#f$r=9_T7$tC@ji5sL9oIp(VZ6w^@uyAL;qym~*qEnHThSseT^4E`I8U6}E48+gM2H zihas9I9=t_#anUS#vXj>C#e<15%1bFIs?9aA>J>tumflGB-1yHOBJJL=^u9d_Xx1v zOAtFRNMn1FswF7YD9$5KZ(Z5fKk0LlF3nTON>FJf!HxR|bb1);#$c_&N_O1ExrRs+ zsLsUNiI$iC6#sg~2}>kXX+!Prua(nTiYo_pZ}P4^0S#fAHoCnyy(MQhtnvQ|5m{mI z7!j+731sWjB-Fymh0w*E>w%CD6%QIavL862HQ}Pl#n3vyNNFS;kpeHAKa?nGS3_MT zt$M_Yx#y#pLfcG7UPb5kF+Qqy`Bf{&w;W;jhi!AMbt9)V(=Jt zoKK!fa)Gadw$8<{XDo=((?CV*>TN)Pn4WGDxU3sa98U<{=Sz;o^sBszn--Poz_txw ziuHQ%RJ7b_tOB%RGzPyYiB0()A0(^c!MmA%to(T1oyOlaGvO!s`r>@~52l!U2SK0a z_al4r4R-%73HtYA``{yHb#mLig+FbW%<#k6LD_yy!HE| z$ZX+1ElbT z#ce2vO}WBxL}P`POasFNE+la{ga>zu6=0g z&c#$W#6mGqIcl~xzU52z2D_#h(mhq)HD?rEdA=krFWrh~c~^3jrM>qZS(oldTvXQq z?t-kf^62jdR;M-Y?6w6ZfGIkPLX-UKOu<>PzVL=^k*A%1j z@mymhk2IqMiPb2^v9%x6aEVkZ8Hn+N7aKY?7dmyhwN%p;BrNdi2v7_w%wa!-FC-0) z3>3+r)N&q8+zHG%CiM8s9i#G|cKBW3_s4}l`8g62vJBM)UXh(B47WX`Obt|fn#FCw zAy%g6=0x(;ZZY=?k`_nxFni)u;LIIPAp9ry!P=Q>bn$k&WC5?x;jIhrg z&joJYkO)md1$3Xcndyi1eONQFb0n;?)5RL27SGYB0}Ac;sCW0LS~y+CxR|dj{5ni~ zT1;#FB0i9w+5BM|+q)r1?Co+2a=TlkZ~@F(6Dz4^utYl&+E+Y zQlaI-WC&vR$Iz z%9)JW;0u+h4du|bD-|VrcIJfRbJohJ`?=z&D$=m?K(5%6TVID|B^DgMO5c=+Wz**k z>r&hrx0^D&;FNkodI(;N2rC4EjHZ_=GR2y5+^}X+i~3SLqWShC_AuW&*lo!*LgNw4 z=~nfK$xEbc<3LKFLxfdAPUp1?t{eYX#Brg0WC6isrTCod*AEtz_W>w z-aoEV#C0YHGGG9BWe08=z(7!hh```WJSXK2LuMU`DC`|zxX9<|cD^>PTQ1e>PWa!h zgBYTb)?6b^fSfirM@QR0paJ|+MYwjLPJCW7y~S`#9xXT#6I^om10G~d{0CN&0Hy8`HgWf97Zd6*%7#c7j&#$qtuybwQ ze-N7=xks@}oRt?R$tG9}GQpje zEd@0;y+Qdj3J?nR-E$3YfstJ4N6#-AxoJ*&`oaLS+cpbc;k{h^PZomSGTS}2er-$Wd2}kDCTt=h^sB3h{+MXEs*&NexvqdA*3HHjq z&W|qhcx*CxsiI#QWCWIv?;ZQcCO)->$bq?mZ9bsSuThuf%pA?O zqNAtPvNe@IKVLJ@2FPx{W*rcaf{qCW?5?G*Aq3hBs)PQN0g@vukgRI?_&HZH*|?^! z^FW&%I+b~nQY##Un>IO(O59QT@YhlEL$PDmodqO89wLUulnmD`?IBp}Ukob^$`5Of zgQcNI`rH9cAWq9mmxXvVpxriBCKE3Y9hH^g?S#o`uLisQ-1u%^4HEO>RT9HnmB(#LJ0=m;fNc+Y#RcFZ#G zPKE4gBvFZQ(q!44(}jZC6%Dp5mmY|Cs%p=R-H+QYHM;E3V00~ABc5LSzUSG@lA`qZ zMv#*_w*X%?$>WIAg8VvrSU{a7C`@3*j3&O02=Uh>0tp5NSr!wGDqk+O2sU+6xbSk{ zdM0vhEIScm$c_47NL_!W^bW2)90C>I`cO>=45jrmf+Y0QIb~R}71@gijIcW<=kQOe z)Xb9u#e7xRQMlghUoWgx~_QvFjlH z^Q@r?-rqv_$K??@RtHc{e|^@TpS95myl>^axIrl0D@yK0kFd&!{G4A%mT+Gq0RThg0n z>(h0unbr2WORV7dJ+eGZ!f6d#YXKE=d7A-T>bU!()a2pGi3*g+eDvwfn=i8-OOn z-41hQZQLiG{(nx`wSFe*A^-ODHs6cpzk7N;dsZgKe^j=gY5!M1z+A)p zZrVG)>+RGbTnE=8Xc#N3L+`Z+TS}oi#cIEVmI|7`o^;^~Ya`(fBie6H9SX46&T)RA z^6<*f>&RDixX)5SU^dEcssSQkroi-3k5)7$I7_=GMBi7Wxtec}<_n3MpIU+EO-E#2 zEX8qGdVsBijGoP(*1MJyW2nWnk+WFa2m`KRY^CR3^OF@oNYWEA0V{3>QWNY zS*Gm5oZkGQ!BHi1k`4xF@i1f}%hpu!%s(ag;@b5G{V9Nl{uZ$e+XC2L4YGMPF=JnG z6cT=aoov>Y{Jjpa>2vY@Kg7N*G+LTOze6tCw}<^Zc=mt8?!Rxwe~rC~5>Dmv2q91J zk>^z?K``|r`B&RNM+W_2`eX?JF;NBpUmm7ORP3H~>EE2Q%0H((e0<>YCmeMd9=xqA z46aY2#5VkGKkRN)wo^hRLKuaiVd&QRs4bmJF-HJJNQVtZ#5e=OpvZ;gpIb)9r77DR zCySI7!~&3(-y_rGj7uWivXkreNkIN|za_ydHbX=gIu*>Gfz@6kxU83DdTX=aciNDS8omhbk#f=CE8N;ca~}r(QLaz$Z*ixY6_Km^398)X4z~M zf>SCp*R(bkh&H9|29iZk5E<*7bj>V6oQkso3)IkYp$Loc&mfy_q&@_syFnVL;p*TE z%NE+vak%J&@WrHX)r=l)GKZYE@f{}WYIN z;S)FuxXBo7vN-W4G>Eti!64(QWDT?C0bttFkYygkp<-p#hP^9H#&ofd!CAIj@mTlQ zMAl+$4X*}R`@Ep6rrMcW921^(xBQd5mN;H`7%ygLW0AG`-OCuF$&Tx99^8=M9TeTB zO=#J>w6i#5D%b~E&J`E~(eMc!lwlIoB}qqEXVsTPMpYL}_*Hj=AZ8CT&lapMBi-0v z|A7Le`}Ht8zxU{m@6yLV-lzW+3XIm5iz95@p?0$ALO@WBR{{#tHpY7lZ;SLmqC&sC z9zBSz%eXny%9)r9VN!j)d*BPxuDyUOEj7qs2Z?p}@*y?YINmXYTB!%tA|^L=^U)KT zA##SEqn&IvXuSpISlRkG=po?ItECR`ayx;u>qvzMQGm6X&Zy@;qu^q|0sT>eZz^>T zbQ6PD`cUtXPn1bvJ5&@9mIj(aSH}6Fh;(3rfmP$28{K;_4}y=ef(xC~+LU`usjK7= z&22KO-JssKaAgDZb_Iw8beLXFm?-Z@nm~NzCaER;Tu>XB*CUxFER{}3OO#EEapN^y z099esJ28%JB=`!pat$5n^MUUSX76``6D3rQSG`ge&#ZDrDye_xlj`1xIviFIQ#UZcrY^gYcK3l2Y65OEMFU|b34~f=@Meu z!8D##nCE5O^pg<;&GUCkqfrJR>F=3pA&6YC$$9{G7-vr|uA3#&u7>6AoHs)C0;-A( z?d6%%0FF*0Seu%;bH;X3uKp;~0tM(h-IB#hpDa~aMgvn#-icDp(o0Qj{OU?3=J+@;RI-6@3bkmxZ`O+qr~ItK+6@tj0uOTDQ13rJ5w%;+8@QCOl$eHx}9w zO$eD%%r2HHe8k)Swh3H}{!fG#t|8E6=v zA=KmrX4UN{00sj6GOQ6I%SN+1HuiPa!fhG&M{x zowB2Be62#(lkVtPU7TABvWuuc1FXJ@IUYB@=kJM}M&5Z44WnxOw77drpo61-s@S~D z+!3V0-zePHkVDt`u`vzvb;ESE=u&t!pqSK<>G*rgK*efvmA1!KlbzW8SXghzxb#%u zaXNUTsFkp!ccg@~OO`El=2Xyhs!TWG`Vx4SK4Q+Xr2RO>yRog&h_}@;;{iepR*qpx zhO%q@QfxzF^F?tfwp#6F$a1MFC1IQ&iQPb*rSBz(KbucUuX0$K@qz3a?f?=l)ja4gFuUM-i{<+O6;0 z8s-~Q(EmeBq4y7)RMYK_f$}K)v)MJZZWu^MyoKTpa5$F?KngqgGZC^7xx#p4$4f`E zrm5{(#V^Q-w*@PjM%!Ess3zUhEP{Hdgn@ltCA;w}@`-)Vp%C)GN>KX1@JK$`CU*EM z2&SIqC1P0mD$0{L<7~NmW#nLCJFiq?D@S!%=Lg=Ky^g!eqnExKtkvLiN?0VcvQaiY zl}}d4W&jf3@*iVSOPaQ#LwBT&DwcdXV{*Q(XNL?&$o;$sKUCx>xooHROm=P0U~>IBMz^IY?}>Kt!pG+^N#e~EAaiCb+t z@#%54?^FmJzvQiW4O)x1{npsoS`de570gQp?C!)n|&edd2TI`BUgI(tV8R|990f6&*p`N=k2 zXpRv4-4Z-B55bkL?Tt$B^yMycc|K^_PCXa_ zydKai$M|S}hCQjLk>x)GkoVA!(w|2>+Bijqb^Si{17iWi1Mul%o&|qBQOA`46+g z^+oB9%VS5#cxlWBhOVB>(=KtMNeBqCzq#^dZxxDN5N(b%f)Vi=-d|v{AoA zXf&4$$e567NbVvTWfy64UrZ>6bdh3AaKj}1c_TxBc1=u1?`=i`P8aR`xqi)#v~bi! zPS58QENQKWLPU+?fp-zP10(+AtG#N(w?y!sQmz&h?;cm&u`kavv){5+t~J8wbx|`| zk}(=jB>GeZh(Nqrl$jS1(T=oag;41{ z_1h*m@AvwpFsfFMv3t-9W27#LC}%L&$ujL&9nD7c4AYb8ZCZi3(F|-bnFf4H!R@%L z#!s~^n7CUG;PU8Br)WAKUm}+dlDpu zH;WUce9h$gHz)3*k|GQg*tw>nUnWK8mC+evp6V2 z46`zo^T;rIFWNjl@EM0-DT1rlS=}D5-=9P0@q)CpiWEUIhUu51CSJQPD1A~wmkuE2 zT1}9_?yf!+lMQFiA;4!kj#+jS$h%0B>2?iBwO<pkxkRXur` zn+@7jPH>@utDaJ3IZPFtJMR3cfAiXlrU_cwAJlB$c2Prey)|&@;Q(``Xs{J0uJ#tU zWQ|Q@vBaG`7J>c@od@B1DzHj+MX7Vra;MP<>@12Ho%2 zbGZp2CK@4z5@{$HSB*BY)n%#~_T5!t;=OSGLm^cZRG9cl5fj=Fy^kScEUto()JXNo zIL!sJyg*gADE>2|N40{KRIcmVIWG>hTb^H=-UbJZb*3DKl_qLH$QA}@q%r>U=mg)m z=RvUgI=2+Ge`Ayo{pvU&1qjD}8mDDn7Z%$Cq^Xmkti2H2yROFpgiYAsLjJdT*7o@n~+nNk+d{W zCAnsVaG|(k`501bl#{_D;)nDXElFD#j05bf*n)8s{zJn41$9i{P2%g%z0+rDg&dRb z$tWS2s{3lAWJ*M11(Z<}xF)GnA=P%;S^YM-BH=tlg$|;uW!w^`6?Rw^@Xhu)Y@--! z`RdWU+g`%O0Y3RP*JNCAu0G;u(9g@%lkQwW>fjM%AlJQfy+6gl-FzUN$uc?#KeVy& z3E3pCM(XPmH>G5k1TPc>*90FPi&`Fsy*n-ZEF>=8`Z6hrz&PLj_*fXD`cZJ(13-u3 zufUb??ngt#VQ3B4`->K|{b{ae-$_E)zN+r^Nr(p{GY+nJU|L+6O6uXVAlY8b!1$2@ zdr2!-{rGHJi26LkxicS%A9JWIm8ck8;TRDke%1d7N!^Y)ejl4= zZ$~0wzC@WZ)4C9vK*Tb~986>UeL!>|G+XTOBFJouwKp)#T}nYJPvsHr41_EHmy$Jb zc)6t#i82Hi(dOQWYsR$@51AQml zCOri@vMsKl2ci*xlY$~=33Fb?D+rNUl?xi0qThW|f#0cFhUb-7NJ(LrmL>Rf3{pQr z-qc!MIA16!n!0emt*5bAHdZU=f|glr63RP*w~z1= znP#+{$-1+c;~$}c@yzUNsJ%=tz6PuR)7e=-WwkXA|DjX58mswPfr;V{8ONL<%p1hnOB1+(!%CB1ej4LO$Jb>?HV&%Pq z5;c-zFV-;O3R%2kZo8=_1-B#q(Uuu){7Sr;IlL&4nJU@dyZF=H&CLmQGD6>|ZEz-H zmreyVv*9nSSGA}((!M5Idb1`)?+_^N_$an!9Khg~PvGoJ>5G!3^ztOQxtItdA_IKd z_sxZfeKg5=X>GtY6YY5LqP*d=5f|RhLO<8o>KLtIxx@dR>@WoR&E^PYgFdeu=in82$;b^k7`17cI^0EVOTmDijd>B@Oq4!JMv=3N5rpK450H_iN+EREjOVEG z{Fpn{Lv3>^iZa7s-IftrJUzl{KPGtLk$u>~rYJeA$Z3*Yrsu#~)UcdXB{DV+<&Izk=qFUF(Xl)2d?NAblrmf)u~b zsVR_uj@vB;qf!RzNs6@T%k0Y0Pe*iB4#G@ALcRv9nXx#sQYG^_R2>1y{8Ud@nK_x{ zfY;TM-U-XZj~vf95{2;ue7W@hG8bmB|J94b@26wQkcCDF3((_7{g)WUZ_Di8JkqZ5 zz2CkD2k-KB&W0kPqI}R$#emfyxo|>PV8@4ihL-NTm42{7eRn@vXX#yESy{ADG5#@e zP-DvwA|&`_ce~w_t3}GwPLy`R%P%vSU52$VuaJ2^gvbH19k+gC2e0fGY~!Sa|!?1G;lj-K*m;0a828 zL(7tx2x%c0p8o6or-I9v&pYeMrEPYW?7Nj5GV+K@$fv6`jhr%~vfhK^tIcV+M-EWM z2ex$L0S3$=aW7#NOntl&?y*0uI)OS?ohJ_wHM*J@l?HBZk?304QXixiGyOXFPp zxP@!x6il2$USy~gl@;-)c3vq|h{#l$gvf5GxMI}@OpPH#V2(>=KvXu5>s0SDJflAn z^%74daQ}Gs$%V$rT7Ji?-em&TQumeoxl)gYx_gXMJ1+|5ukNKkPO9xP#+_k-Azqkw zl6rnpj#e60<JTFrfgojc-nBY07qS1T?-Q?YV>GRoCw(*$Be2mFgHRMsnoSDG{+yM+8u1DF?j{ZK9(huPh6QU(kZpd&ZFp#xro{~g|$HI?FvVZ@jHR9yLMv0Vo&eeiiHJ$+TlI6VkusorY&em?} zt<*bd<86LSzN|#}$7_Si@oCFz$|%X6zMs`)nbhs2t8Ft3_1-OEyCWLELN$=qc40Gf zW`U-yN@&j}kbYDwg43f;Sl3C!)ZS&;=jdw3PrJ_~bK%0WA-5pt8zJUou~3i zoMHmsE9sir($A#5rVH@%ZxxMrA1Z43%NOyp70>OkO{unA>Ty?%ef9Nk2Ho?Zo|D#{ z11F;raNqN%$isgo<6qqFrYcf#6_OYY2Q;g8-e9m#h*lM#$gN2`={Yp0VtitTCgnWIWzWU-h6#7AkP!@<@wB z$cE5HW5b73I*6F@0^o>{oSb&ZtdV)@&pCD052}SpqJ_i9g+HXQGI13@620>@NL4tk zMdOv0qBp_dh7~O$l2(}dVcVS-l$b*`{@@fWsyz~#BBK#)n4UOWe$|1Ku;-GDQFAQ2 zYmd(+tiR}&1u5m7Kh=1`t=16-#rEjZXiYE_p2G&aLsaJk30f5=j2NnX@gBNC;vKU@ zgmjbcxV@^jtI0~^{C6`+ycJLqm(`WvhpLV z*MhiWIusg@no@K0k@;awMxvQ<2Ch0Ut{H=T%38_V3Ynya0c`H;w^LBKU5V%O-V<%5 z0|qB!u?bu8#)(CqyPI81=%S&ub}8NBCxN?0FcsQz#{6&z;nljS(vET^kq*eYPRVi< zqJ!_8Kk1dFsV^F?g?tF*sbq6z7;ZOR8q`j(C{y9c8y?4NIA@efuvwQ+efyg z`d=y!IfS;i?Ay__Y|jk_vR{wcUhg!yE!OtxJAN3DzK`dLblnh%ELvkVR{I9zt`Tu$G`0brt}bw0i5RJ#{E)J(k1 z5aUnKTkG@TehQ6?(#U+bSsrwYzpB^EnU`*vvpfT5uq{%a)yNSSkN2<#nWP0|%V$|C zZ9I!#I==>t@*rg4EcADnUZqja%eh)M^Vo#iN?|m8UEMZH?{w{0 z--yC+=A~|tu;E66jly#`P;|!BpeZ(^d zuTK)mqMKm$T=^7PF{6~aTgaJ8cxZNh}JK%yvV?a=I3*qj)*61b|g4u&{7i?8OHCsXq$6j ztZHLqSg&iO9M?6HUJh9t2ATSrU{T}vf)Uz!t+JvpgCgw|Ki?qskR9@Hw>fz*R5a?m zx$@^|=D8~USD8TXD#l-Y&EM7(ePhF$1_!=eRRVyMn+uTBK;>Nqj5cJCF2z2WE8a(& zLnD#q;CfRaDg~2G#q$QOpa`!I%n99j_&}&GEDSyC{-c1-WYt1Jp}P?12;~ZND)xFt zc2-OZWO$`>xVapxI9Y6*koT4nwMtQv_2VN^PFm@=kkO9ek%iFUpx_=~z?{_tdDYe2 z7a~AGa20YQt5{a1foBdEoL8)1n8 z)Q4^x4K!>$@cBi=)HRtm%0g9r_mAiL@dv*A@(yqj{Cil7h=_m?ic zvd|#j;qy28K_!X~x8ru2aVk<$VT{$jg?AtD!GP64ETkG@tiZtv)V1x(>urXn%@Q(% z@V;xhyNUk7Pf}Q-_5xukZJzyarHm|fI()83IhK5v{Jpa6-q-RBQRNqeP~y+m+`}?qefS;5q;Sh za{(RMu@A0NhehYU58;T}4ioxo>BisMW(iJ|!whT}%RkS5YRCRw{cmjp-ehg>^gUDh zH!U0)rlDt890rd))6sI(SwGVuKkqCQGZi~KBR|&>D@^vJF2oe9tI1{N=MczarF?_) zQ}Z?^j}**-O>??!^F-~9txcW&FOmB<&2vWBKT+*rknE>fupvxPGafprpUsDqxe1(CA@W5q6SsH`+AWRy~*$Kmi2Ga?>QW-NA0qwwv z<={a$=IAI10n{AtW0cGoH8tP$WKT?;pL8M*t;o;?E?Miqs2Qf)3K3i+1GW6Rz57e%u&pWL0 zT_DJAo{*G6b{ET_2fx!*+mq?B7hFXm|AOv%mE878d=f>buPErF^dgMn7RoT}%HyYS z#*1U5ImyH|8{4Re-SZB@p=&ZoCy9kTlzO>10F4hGcnwqKFN8EXcr72Dm;191MOFpE zy@zK{|5T-;N{e0s<;_@h2ao?@GgzDOeuIYg5&rD1p_U_b%%g&axXKtON}CAJeajN( z+QNiqJsw(E%rv>r5@wto9zd{Ra>Fj#l9{N%T!t_LwkKs#1nY^kIOzFXd854iYYo3- zeZDGd(}m0guaXzYrI!5Ev8=a--B89_H-{9_NcEz%2N}zS$n&rUn{SRYVU>Kfftqc} zySD9V;qtKCW0mD9Rvw4$chQJs3l-(eVPUR%-i0-!O9}zkLbAV2o!31jc?iIg1uyUb z0M6U=-Lnmt!d-v~w>c8pEH=4H2(~@XkO7)o}_=~3?rp%1(mqy1ip{IZkG1})k z9c{Cx&^eJ$IU8{*)lU|7*NNbQB8~O$XT3E{T2J2bJ$I$>;ZpCiKgAJGdS{kBY%`YH zpGWz8X{llkb%b}nf+R|bDH0uZPGH_&uBQjPQRmBu+nx4jaSEXx_qiS83#p{f8cL!K zFKO*A434_z>tXd>&$msO-zoRy@-EhvK4`qBfg(bCnxg-(`+gX7ag*4b}xK z-$YIw>0axD+=LD#x(SxEwnW_CESSwROO#%ek;}$(D5CrAw0%LQ}UVD!j{4v#~Ig%P_ ze7fn>l8K)mt~Z>_yj554)fXtU54wpmD)!~Y)zfpL?|3!r+ok-VaqX#tD{Y9zNj=u7 zyTn&MdmxgrZ}HH*fcuzF2`z89Zb#b4u&?(4-)Z7_-C7|0qnU}<0TJt-JX0$IUjz3^&nuhYHBgNPEhPBkBKtCaleQbI5iS5kq&J}|nTgr?{ z-qs=(Jks>S1LG%n;WooI+tgFK+;Jh9d7t3|jLQ=4Gbm2YVZSM2^O&|d8Gwme*LjWX z$_S~9+No*EvxQsI8Km2O( zAN9SJG)iur6Dtq?TlX(3EpH++u?Vm`X6uD?7($BVJud4 z&(++Y9Zo{bzIgtMe0Ws_tUaKkZ>c`{;cUCN&s_q}PS2_ymZz#!l6mv;{NB7t1Xt&J zy~xUEz7J`mqx1F!h`gE$a-v~QtqFUlr}=z5*fGPro}nV8vOi8WdxE64Y0u-c9<-jh zZ(Xx-Fn*!ukG-E;$=M4Tz>C zdkcsko1HAt_GnfXI-k_%Uu?F8a5!Z#b>cpRI-*(&S77Tn#gE&ZWYyBD=T$Y*IlV|4 zrG2W95`e8ZiTT-IiIm6$4W*b;JNfI8%9+{)i7j5g*$7S!dhg0|Z`|QDH+Lz8#yvGh z1ctcvExF(mNAM?Wext2L?Urb7&?$7RdTWfI@U~dUKX&^f{$a5YM?whJK*1jjE{YH# zd3H@__{}y1fp`y!w1wah9jY4muqW3W()WC2gR0NlNQ750Ts0L`Xc>;5O^U3AFc%FX zOLE?y=5Akn-I78|UQ!b!0UWq(yX5y`*-$6`Y6?H}?*)jxvK zU@5h1oj=_*J>gjF;&NB#w4D$SP{?1?=B`)FHM(y>AZ`8{>+%RZdsHl;;5~Onhly*T?1s+lTX+GL55Xt)8ITfB!~IZ?E8kq-v4#Imte@LvrS zEiqSBt)A>7Fey@PLD{tG=V4$5>BHw)brluW(;O=v4bjBYDmFRm+@mN0K(fib$UW_P zH)#W91-yHG&O6=yp;VJAWMivxEd;5&4^vmT9`p`pZj3mNV|Hu-EuZ)N-9zXBT$G5{ z<+8aPbKKZTMcMbufhCHLUnQ)jheYuAw?jMAT0wY!(HxK+)xmO;b;Rwqy~Brx5{`R8 z5|F$$9sMZ)=YHr+mgejky+oAsu(0SxuZuN@FHz|R;(6)26xa4Xc@+*v)yj|I@ z$+~d+X70W4z$WIM8v5~dyfb&Qvjha{?U_S5Zq9`vKGojMrIyPUaEz1X{x2V$EQh;T z?sOhDk?dHX zjdZb4m5rS-8jP@-mVo`UEl0nFLPzIL-1!!Fjy;NU$%K$W^v| zya*a@r+oE7IeWQQfeDdGvTvLhET@_|^N6lALGb4a3mBIvInNOtQ_A?GD)I-tcMue7 z-ejyjamILB0p25ZDJV^j^~vgyLQaEV01k|brlop8515-CRbcIdKHbaK{A|BoeF65O zU3%fE^3zw{jh%HzGcZeaEm>96vv=BE0_jtNs#QhvW8DpT+Hg~AC$_W58JqBs_-Axq z(#Y8dc^QTdEN+-tWa!r{84Yb}iAcP@(Cs^(%ktrNf=McPL%3D^S-9TsZt+4{aKiGF zR)xt#bw2!%4~K^JyVD6HC~nOo_^#VuJVh1(?}=-&&Go10duD|Klld1Ypv{+t@!aV5 zDt)X@Y)*pD(x&V(JktC%wRPTv08hn7(;|*+czSmTq@QZ(&a59!ALosU#l44-F!ZT9 zFKxL~I5AU5-rJP7TnI%vlg}sZ9FU;vW#Ou$WX`ey;Od#MhFyERG09r)Tb(K6=4lH>+WVopd&&NREZnX-GlaDXoWzKAh_8+B2+R<^JG=J~ zBIG?Dml_1YEIUgV>Ld7fI2lm{DMFPOrECOIr8-_iWg-XGE#SB_lhdXyFg|LSuy=wv zT&N6N7CAbO9zQ-K1$!&`1`ZtNiRg=3P+G~6lvm5TTT7*N?6II4zhBPyz z;M$dqc7bb8R4MRRKqkx6Nl4WYY5`;Gswyc#yc&A;QGc8F+K8o#j8FX202W>ON(X z?_fj(#^1wB7waf95lV&x+4)1TAHS6y8J*~$mL+@d7wt^=bkeAKZI`Pl&|gWfkRh2Y zFqAhokf{_U5rFUDzZfO!OPvM_uq(U7_~~A^jy;1 zpk5>Av)rbV&$E|7Jm*HJvQ+WgV1 z5zzGp}VNLRn=_We$(I%PZAX84BGcZC{xLG@hrhy^!KFdMXYr z8L0bgTwte=Kn{FXLT08&kgE1wJ^Cf2gp|m{QAFU8%LkuobkUC?L(Qy?U++}f6s2+m z>`OC#{-<8Y_j+pIh6_-!|NC_-7le(a(O*3szs9iK#*p7IPQXCHf4x+{8JD2F##Mh> z_!{_a&mZ}gz4in4&5=V7bh`Yh*Gkm2?Nh}ueAm9=li;Hz>i1gBnUx|NxIM`%C zt@--(GBV8~hE4NcE z1N?6aF0-;+OF8#5Yu3U%N(Tr(Vt#~^x04Rj)0Q9?nyC^$SX%cC!?S;M7}%lD;M-W+ z&=k=A^2q9H71MJR4KoqVv6VRnRRQcp$oNRa>P$&UdMo~FkvvzHjXop%``GZ8$cgIM zlu<3Z=o|~5L{j&?NRN-4FV7Og1(psLd^0dhnYCRGcDRJ@uD}u$-5cX1<}hDF>-4%h zuglt6T}2O7v)(PGXKsI-gs`)Tt{LFuz>F#-{k*)%F;~1MhNC=^0wW|^1Ic7wX=4df zrq%~euJh2B7B%*@8A_6%mavmZ06e+r^ShP83948{$RY`1WATq{Gn-j8+tzuV2J4Il zEyRaKhGWTLDM;7Dnk{JiCK-1T65^HPL;33rB@1ffN#-ZDz15~($;H3hLXtY9J^6IH zU3t0uN%Fv*NB5|@(TeBuGpxG{)%FWpSpH~1A5a6AE89@U*zrV>rQ9zj zg0{%ZIHCP0)(=ZUQs<8XEe=HsMVn2fN2?iKLAw{`%_wy0&rDj@&{`}j^Fd$QbD_dh z8eoMoGzu%6G)7g)ZwagArb2LtbCkvW2|uaAx|PK3*<;f?;uSV6DgGgJ%M4!c%l!rV#HMVI8Bx-T@YqVcx*$ULVf$Bu zw}Qfh9b%(o!_T&3Q314#j5fFsNSc%Zi(eyL1bZEsYe@!doG?b}JaINZbHAn$LOZA` z)zPgbTQy3R%*OUFWBJmtQbG|}*#`D{4aU5q4NS|D8+h=wfvTh?@Y}V}UP1oa8m;Nb z*`kv6=`w|7BkWn{i}|YV`d2-4GWqs#MIv>dbVD{6#I&nf#7N#aFoc3fzgF*$`8b+u zSO_y?KCw6>Q*7qQIa$YGaK(FxV^yIz4)Pc_B-ID(J zs%bTJ7(>ku?JKedsi7F|(-GwgBDI&#=oX(d9#sVDR0cxe$hk7KCucx{uCD!@8$|(`ZbyJX4e7 ztjK;k3zyWmOxqS3OD}%Q0{&NwswC?T3aT8ZOS}L7+2crSDS6+76tGirsTa%86)tV!j z;5L$@XLrvCVJ(Y=9=fcAsOBH^I|>MFx*#E347V>I#P|}3=6=IPDo zrPztIlZ@@sbkq;h|SzAEfLPLnq9J4du}ligtNw1#GK>=M$P9=$|`oDvmVNpIlB= zht#_+RIe4Ubeq?U@Y(54u17%2sW;7SjERg-&+9F@3};C{8ya*S*R!jM*=CQ%hF1sI z*|D<9RDHS4>Wc!~uCS#hHhp0JW*s*zBsyhA|GDSOZe(%#hsTGotD6m$oK*W+^0FVg z6jh@xSM0kQj?+^_4euK5xT3KlD@hkNDi1R=U<4Cm*1dwccV0pJVDU5Oc~k8bX_#4g zPMY+hfq#OaI$k({ih38kO2|p57%{=x zs>TIuz9a-EMXWCav54t;-?)!CEyI2O>D2NWt??IzbeyLsxrLJ~nGev+BGiMaQ)=!( zO5cg(8*96d-3_N5&B`x5ZCFM{V`AX(mg&Cun1RZi`{MY5qWUY=xpn@!wEb~*saHLi zke6^po0&!V2M^1MvL05Ic3Nl8rjZ-dO^>&2&wiQfkQp#KP9r{tU!N6%AERqOwG=&tqgs@SY*983T7kxw`ku^zHdhFS}j9OrC1{oI?1Y z4PzzMWc4JeCNEV!PuDVLH{4irF0RHJ`KXKR8Oc$?>mKV+{F;3FVTq#y9439ouvBmD zy)Mq2MHDIslDn+3L9Ss=h)2*&oA2Xv@+45sQHLND2i_m7W-Kf;eX#~3LeZ85ht+wi zFmt*+h_6_nYNl9_K}nS>J<)GUKd3$w$@gZy>B~v~f?osn{%V6I8YG*rB(!Q!f|lcl zTxB>ZjlNn+G`m`qq(xDK{2hQ))g@^u?LeUhD~y9K2e&b`e)@_U!SLynWimh(#QGEOnk}ykQ=(zz{xP5dT?BhnVR&nQom%H_mDK^xz zRconUPMornruapV{qsJzT6~2&Bnn}SfBFF7Nf3K{uq6d@yqs!-cyQGH`8PIx87*$R z9Ty$jXi8zi4(*W9>H{KoFt`#8hJ*sYg8Nxw+qHOhyy|(c%wtDq5A|US18U^S<3PjH z0g6@^-sezpET==h$6F)fX)3hp%%;=v$ufjGwq)@p@A8a|Rbr>4w~39*8VkB{NSk&= zwvkRS)bNSg<>I-OV_mojHE@;7HF`}G0wzDF3WpDKKwe-~K1YxRAir3JcKDUP4+I z=$og!WEa5?M+|^vxoW9XP(r9ufP;QJ4!-p4e$NDNZJHOSmRj&wXoU*7+w)lDi!-UF zYf*>adXyvHorw@HvhUU}-1|+!Kf) zrj~75n4O>h^1`;`sh}WjBQj2o8&)wD$|}yDd-?$fmQ$3Itb zrDs<@e92EC=2(!QKOjaGZH-kOg4?C|c-XE6C79svs-zKWMpIoW!Dt7K6M#UX+p-F~ z?raw7|K%>m*ZruzbyMvT{dw;5Oxx!Hbm1>NaAnyTds?~>4+n7eTBRzG9YWbVS3SHS zgH)fo_-CWA#k4g*MA*I;V5 zRT(NothM3$X=wqJY?Nbf65V)%G3b*B-WU@~rRd-+Fl~L3`;0$wuGX(VNSv6zwLn>U z{>Ys}Xj!egZ<07z^{@yows-a;O2OtsI^w%X0~kJoG|mGHg`{tT3n}I~HDE*T(@B1s zfT(-aXXrE#A19fpFpBbY9j<-PSdbf*uX1K#RM6sWi}`TsGaeJ{fp=N`tzT%AMVRlD zE>diR!ynf$Vp5Pju7`yxKqKX%67UO%uxlkPqf`F^lg59PU!hwPgz*}=BzrF#N4fp( z1z>Kwx|P$)oWVj^0Ega_5gR6N)vjsFaH;R|vB9GLKt9iTHO32y{rs2`QK+l!6hj?R zBb{O~t_QUzn&3g_Hu3D;JQC!6ndNyfS@e3(D&=M}s9+|_ru)2O@HYh|{9OgFaOdNr z2&$P$%qc>4t+_8B)NMlIB|okE!jTwEGG5!|ZsDV*J9RJ?zY*NlJ%F);ko;)Fv)+8A z>jZfFdXCQk{8-6r(th=&2}6IvxeH5CHeq3@q8&?TVfo|8ysxG~YV@=Pg91)9PzFa| zsMOqeX7MBgE-e}Cv15cgUfXZJD(B*d@j00?qAy_Ikx5x54nNNye`efHpODV2f-(Bh z?s=1}ZKz>#<6QkBBkflhSgr=Fnkf7)0w|V!d)_$qK z(Pdu)rY`CWxtS{PZO&2#LwpEcvHg6VaD%aAy`D$g zHZ*Ec(g@836KHWPg|+mhIl}sLPqg=GPaO{!6r{nxi6DM#)#cl98=`E?}f*re~pJqIUv%x||(Mja5~k01)5YGyjQr`NsJ5nFHxx z1^|Ep*cMs^qCgnHL&l$EesA};O9Ap}jK{QrEerrYxFGGO2fjW*Wqu1!v9&jGwJ`;* zqd@ViziaXj@mNPgj8Z_+-{MU`#n1j%yo-~eo2B!2kKfJ2FQfW!a{+ZP0SdzbX}t%q zA3$3#q^cq*ucZ7>b^n`5M_SenvH&{5_-FwDOc3c1z=&H==`vCxVsgr2H?<2y_Uqth zK${!_9}E!DbwJ~Rik6dC0SdpVWX{V}I|fVuz*+(Tzy^_=2K-l0$^Q$Q0N!_SGm98T zZ(x73cLdPhDA$B<`xDaqEZi9A4!@aH1419JA)p}`fReGUNzL`o1X>=n$v<4}f0F%u z&is7o#sAFlea^Jd{Vdzm!_d|NIJm!0o*Rtr1c7QX4q&670L?)H(r{Gz-wMCA(If7+ zdny4bZvUZVGyIlf?rP{{^4$&lCqw<1sR&9X<3_+qgATMEDTpp|OuwZ#nVJ9>w7+A1 z-5+TGV!rnW0x+Bpw6DMW$^X>+U(5a9O7LB-`Y+}F&oTZd=|7BvxvQyp3j8r%7XTmz zF;3whq?@`q{M|G^Aiew=_(8xc=hJuqfcqej^9R2&&36^Py-==QMh~>$O{bkZdcnLE z5pdf1{;brJ#vggNQ7QwqSScJhcu#?Y7gVV{_y0g#4e9<-itd|ICZ=w{HzmkB^0!m+ z*W=)SE7bRK5byaj@0%;`X8qsAijezl&7TIE3v_bK|3a#ntDUh6@EA$wY-;Re>hkS0 zc{9vQ8Jkzlu)r@bd_QA&{r=l{8+$_&I^c=b(##WRFw>i3F7o>wB5?tL5PJZC5M-dK zJ^3T%=7@!vmqTW#06??S&j{}9|00}$L9hR6a&rXC!|u)w;DV({3;>XWXmL{cU&Oyt z#Pr+Hx^~m%&HCjm2@Nq7m{`oH`mN5@_01h#&0kO;_xat7=33Sd#|r}h)XM(6mBeZO z3+=`ut$~t6RZ7_0z*=jrPj6?grXVejO8^X>t?`}8{D^XM-KzqtwZW)=gzV(~ib zc=B(o8+XvJ*BH=ujUTYw5$HS2<^L+R+;kBDy;SSEGVlK&{YM=0%}fS*CDwI{=i={m zxb@xz^cJY=nC%b0$ADH_zL`RxH=$f7DX;y7biK60&0wHcbzFxLum2hLJt_8P6wsRm zu2aUh{zCaD+wW!+&|2WvDPf=gOaV>)xfu<#=Js{k)BWGm{!@YbW-!q5)z@Ja2Y-d# zrl&y5Azuf*JNi557M%rJru8}~_3W>ppNh8L%!Z(~NUsyAFK$M>jUhoRN?xbE2iE-h z-O>tD2lW=#1T9c^owf%Cb|V@{xw@Mf6ttS#btosq4WQR+yWI>3S~TqkaNA!P^7lZ{ z5^6UiffgPsDCEiW`=<#jbEoIVE%=2ir?*j zbohn?&7-`omkhxzaNn~kZ-xX-kGzijbX(;Ak|l2j22Fgt4h|u_g|64rAa4c+%}%@y z)+V|I7-WxsgT4h#rn`>4OL7bB|Az4YrPkd{Y0zlu>-5a~x1fVKd~cvMXx#C2>^9A9 zu)l~x{*&Inp1^b<6L^sJ77h46=jU&A{xy;X1j$Z!OXM}b=x@P4Ru9l{;p@iE`Tqm| z2p+z@v1vdw?_<7&=Kp#EZ=f+~NZxggnSkYae=Nd4Hxq-)wfD@A|M_Qm{t=+}Cp~`{ z8Z@TmI@X-?R@iG1E;l2C#$H?}b8+8-{EJA8-|?Y Date: Mon, 3 Feb 2025 16:15:41 +1000 Subject: [PATCH 7/7] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 255c7edd0..f5dd5cc9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Add `APICAST_LUA_SOCKET_KEEPALIVE_REQUESTS` to limit the number of requests a single keepalive socket can handle [PR #1496](https://github.com/3scale/APIcast/pull/1496) [THREESCALE-11321](https://issues.redhat.com/browse/THREESCALE-11321) - Replace internal OPENSSL module with lua-resty-openssl [PR #1502](https://github.com/3scale/APIcast/pull/1502) [THREESCALE-11412](https://issues.redhat.com/browse/THREESCALE-11412) - Remove opentracing support [PR #1520](https://github.com/3scale/APIcast/pull/1520) [THREESCALE-11603](https://issues.redhat.com/browse/THREESCALE-11603) +- JWT signature verification, support for ES256/ES512 #1533 [PR #1533](https://github.com/3scale/APIcast/pull/1533) [THREESCALE-11474](https://issues.redhat.com/browse/THREESCALE-11474) ## [3.15.0] 2024-04-04