@@ -466,7 +466,7 @@ local function openidc_load_jwt_none_alg(enc_hdr, enc_payload)
466466end
467467
468468-- get the Discovery metadata from the specified URL
469- local function openidc_discover (url , ssl_verify , timeout , proxy_opts )
469+ local function openidc_discover (url , ssl_verify , timeout , exptime , proxy_opts )
470470 ngx .log (ngx .DEBUG , " openidc_discover: URL is: " .. url )
471471
472472 local json , err
@@ -489,7 +489,7 @@ local function openidc_discover(url, ssl_verify, timeout, proxy_opts)
489489 json , err = openidc_parse_json_response (res )
490490 if json then
491491 if string.sub (url , 1 , string.len (json [' issuer' ])) == json [' issuer' ] then
492- openidc_cache_set (" discovery" , url , cjson .encode (json ), 24 * 60 * 60 )
492+ openidc_cache_set (" discovery" , url , cjson .encode (json ), exptime or 24 * 60 * 60 )
493493 else
494494 err = " issuer field in Discovery data does not match URL"
495495 ngx .log (ngx .ERR , err )
512512local function openidc_ensure_discovered_data (opts )
513513 local err
514514 if type (opts .discovery ) == " string" then
515- opts .discovery , err = openidc_discover (opts .discovery , opts .ssl_verify , opts .timeout , opts .proxy_opts )
515+ opts .discovery , err = openidc_discover (opts .discovery , opts .ssl_verify , opts .timeout , opts .jwk_expires_in , opts . proxy_opts )
516516 end
517517 return err
518518end
@@ -527,7 +527,7 @@ function openidc.get_discovery_doc(opts)
527527 return opts .discovery , err
528528end
529529
530- local function openidc_jwks (url , force , ssl_verify , timeout , proxy_opts )
530+ local function openidc_jwks (url , force , ssl_verify , timeout , exptime , proxy_opts )
531531 ngx .log (ngx .DEBUG , " openidc_jwks: URL is: " .. url .. " (force=" .. force .. " )" )
532532
533533 local json , err , v
@@ -553,7 +553,7 @@ local function openidc_jwks(url, force, ssl_verify, timeout, proxy_opts)
553553 ngx .log (ngx .DEBUG , " response data: " .. res .body )
554554 json , err = openidc_parse_json_response (res )
555555 if json then
556- openidc_cache_set (" jwks" , url , cjson .encode (json ), 24 * 60 * 60 )
556+ openidc_cache_set (" jwks" , url , cjson .encode (json ), exptime or 24 * 60 * 60 )
557557 end
558558 end
559559
@@ -702,7 +702,7 @@ local function openidc_pem_from_jwk(opts, kid)
702702 local jwk , jwks
703703
704704 for force = 0 , 1 do
705- jwks , err = openidc_jwks (opts .discovery .jwks_uri , force , opts .ssl_verify , opts .timeout , opts .proxy_opts )
705+ jwks , err = openidc_jwks (opts .discovery .jwks_uri , force , opts .ssl_verify , opts .timeout , opts .jwk_expires_in , opts . proxy_opts )
706706 if err then
707707 return nil , err
708708 end
@@ -728,7 +728,7 @@ local function openidc_pem_from_jwk(opts, kid)
728728 return nil , " don't know how to create RSA key/cert for " .. cjson .encode (jwt )
729729 end
730730
731- openidc_cache_set (" jwks" , cache_id , pem , 24 * 60 * 60 )
731+ openidc_cache_set (" jwks" , cache_id , pem , opts . jwk_expires_in or 24 * 60 * 60 )
732732 return pem
733733end
734734
0 commit comments