Skip to content

Commit 5571d79

Browse files
iboukrissimo5
authored andcommitted
Cleanup s4u2proxy in mag_auth_basic
It doesn't have any effect since we set GSS_C_DELEG_FLAG when we initiate client credentials so we always get delegated TGT regardless of constrained delegation. This commit is not intended to change the current behaviour. See #70 Reviewed-by: Simo Sorce <[email protected]> Closes #70 Closes #72
1 parent f9cc367 commit 5571d79

File tree

2 files changed

+7
-18
lines changed

2 files changed

+7
-18
lines changed

README

+3
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,9 @@ This options requires GssapiDelegCcacheDir to be set. The ccache will be
182182
populated with the user's provided ticket which is later used as evidence
183183
ticket by the application.
184184

185+
**Note:** This flag has no effect when Basic-Auth is used since user's
186+
credentials are delegated anyway when GssapiDelegCcacheDir is set.
187+
185188
#### Example
186189
GssapiUseS4U2Proxy On
187190
GssapiCredStore keytab:/etc/httpd.keytab

src/mod_auth_gssapi.c

+4-18
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,6 @@ static bool mag_auth_basic(request_rec *req,
362362
struct mag_config *cfg,
363363
gss_buffer_desc ba_user,
364364
gss_buffer_desc ba_pwd,
365-
gss_cred_usage_t cred_usage,
366365
gss_name_t *client,
367366
gss_OID *mech_type,
368367
gss_cred_id_t *delegated_cred,
@@ -380,7 +379,6 @@ static bool mag_auth_basic(request_rec *req,
380379
gss_name_t server = GSS_C_NO_NAME;
381380
gss_cred_id_t server_cred = GSS_C_NO_CREDENTIAL;
382381
gss_ctx_id_t server_ctx = GSS_C_NO_CONTEXT;
383-
gss_cred_id_t acquired_cred = GSS_C_NO_CREDENTIAL;
384382
gss_buffer_desc input = GSS_C_EMPTY_BUFFER;
385383
gss_buffer_desc output = GSS_C_EMPTY_BUFFER;
386384
gss_OID_set allowed_mechs;
@@ -494,20 +492,10 @@ static bool mag_auth_basic(request_rec *req,
494492

495493
/* must acquire creds based on the actual mechs we want to try */
496494
if (!mag_acquire_creds(req, cfg, actual_mechs,
497-
cred_usage, &acquired_cred, NULL)) {
495+
GSS_C_ACCEPT, &server_cred, NULL)) {
498496
goto done;
499497
}
500498

501-
if (cred_usage == GSS_C_BOTH) {
502-
/* must acquire with GSS_C_ACCEPT to get the server name */
503-
if (!mag_acquire_creds(req, cfg, actual_mechs,
504-
GSS_C_ACCEPT, &server_cred, NULL)) {
505-
goto done;
506-
}
507-
} else {
508-
server_cred = acquired_cred;
509-
}
510-
511499
#ifdef HAVE_CRED_STORE
512500
if (cfg->deleg_ccache_dir) {
513501
/* delegate ourselves credentials so we store them as requested */
@@ -545,7 +533,7 @@ static bool mag_auth_basic(request_rec *req,
545533
break;
546534
}
547535
gss_release_buffer(&min, &output);
548-
maj = gss_accept_sec_context(&min, &server_ctx, acquired_cred,
536+
maj = gss_accept_sec_context(&min, &server_ctx, server_cred,
549537
&input, GSS_C_NO_CHANNEL_BINDINGS,
550538
client, mech_type, &output, NULL,
551539
vtime, delegated_cred);
@@ -568,10 +556,8 @@ static bool mag_auth_basic(request_rec *req,
568556
gss_release_buffer(&min, &output);
569557
gss_release_buffer(&min, &input);
570558
gss_release_name(&min, &server);
571-
if (server_cred != acquired_cred)
572-
gss_release_cred(&min, &server_cred);
573559
gss_delete_sec_context(&min, &server_ctx, GSS_C_NO_BUFFER);
574-
gss_release_cred(&min, &acquired_cred);
560+
gss_release_cred(&min, &server_cred);
575561
gss_release_name(&min, &user);
576562
gss_release_cred(&min, &user_cred);
577563
gss_delete_sec_context(&min, &user_ctx, GSS_C_NO_BUFFER);
@@ -849,7 +835,7 @@ static int mag_auth(request_rec *req)
849835

850836
if (auth_type == AUTH_TYPE_BASIC) {
851837
if (mag_auth_basic(req, cfg, ba_user, ba_pwd,
852-
cred_usage, &client, &mech_type,
838+
&client, &mech_type,
853839
&delegated_cred, &vtime)) {
854840
goto complete;
855841
}

0 commit comments

Comments
 (0)