diff options
Diffstat (limited to 'auth')
-rw-r--r-- | auth/credentials/credentials_krb5.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/auth/credentials/credentials_krb5.c b/auth/credentials/credentials_krb5.c index 2a23688ffd..2c93a8febc 100644 --- a/auth/credentials/credentials_krb5.c +++ b/auth/credentials/credentials_krb5.c @@ -486,8 +486,18 @@ _PUBLIC_ int cli_credentials_get_client_gss_creds(struct cli_credentials *cred, } } - ret = cli_credentials_get_ccache(cred, event_ctx, lp_ctx, - &ccache, error_string); + + if (cred->ccache_obtained == CRED_UNINITIALISED) { + /* Only attempt to re-acquire ccache if it is not already in place. + * this is important for client-side use within frameworks with already acquired tickets + * like Apache+mod_auth_kerb+Python + */ + ret = cli_credentials_get_ccache(cred, event_ctx, lp_ctx, + &ccache, error_string); + } else { + ccache = cred->ccache; + } + if (ret) { if (cli_credentials_get_kerberos_state(cred) == CRED_MUST_USE_KERBEROS) { DEBUG(1, ("Failed to get kerberos credentials (kerberos required): %s\n", *error_string)); |