Skip to content

Commit c8c86aa

Browse files
committed
metadata: fix caching of JWKs from jwks_uri
when using the default expiry setting (i.e. not using OIDCJWKSRefreshInterval) and avoid fetching JWKs from the jwks_uri for each user login; also addresses Redis cache error entries the log [ERR invalid expire time in 'setex' command] Signed-off-by: Hans Zandbelt <[email protected]>
1 parent a1dc976 commit c8c86aa

File tree

4 files changed

+12
-1
lines changed

4 files changed

+12
-1
lines changed

ChangeLog

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
12/05/2024
2+
- metadata: fix caching of JWKs from jwks_uri when using the default expiry setting (i.e. not using OIDCJWKSRefreshInterval)
3+
and avoid fetching JWKs from the jwks_uri for each user login; also addresses Redis cache
4+
error entries the log [ERR invalid expire time in 'setex' command]
5+
16
11/21/2024
27
- add option to set local address for outgoing HTTP requests; see #1283; thanks @studersi
38
using e.g. SetEnvIfExpr true OIDC_CURL_INTERFACE=192.168.10.2

src/cfg/provider.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,11 @@ const char *oidc_cmd_provider_jwks_uri_refresh_interval_set(cmd_parms *cmd, void
478478
return OIDC_CONFIG_DIR_RV(cmd, rv);
479479
}
480480

481+
int oidc_cfg_jwks_uri_refresh_interval_get(const oidc_jwks_uri_t *jwks_uri) {
482+
return jwks_uri->refresh_interval != OIDC_CONFIG_POS_INT_UNSET ? jwks_uri->refresh_interval
483+
: OIDC_DEFAULT_JWKS_REFRESH_INTERVAL;
484+
}
485+
481486
int oidc_cfg_provider_jwks_uri_refresh_interval_get(oidc_provider_t *provider) {
482487
return provider->jwks_uri.refresh_interval != OIDC_CONFIG_POS_INT_UNSET ? provider->jwks_uri.refresh_interval
483488
: OIDC_DEFAULT_JWKS_REFRESH_INTERVAL;

src/cfg/provider.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ OIDC_CFG_PROVIDER_MEMBER_FUNCS_KEYS_DECL(client_keys)
227227

228228
// ints
229229
OIDC_CFG_PROVIDER_MEMBER_FUNCS_INT_DECL(jwks_uri_refresh_interval)
230+
int oidc_cfg_jwks_uri_refresh_interval_get(const oidc_jwks_uri_t *jwks_uri);
230231
OIDC_CFG_PROVIDER_MEMBER_FUNCS_INT_DECL(backchannel_logout_supported)
231232
OIDC_CFG_PROVIDER_MEMBER_FUNCS_INT_DECL(ssl_validate_server)
232233
OIDC_CFG_PROVIDER_MEMBER_FUNCS_INT_DECL(validate_issuer)

src/metadata.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,7 @@ static apr_byte_t oidc_metadata_jwks_retrieve_and_cache(request_rec *r, oidc_cfg
684684

685685
/* store the JWKs in the cache */
686686
oidc_cache_set_jwks(r, oidc_metadata_jwks_cache_key(jwks_uri), response,
687-
apr_time_now() + apr_time_from_sec(jwks_uri->refresh_interval));
687+
apr_time_now() + apr_time_from_sec(oidc_cfg_jwks_uri_refresh_interval_get(jwks_uri)));
688688

689689
return TRUE;
690690
}

0 commit comments

Comments
 (0)