Skip to content

Commit 032fa5c

Browse files
authored
add support for ES algorithms (#118)
Signed-off-by: Stephan Wurm <[email protected]>
1 parent 736a95a commit 032fa5c

10 files changed

+202
-3
lines changed

src/ngx_http_auth_jwt_module.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ static ngx_int_t handle_request(ngx_http_request_t *r)
337337
return redirect(r, jwtcf);
338338
}
339339
}
340-
else if (algorithm.len == 5 && ngx_strncmp(algorithm.data, "RS", 2) == 0)
340+
else if (algorithm.len == 5 && (ngx_strncmp(algorithm.data, "RS", 2) == 0 || ngx_strncmp(algorithm.data, "ES", 2) == 0))
341341
{
342342
if (jwtcf->use_keyfile == 1)
343343
{
@@ -394,7 +394,7 @@ static int validate_alg(auth_jwt_conf_t *jwtcf, jwt_t *jwt)
394394
{
395395
const jwt_alg_t alg = jwt_get_alg(jwt);
396396

397-
if (alg != JWT_ALG_HS256 && alg != JWT_ALG_HS384 && alg != JWT_ALG_HS512 && alg != JWT_ALG_RS256 && alg != JWT_ALG_RS384 && alg != JWT_ALG_RS512)
397+
if (alg != JWT_ALG_HS256 && alg != JWT_ALG_HS384 && alg != JWT_ALG_HS512 && alg != JWT_ALG_RS256 && alg != JWT_ALG_RS384 && alg != JWT_ALG_RS512 && alg != JWT_ALG_ES256 && alg != JWT_ALG_ES384 && alg != JWT_ALG_ES512)
398398
{
399399
return 1;
400400
}
@@ -633,7 +633,7 @@ static char *get_jwt(ngx_http_request_t *r, ngx_str_t jwt_location)
633633
if (ngx_strncmp(jwtHeaderVal->value.data, BEARER_PREFIX, strlen(BEARER_PREFIX)) == 0)
634634
{
635635
ngx_str_t jwtHeaderValWithoutBearer = jwtHeaderVal->value;
636-
636+
637637
jwtHeaderValWithoutBearer.data += strlen(BEARER_PREFIX);
638638
jwtHeaderValWithoutBearer.len -= strlen(BEARER_PREFIX);
639639

test/Dockerfile-test-nginx

+3
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,7 @@ RUN echo "Config Hash: ${CONFIG_HASH}"
99
COPY /docker-entrypoint.d/* /docker-entrypoint.d/
1010
COPY /etc/nginx/conf.d/test.conf /etc/nginx/conf.d/test.conf
1111
COPY /etc/nginx/rsa_key_2048-pub.pem /etc/nginx/rsa-key.conf
12+
COPY /etc/nginx/ec_key_256-pub.pem /etc/nginx/ec-256-key.conf
13+
COPY /etc/nginx/ec_key_384-pub.pem /etc/nginx/ec-384-key.conf
14+
COPY /etc/nginx/ec_key_521-pub.pem /etc/nginx/ec-521-key.conf
1215
RUN sed -i "s|%{PORT}|${PORT}|" /etc/nginx/conf.d/test.conf

test/ec_key_256.pem

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgOlEBGcZxxhv8FkN0
3+
YIvax6fnhJbMeotzIEBxIglkNu6hRANCAATP1NpDzvZmKd2Mw6hIrv4nzUfNu7OK
4+
mT5VuL5LhvUgzTqVGuxwevA7DlFsNVSfCljIBG3geio3fcd4k0Z9SygL
5+
-----END PRIVATE KEY-----

test/ec_key_384.pem

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDADyrL6llSQoQOZ/PF/
3+
l761kAbrTwn4vu30Kr34ScW6bRKVXLq3cT3QssJ1nF9B63qhZANiAAQ48dOfIEd3
4+
0TCVE0JT4ZU0Db7Ftz+ex7lojP7uqTY9OI59yoMB01zUN4JK30BRXS9Yv0A9Bu1z
5+
fgLu93FSn0kd0zIPMvuu5LUt60M/miSt2lA0OrqFhKjx6FFdN/lNh64=
6+
-----END PRIVATE KEY-----

test/ec_key_521.pem

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIHuAgEAMBAGByqGSM49AgEGBSuBBAAjBIHWMIHTAgEBBEIAKkag6aVn4XAbaALo
3+
0b3pypdP5RBX7uKxHmKlkNCcpA0oVTdgjnM5NpJP8ZOM6NjVhEzsn6c/Tdn8hL8w
4+
SI55hFWhgYkDgYYABABpTipSvbs8fq44u4fA+v7DTNYViA58sqbrxjxdzwWZ8eEj
5+
CXsH7yzSGx3Y19NSyrX8HbjWmrj5uxiKeFCB8mGzTwDcFIKCMeMkHjZs/fmVOumR
6+
a2XSpj7BP6wqcN6Pf+UqECivGAZGRHoabo/dm5zF9M3gO+G9eOrf3G1wgFFM7Vzb
7+
Ow==
8+
-----END PRIVATE KEY-----

test/etc/nginx/conf.d/test.conf

+123
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,51 @@ server {
7272
try_files index.html =404;
7373
}
7474

75+
location /secure/cookie/es256 {
76+
auth_jwt_enabled on;
77+
auth_jwt_redirect on;
78+
auth_jwt_location COOKIE=jwt;
79+
auth_jwt_algorithm ES256;
80+
auth_jwt_key "-----BEGIN PUBLIC KEY-----
81+
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEz9TaQ872ZindjMOoSK7+J81Hzbuz
82+
ipk+Vbi+S4b1IM06lRrscHrwOw5RbDVUnwpYyARt4HoqN33HeJNGfUsoCw==
83+
-----END PUBLIC KEY-----";
84+
85+
alias /usr/share/nginx/html/;
86+
try_files index.html =404;
87+
}
88+
89+
location /secure/cookie/es384 {
90+
auth_jwt_enabled on;
91+
auth_jwt_redirect on;
92+
auth_jwt_location COOKIE=jwt;
93+
auth_jwt_algorithm ES384;
94+
auth_jwt_key "-----BEGIN PUBLIC KEY-----
95+
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEOPHTnyBHd9EwlRNCU+GVNA2+xbc/nse5
96+
aIz+7qk2PTiOfcqDAdNc1DeCSt9AUV0vWL9APQbtc34C7vdxUp9JHdMyDzL7ruS1
97+
LetDP5okrdpQNDq6hYSo8ehRXTf5TYeu
98+
-----END PUBLIC KEY-----";
99+
100+
alias /usr/share/nginx/html/;
101+
try_files index.html =404;
102+
}
103+
104+
location /secure/cookie/es512 {
105+
auth_jwt_enabled on;
106+
auth_jwt_redirect on;
107+
auth_jwt_location COOKIE=jwt;
108+
auth_jwt_algorithm ES512;
109+
auth_jwt_key "-----BEGIN PUBLIC KEY-----
110+
MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQAaU4qUr27PH6uOLuHwPr+w0zWFYgO
111+
fLKm68Y8Xc8FmfHhIwl7B+8s0hsd2NfTUsq1/B241pq4+bsYinhQgfJhs08A3BSC
112+
gjHjJB42bP35lTrpkWtl0qY+wT+sKnDej3/lKhAorxgGRkR6Gm6P3ZucxfTN4Dvh
113+
vXjq39xtcIBRTO1c2zs=
114+
-----END PUBLIC KEY-----";
115+
116+
alias /usr/share/nginx/html/;
117+
try_files index.html =404;
118+
}
119+
75120
location /secure/auth-header/default {
76121
auth_jwt_enabled on;
77122
auth_jwt_redirect on;
@@ -119,6 +164,48 @@ BwIDAQAB
119164
try_files index.html =404;
120165
}
121166

167+
location /secure/auth-header/es256 {
168+
auth_jwt_enabled on;
169+
auth_jwt_redirect on;
170+
auth_jwt_location HEADER=Authorization;
171+
auth_jwt_key "-----BEGIN PUBLIC KEY-----
172+
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEz9TaQ872ZindjMOoSK7+J81Hzbuz
173+
ipk+Vbi+S4b1IM06lRrscHrwOw5RbDVUnwpYyARt4HoqN33HeJNGfUsoCw==
174+
-----END PUBLIC KEY-----";
175+
176+
alias /usr/share/nginx/html/;
177+
try_files index.html =404;
178+
}
179+
180+
location /secure/auth-header/es384 {
181+
auth_jwt_enabled on;
182+
auth_jwt_redirect on;
183+
auth_jwt_location HEADER=Authorization;
184+
auth_jwt_key "-----BEGIN PUBLIC KEY-----
185+
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEOPHTnyBHd9EwlRNCU+GVNA2+xbc/nse5
186+
aIz+7qk2PTiOfcqDAdNc1DeCSt9AUV0vWL9APQbtc34C7vdxUp9JHdMyDzL7ruS1
187+
LetDP5okrdpQNDq6hYSo8ehRXTf5TYeu
188+
-----END PUBLIC KEY-----";
189+
190+
alias /usr/share/nginx/html/;
191+
try_files index.html =404;
192+
}
193+
194+
location /secure/auth-header/es512 {
195+
auth_jwt_enabled on;
196+
auth_jwt_redirect on;
197+
auth_jwt_location HEADER=Authorization;
198+
auth_jwt_key "-----BEGIN PUBLIC KEY-----
199+
MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQAaU4qUr27PH6uOLuHwPr+w0zWFYgO
200+
fLKm68Y8Xc8FmfHhIwl7B+8s0hsd2NfTUsq1/B241pq4+bsYinhQgfJhs08A3BSC
201+
gjHjJB42bP35lTrpkWtl0qY+wT+sKnDej3/lKhAorxgGRkR6Gm6P3ZucxfTN4Dvh
202+
vXjq39xtcIBRTO1c2zs=
203+
-----END PUBLIC KEY-----";
204+
205+
alias /usr/share/nginx/html/;
206+
try_files index.html =404;
207+
}
208+
122209
location /secure/auth-header/rs256/file {
123210
auth_jwt_enabled on;
124211
auth_jwt_redirect on;
@@ -155,6 +242,42 @@ BwIDAQAB
155242
try_files index.html =404;
156243
}
157244

245+
location /secure/auth-header/es256/file {
246+
auth_jwt_enabled on;
247+
auth_jwt_redirect on;
248+
auth_jwt_location HEADER=Authorization;
249+
auth_jwt_algorithm ES256;
250+
auth_jwt_use_keyfile on;
251+
auth_jwt_keyfile_path "/etc/nginx/ec-256-key.conf";
252+
253+
alias /usr/share/nginx/html/;
254+
try_files index.html =404;
255+
}
256+
257+
location /secure/auth-header/es384/file {
258+
auth_jwt_enabled on;
259+
auth_jwt_redirect on;
260+
auth_jwt_location HEADER=Authorization;
261+
auth_jwt_algorithm ES384;
262+
auth_jwt_use_keyfile on;
263+
auth_jwt_keyfile_path "/etc/nginx/ec-384-key.conf";
264+
265+
alias /usr/share/nginx/html/;
266+
try_files index.html =404;
267+
}
268+
269+
location /secure/auth-header/es512/file {
270+
auth_jwt_enabled on;
271+
auth_jwt_redirect on;
272+
auth_jwt_location HEADER=Authorization;
273+
auth_jwt_algorithm ES512;
274+
auth_jwt_use_keyfile on;
275+
auth_jwt_keyfile_path "/etc/nginx/ec-521-key.conf";
276+
277+
alias /usr/share/nginx/html/;
278+
try_files index.html =404;
279+
}
280+
158281
location /secure/custom-header/hs256 {
159282
auth_jwt_enabled on;
160283
auth_jwt_redirect on;

test/etc/nginx/ec_key_256-pub.pem

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
-----BEGIN PUBLIC KEY-----
2+
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEz9TaQ872ZindjMOoSK7+J81Hzbuz
3+
ipk+Vbi+S4b1IM06lRrscHrwOw5RbDVUnwpYyARt4HoqN33HeJNGfUsoCw==
4+
-----END PUBLIC KEY-----

test/etc/nginx/ec_key_384-pub.pem

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
-----BEGIN PUBLIC KEY-----
2+
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEOPHTnyBHd9EwlRNCU+GVNA2+xbc/nse5
3+
aIz+7qk2PTiOfcqDAdNc1DeCSt9AUV0vWL9APQbtc34C7vdxUp9JHdMyDzL7ruS1
4+
LetDP5okrdpQNDq6hYSo8ehRXTf5TYeu
5+
-----END PUBLIC KEY-----

test/etc/nginx/ec_key_521-pub.pem

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
-----BEGIN PUBLIC KEY-----
2+
MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQAaU4qUr27PH6uOLuHwPr+w0zWFYgO
3+
fLKm68Y8Xc8FmfHhIwl7B+8s0hsd2NfTUsq1/B241pq4+bsYinhQgfJhs08A3BSC
4+
gjHjJB42bP35lTrpkWtl0qY+wT+sKnDej3/lKhAorxgGRkR6Gm6P3ZucxfTN4Dvh
5+
vXjq39xtcIBRTO1c2zs=
6+
-----END PUBLIC KEY-----

test/test.sh

+39
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ main() {
100100
local JWT_RS256_INVALID=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJzb21lLWxvbmctdXVpZCIsImZpcnN0TmFtZSI6ImhlbGxvIiwibGFzdE5hbWUiOiJ3b3JsZCIsImVtYWlsQWRkcmVzcyI6ImhlbGxvd29ybGRAZXhhbXBsZS5jb20iLCJyb2xlcyI6WyJ0aGlzIiwidGhhdCIsInRoZW90aGVyIl0sImlzcyI6Imlzc3VlciIsInBlcnNvbklkIjoiNzViYjNjYzctYjkzMy00NGYwLTkzYzYtMTQ3YjA4MmZhZGI1IiwiZXhwIjoxOTA4ODM1MjAwLCJpYXQiOjE0ODg4MTk2MDAsInVzZXJuYW1lIjoiaGVsbG8ud29ybGQifQ._aQmIBL4CVBxU1fNMOHp0kkagFaaX2TvAEenizytwd0
101101
local JWT_RS384_VALID=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzM4NCJ9.eyJzdWIiOiJzb21lLWxvbmctdXVpZCIsImZpcnN0TmFtZSI6ImhlbGxvIiwibGFzdE5hbWUiOiJ3b3JsZCIsImVtYWlsQWRkcmVzcyI6ImhlbGxvd29ybGRAZXhhbXBsZS5jb20iLCJyb2xlcyI6WyJ0aGlzIiwidGhhdCIsInRoZW90aGVyIl0sImlzcyI6Imlzc3VlciIsInBlcnNvbklkIjoiNzViYjNjYzctYjkzMy00NGYwLTkzYzYtMTQ3YjA4MmZhZGI1IiwiZXhwIjoxOTA4ODM1MjAwLCJpYXQiOjE0ODg4MTk2MDAsInVzZXJuYW1lIjoiaGVsbG8ud29ybGQifQ.H35bTcZRhepWIoa8pKCbUMRuAOkVX9K5hJjc6tPmQwWmTw8lrktsvmMzJg_rgqnJLnAkciSIQw5EDj7fngS5zX2ThyRxrkPuE2Uiyw2Ect-mo9Kg1lrWgnyZCuCgq-Up9HQRAv0160mePlm8Gs4TOY6CPr38zwTcDZsy_Keq93igDQV8WuuWAGICaGd5ZyUOPjjzGShRjTU8Szz7fnpZpTtYRCYVo0pc5yfRWYm0fdn-4AseyGvd8JJ2xfnAEe4kZOkz7X1MLKtL0slKg3m2PH1lD7HwxIawXRTPWxArhJ9dcTNiDUrqtde2juGwOuMD_zTsb2Jj0_rmRb0Q6aljNw
102102
local JWT_RS512_VALID=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJzb21lLWxvbmctdXVpZCIsImZpcnN0TmFtZSI6ImhlbGxvIiwibGFzdE5hbWUiOiJ3b3JsZCIsImVtYWlsQWRkcmVzcyI6ImhlbGxvd29ybGRAZXhhbXBsZS5jb20iLCJyb2xlcyI6WyJ0aGlzIiwidGhhdCIsInRoZW90aGVyIl0sImlzcyI6Imlzc3VlciIsInBlcnNvbklkIjoiNzViYjNjYzctYjkzMy00NGYwLTkzYzYtMTQ3YjA4MmZhZGI1IiwiZXhwIjoxOTA4ODM1MjAwLCJpYXQiOjE0ODg4MTk2MDAsInVzZXJuYW1lIjoiaGVsbG8ud29ybGQifQ.iUupyKypfXJ5aZWfItSW-mOmx9a4C4X7Yr5p5Fk8W75ZhkOq0EeNfstTxx870brhkdPovBhO2LYI44_HoH9XicQNL6JnFprE0r61eJFngbuzlhRQiWpq0xYrazJWc9zB7_GgL2ZCwtw-Ts3G23Q0632wVm6-d7MKvG7RS8aEjN-MuVGdtLglH3forpItmFxw-if40EQsBL7hncN_XNcQTO4KPHkqmlpac_oKXRrLFDIIt2tB6OOpvY4QcpERoxexp4pi2f-JoINnWX_dU5JnIs3ypVJLQPfoJvxg8fsg3zYrOvMYnfsqOCYoHtZGK0O7jyfFmcGo5v2hLT-CpoF3Zw
103+
local JWT_ES256_VALID=eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJzdWIiOiJzb21lLWxvbmctdXVpZCIsImZpcnN0TmFtZSI6ImhlbGxvIiwibGFzdE5hbWUiOiJ3b3JsZCIsImVtYWlsQWRkcmVzcyI6ImhlbGxvd29ybGRAZXhhbXBsZS5jb20iLCJyb2xlcyI6WyJ0aGlzIiwidGhhdCIsInRoZW90aGVyIl0sImlzcyI6Imlzc3VlciIsInBlcnNvbklkIjoiNzViYjNjYzctYjkzMy00NGYwLTkzYzYtMTQ3YjA4MmZhZGI1IiwiZXhwIjoxOTA4ODM1MjAwLCJpYXQiOjE0ODg4MTk2MDAsInVzZXJuYW1lIjoiaGVsbG8ud29ybGQifQ.WFfJXGr5whKHB7arjsTXPTJ6TAsS1LoRxu7Vj2_HrLaIQphWJM6BICf-M3cv52tFzt-XTZb6GxlDgAbHo8z9Zg
104+
local JWT_ES256_INVALID=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJzb21lLWxvbmctdXVpZCIsImZpcnN0TmFtZSI6ImhlbGxvIiwibGFzdE5hbWUiOiJ3b3JsZCIsImVtYWlsQWRkcmVzcyI6ImhlbGxvd29ybGRAZXhhbXBsZS5jb20iLCJyb2xlcyI6WyJ0aGlzIiwidGhhdCIsInRoZW90aGVyIl0sImlzcyI6Imlzc3VlciIsInBlcnNvbklkIjoiNzViYjNjYzctYjkzMy00NGYwLTkzYzYtMTQ3YjA4MmZhZGI1IiwiZXhwIjoxOTA4ODM1MjAwLCJpYXQiOjE0ODg4MTk2MDAsInVzZXJuYW1lIjoiaGVsbG8ud29ybGQifQ._aQmIBL4CVBxU1fNMOHp0kkagFaaX2TvAEenizytwd0
105+
local JWT_ES384_VALID=eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzM4NCJ9.eyJzdWIiOiJzb21lLWxvbmctdXVpZCIsImZpcnN0TmFtZSI6ImhlbGxvIiwibGFzdE5hbWUiOiJ3b3JsZCIsImVtYWlsQWRkcmVzcyI6ImhlbGxvd29ybGRAZXhhbXBsZS5jb20iLCJyb2xlcyI6WyJ0aGlzIiwidGhhdCIsInRoZW90aGVyIl0sImlzcyI6Imlzc3VlciIsInBlcnNvbklkIjoiNzViYjNjYzctYjkzMy00NGYwLTkzYzYtMTQ3YjA4MmZhZGI1IiwiZXhwIjoxOTA4ODM1MjAwLCJpYXQiOjE0ODg4MTk2MDAsInVzZXJuYW1lIjoiaGVsbG8ud29ybGQifQ._EFxXYOTAfT3gB3xUfgGR2UyXHeRTlDWqA94oZbB0DDa7YPZTEX9T4C_0ylnOFKZ6irGHZA8vxjgXDH3DZKWwBWcZ-XaQ_Q4Ws2J-AEeLqcl7_CS6q9mFo0Y7vUNEn-W
106+
local JWT_ES512_VALID=eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzUxMiJ9.eyJzdWIiOiJzb21lLWxvbmctdXVpZCIsImZpcnN0TmFtZSI6ImhlbGxvIiwibGFzdE5hbWUiOiJ3b3JsZCIsImVtYWlsQWRkcmVzcyI6ImhlbGxvd29ybGRAZXhhbXBsZS5jb20iLCJyb2xlcyI6WyJ0aGlzIiwidGhhdCIsInRoZW90aGVyIl0sImlzcyI6Imlzc3VlciIsInBlcnNvbklkIjoiNzViYjNjYzctYjkzMy00NGYwLTkzYzYtMTQ3YjA4MmZhZGI1IiwiZXhwIjoxOTA4ODM1MjAwLCJpYXQiOjE0ODg4MTk2MDAsInVzZXJuYW1lIjoiaGVsbG8ud29ybGQifQ.AFY4gNCtZNYkrTiijDkV4eKIt2UPMIuJBfZIk69jgI8FSGCQyUIMmIVg0fTvbaSiaryXzcjbG5TCm8a9Vu3KFJutAHGrgvZqcdklxx6Fbk3an3r_CH68n_ncwS3SUV58mDjf0OX8jRuNdudU1L5xYNQdodo-fxPIb1oHXfMJ0CmULDR9
103107

104108
run_test -n 'when auth disabled, should return 200' \
105109
-p '/' \
@@ -173,6 +177,21 @@ main() {
173177
-c '200' \
174178
-x ' --cookie "jwt=${JWT_RS256_VALID}"'
175179

180+
run_test -n 'when auth enabled with ES256 algorithm and valid JWT cookie, returns 200' \
181+
-p '/secure/cookie/es256' \
182+
-c '200' \
183+
-x ' --cookie "jwt=${JWT_ES256_VALID}"'
184+
185+
run_test -n 'when auth enabled with ES384 algorithm and valid JWT cookie, returns 200' \
186+
-p '/secure/cookie/es384' \
187+
-c '200' \
188+
-x ' --cookie "jwt=${JWT_ES384_VALID}"'
189+
190+
run_test -n 'when auth enabled with ES512 algorithm and valid JWT cookie, returns 200' \
191+
-p '/secure/cookie/es512' \
192+
-c '200' \
193+
-x ' --cookie "jwt=${JWT_ES512_VALID}"'
194+
176195
run_test -n 'when auth enabled with RS256 algorithm via file and valid JWT in Authorization header, returns 200' \
177196
-p '/secure/auth-header/rs256/file' \
178197
-c '200' \
@@ -193,6 +212,26 @@ main() {
193212
-c '200' \
194213
-x '--header "Authorization: Bearer ${JWT_RS256_VALID}"'
195214

215+
run_test -n 'when auth enabled with ES256 algorithm via file and valid JWT in Authorization header, returns 200' \
216+
-p '/secure/auth-header/es256/file' \
217+
-c '200' \
218+
-x '--header "Authorization: Bearer ${JWT_ES256_VALID}"'
219+
220+
run_test -n 'when auth enabled with ES256 algorithm via file and invalid JWT in Authorization header, returns 401' \
221+
-p '/secure/auth-header/es256/file' \
222+
-c '302' \
223+
-x '--header "Authorization: Bearer ${JWT_ES256_INVALID}"'
224+
225+
run_test -n 'when auth enabled with ES384 algorithm via file and valid JWT in Authorization header, returns 200' \
226+
-p '/secure/auth-header/es384/file' \
227+
-c '200' \
228+
-x '--header "Authorization: Bearer ${JWT_ES384_VALID}"'
229+
230+
run_test -n 'when auth enabled with ES512 algorithm via file and valid JWT in Authorization header, returns 200' \
231+
-p '/secure/auth-header/es512/file' \
232+
-c '200' \
233+
-x '--header "Authorization: Bearer ${JWT_ES512_VALID}"'
234+
196235
run_test -n 'when auth enabled with HS256 algorithm and valid JWT in custom header without bearer, returns 200' \
197236
-p '/secure/custom-header/hs256/' \
198237
-c '200' \

0 commit comments

Comments
 (0)