Skip to content

Commit c889f14

Browse files
committed
code: introduce oidc_util_url_matches_redirect_uri
Signed-off-by: Hans Zandbelt <[email protected]>
1 parent 1e2ee62 commit c889f14

File tree

7 files changed

+29
-10
lines changed

7 files changed

+29
-10
lines changed

src/handle/content.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,12 @@ int oidc_content_handler(request_rec *r) {
5959
if (_oidc_strcmp(r->parsed_uri.path, oidc_cfg_metrics_path_get(c)) == 0)
6060
return oidc_metrics_handle_request(r);
6161

62-
if (oidc_enabled(r) == FALSE) {
62+
if (oidc_enabled(r, c) == FALSE) {
6363
OIDC_METRICS_COUNTER_INC(r, c, OM_CONTENT_REQUEST_DECLINED);
6464
return DECLINED;
6565
}
6666

67-
if (oidc_util_url_cur_matches(r, oidc_util_url_redirect_uri(r, c)) == TRUE) {
67+
if (oidc_util_url_matches_redirect_uri(r, c) == TRUE) {
6868

6969
/* requests to the redirect URI are handled and finished here */
7070
rc = OK;

src/mod_auth_openidc.c

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ const char *oidc_original_request_method(request_rec *r, oidc_cfg_t *cfg, apr_by
310310
const char *method = OIDC_METHOD_GET;
311311

312312
char *m = NULL;
313-
if ((handle_discovery_response == TRUE) && (oidc_util_url_cur_matches(r, oidc_util_url_redirect_uri(r, cfg))) &&
313+
if ((handle_discovery_response == TRUE) && (oidc_util_url_matches_redirect_uri(r, cfg)) &&
314314
(oidc_is_discovery_response(r, cfg))) {
315315
oidc_util_url_parameter_get(r, OIDC_DISC_RM_PARAM, &m);
316316
if (m != NULL)
@@ -1249,7 +1249,7 @@ static int oidc_check_userid_openidc(request_rec *r, oidc_cfg_t *c) {
12491249
oidc_session_load(r, &session);
12501250

12511251
/* see if the initial request is to the redirect URI; this handles potential logout too */
1252-
if (oidc_util_url_cur_matches(r, oidc_util_url_redirect_uri(r, c))) {
1252+
if (oidc_util_url_matches_redirect_uri(r, c) == TRUE) {
12531253

12541254
/* handle request to the redirect_uri */
12551255
rc = oidc_handle_redirect_uri_request(r, c, session);
@@ -1330,7 +1330,7 @@ static int oidc_check_mixed_userid_oauth(request_rec *r, oidc_cfg_t *c) {
13301330

13311331
int oidc_fixups(request_rec *r) {
13321332
oidc_cfg_t *c = ap_get_module_config(r->server->module_config, &auth_openidc_module);
1333-
if (oidc_enabled(r) == TRUE) {
1333+
if (oidc_enabled(r, c) == TRUE) {
13341334
OIDC_METRICS_TIMING_REQUEST_ADD(r, c, OM_MOD_AUTH_OPENIDC);
13351335
return OK;
13361336
}
@@ -1351,7 +1351,7 @@ int oidc_check_user_id(request_rec *r) {
13511351
oidc_debug(r, "incoming request: \"%s?%s\", ap_is_initial_req(r)=%d", r->parsed_uri.path, r->args,
13521352
ap_is_initial_req(r));
13531353

1354-
if (oidc_enabled(r) == FALSE) {
1354+
if (oidc_enabled(r, c) == FALSE) {
13551355
OIDC_METRICS_COUNTER_INC(r, c, OM_AUTHTYPE_DECLINED);
13561356
return DECLINED;
13571357
}
@@ -1387,7 +1387,11 @@ int oidc_check_user_id(request_rec *r) {
13871387
/*
13881388
* check of mod_auth_openidc needs to handle this request
13891389
*/
1390-
apr_byte_t oidc_enabled(request_rec *r) {
1390+
apr_byte_t oidc_enabled(request_rec *r, oidc_cfg_t *c) {
1391+
1392+
// if (oidc_util_url_matches_redirect_uri(r, c) == TRUE)
1393+
// return TRUE;
1394+
13911395
if (ap_auth_type(r) == NULL)
13921396
return FALSE;
13931397

@@ -1821,7 +1825,9 @@ static const char oidcFilterName[] = "oidc_filter_in_filter";
18211825
*/
18221826
static void oidc_filter_in_insert_filter(request_rec *r) {
18231827

1824-
if (oidc_enabled(r) == FALSE)
1828+
oidc_cfg_t *c = ap_get_module_config(r->server->module_config, &auth_openidc_module);
1829+
1830+
if (oidc_enabled(r, c) == FALSE)
18251831
return;
18261832

18271833
if (ap_is_initial_req(r) == 0)

src/mod_auth_openidc.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@
140140

141141
int oidc_check_user_id(request_rec *r);
142142
int oidc_fixups(request_rec *r);
143-
apr_byte_t oidc_enabled(request_rec *r);
143+
apr_byte_t oidc_enabled(request_rec *r, oidc_cfg_t *c);
144144
void oidc_request_state_set(request_rec *r, const char *key, const char *value);
145145
const char *oidc_request_state_get(request_rec *r, const char *key);
146146
void oidc_scrub_headers(request_rec *r);

src/oauth.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,7 @@ int oidc_oauth_check_userid(request_rec *r, oidc_cfg_t *c, const char *access_to
669669
}
670670

671671
/* check if this is a request to the "special" handler (Redirect URI) */
672-
} else if (oidc_util_url_cur_matches(r, oidc_util_url_redirect_uri(r, c))) {
672+
} else if (oidc_util_url_matches_redirect_uri(r, c) == TRUE) {
673673

674674
/* check if this is a request for the public (encryption) keys */
675675
if (oidc_util_url_has_parameter(r, OIDC_REDIRECT_URI_REQUEST_JWKS)) {

src/util/url.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,13 @@ apr_byte_t oidc_util_url_cur_matches(request_rec *r, const char *url) {
290290
return (_oidc_strcmp(r->parsed_uri.path, uri.path) == 0);
291291
}
292292

293+
/*
294+
* see if the currently accessed path matches the Redirect URI
295+
*/
296+
apr_byte_t oidc_util_url_matches_redirect_uri(request_rec *r, oidc_cfg_t *cfg) {
297+
return oidc_util_url_cur_matches(r, oidc_util_url_redirect_uri(r, cfg));
298+
}
299+
293300
/*
294301
* see if the currently accessed path has a certain query parameter
295302
*/

src/util/util.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ apr_byte_t oidc_util_url_cur_is_secure(request_rec *r, oidc_cfg_t *c);
126126
apr_byte_t oidc_util_url_cur_matches(request_rec *r, const char *url);
127127
const char *oidc_util_url_abs(request_rec *r, oidc_cfg_t *cfg, const char *url);
128128
const char *oidc_util_url_redirect_uri(request_rec *r, oidc_cfg_t *c);
129+
apr_byte_t oidc_util_url_matches_redirect_uri(request_rec *r, oidc_cfg_t *cfg);
129130
apr_byte_t oidc_util_url_has_parameter(request_rec *r, const char *param);
130131
apr_byte_t oidc_util_url_parameter_get(request_rec *r, char *name, char **value);
131132

test/test_util.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -744,12 +744,17 @@ END_TEST
744744

745745
START_TEST(test_util_url_matches) {
746746
request_rec *r = oidc_test_request_get();
747+
oidc_cfg_t *c = oidc_test_cfg_get();
748+
747749
ck_assert_msg(oidc_util_url_cur_matches(r, NULL) == FALSE, "match");
748750
ck_assert_msg(oidc_util_url_cur_matches(r, "sss//www.example.com/bla") == FALSE, "match");
749751
ck_assert_msg(oidc_util_url_cur_matches(r, "https://www.example.com/bla") == TRUE, "no match");
750752
ck_assert_msg(oidc_util_url_cur_matches(r, "https://www.example.com/bla2") == FALSE, "match");
751753
r->parsed_uri.path = NULL;
752754
ck_assert_msg(oidc_util_url_cur_matches(r, "https://www.example.com/bla2") == FALSE, "match");
755+
ck_assert_msg(oidc_util_url_matches_redirect_uri(r, c) == FALSE, "match");
756+
apr_uri_parse(r->pool, "https://www.example.com/protected/", &r->parsed_uri);
757+
ck_assert_msg(oidc_util_url_matches_redirect_uri(r, c) == TRUE, "no match");
753758
}
754759
END_TEST
755760

0 commit comments

Comments
 (0)