|
173 | 173 | #define OIDCProviderEndSessionEndpoint "OIDCProviderEndSessionEndpoint" |
174 | 174 | #define OIDCProviderBackChannelLogoutSupported "OIDCProviderBackChannelLogoutSupported" |
175 | 175 | #define OIDCProviderJwksUri "OIDCProviderJwksUri" |
| 176 | +#define OIDCProviderVerifyCertFiles "OIDCProviderVerifyCertFiles" |
176 | 177 | #define OIDCResponseType "OIDCResponseType" |
177 | 178 | #define OIDCResponseMode "OIDCResponseMode" |
178 | 179 | #define OIDCPublicKeyFiles "OIDCPublicKeyFiles" |
@@ -1417,6 +1418,7 @@ void oidc_cfg_provider_init(oidc_provider_t *provider) { |
1417 | 1418 | provider->check_session_iframe = NULL; |
1418 | 1419 | provider->end_session_endpoint = NULL; |
1419 | 1420 | provider->jwks_uri = NULL; |
| 1421 | + provider->verify_public_keys = NULL; |
1420 | 1422 | provider->backchannel_logout_supported = OIDC_CONFIG_POS_INT_UNSET; |
1421 | 1423 |
|
1422 | 1424 | provider->ssl_validate_server = OIDC_DEFAULT_SSL_VALIDATE_SERVER; |
@@ -1633,6 +1635,10 @@ void* oidc_merge_server_config(apr_pool_t *pool, void *BASE, void *ADD) { |
1633 | 1635 | c->provider.jwks_uri = |
1634 | 1636 | add->provider.jwks_uri != NULL ? |
1635 | 1637 | add->provider.jwks_uri : base->provider.jwks_uri; |
| 1638 | + c->provider.verify_public_keys = |
| 1639 | + add->provider.verify_public_keys != NULL ? |
| 1640 | + add->provider.verify_public_keys : |
| 1641 | + base->provider.verify_public_keys; |
1636 | 1642 | c->provider.client_id = |
1637 | 1643 | add->provider.client_id != NULL ? |
1638 | 1644 | add->provider.client_id : base->provider.client_id; |
@@ -2677,7 +2683,9 @@ static apr_status_t oidc_cleanup_child(void *data) { |
2677 | 2683 |
|
2678 | 2684 | // can do this even though we haven't got a deep copy |
2679 | 2685 | // since references within the object will be set to NULL |
2680 | | - oidc_jwk_list_destroy_hash(sp->process->pool, |
| 2686 | + oidc_jwk_list_destroy(sp->process->pool, |
| 2687 | + cfg->provider.verify_public_keys); |
| 2688 | + oidc_jwk_list_destroy(sp->process->pool, |
2681 | 2689 | cfg->oauth.verify_public_keys); |
2682 | 2690 | oidc_jwk_list_destroy_hash(sp->process->pool, |
2683 | 2691 | cfg->oauth.verify_shared_keys); |
@@ -3058,6 +3066,11 @@ const command_rec oidc_config_cmds[] = { |
3058 | 3066 | (void *)APR_OFFSETOF(oidc_cfg, provider.jwks_uri), |
3059 | 3067 | RSRC_CONF, |
3060 | 3068 | "Define the OpenID OP JWKS URL (e.g.: https://localhost:9031/pf/JWKS)"), |
| 3069 | + AP_INIT_ITERATE(OIDCProviderVerifyCertFiles, |
| 3070 | + oidc_set_public_key_files, |
| 3071 | + (void*)APR_OFFSETOF(oidc_cfg, provider.verify_public_keys), |
| 3072 | + RSRC_CONF, |
| 3073 | + "The fully qualified names of the files that contain the X.509 certificates that contains the RSA public keys that can be used for ID token validation."), |
3061 | 3074 | AP_INIT_TAKE1(OIDCResponseType, |
3062 | 3075 | oidc_set_response_type, |
3063 | 3076 | (void *)APR_OFFSETOF(oidc_cfg, provider.response_type), |
|
0 commit comments