lib/krb5: krb5_cc_set_default_name Windows MSLSA:
If there is no default credential cache obtained from the registry or from configuration files, then check to see if there is a valid principal available from the MSLSA: credential cache. If so, use "MSLSA:" as the default credential cache. This will simply configuration for users on domain joined Windows machines when logged in using a domain account. Change-Id: I4c4392e0fdcec89aff3d258ce1b753e6458e3eec
This commit is contained in:
@@ -513,6 +513,7 @@ krb5_cc_set_default_name(krb5_context context, const char *name)
|
||||
krb5_error_code ret = 0;
|
||||
char *p = NULL, *exp_p = NULL;
|
||||
int filepath;
|
||||
const krb5_cc_ops *ops = KRB5_DEFAULT_CCTYPE;
|
||||
|
||||
if (name == NULL) {
|
||||
const char *e = NULL;
|
||||
@@ -542,7 +543,6 @@ krb5_cc_set_default_name(krb5_context context, const char *name)
|
||||
}
|
||||
}
|
||||
if (p == NULL) {
|
||||
const krb5_cc_ops *ops = KRB5_DEFAULT_CCTYPE;
|
||||
e = krb5_config_get_string(context, NULL, "libdefaults",
|
||||
"default_cc_type", NULL);
|
||||
if (e) {
|
||||
@@ -555,6 +555,27 @@ krb5_cc_set_default_name(krb5_context context, const char *name)
|
||||
return KRB5_CC_UNKNOWN_TYPE;
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifdef _WIN32
|
||||
if (p == NULL) {
|
||||
/*
|
||||
* If the MSLSA ccache type has a principal name,
|
||||
* use it as the default.
|
||||
*/
|
||||
krb5_ccache id;
|
||||
ret = krb5_cc_resolve(context, "MSLSA:", &id);
|
||||
if (ret == 0) {
|
||||
krb5_principal princ;
|
||||
ret = krb5_cc_get_principal(context, id, &princ);
|
||||
if (ret == 0) {
|
||||
krb5_free_principal(context, princ);
|
||||
p = strdup("MSLSA:");
|
||||
}
|
||||
krb5_cc_close(context, id);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (p == NULL) {
|
||||
ret = (*ops->get_default_name)(context, &p);
|
||||
if (ret)
|
||||
return ret;
|
||||
@@ -562,12 +583,11 @@ krb5_cc_set_default_name(krb5_context context, const char *name)
|
||||
context->default_cc_name_set = 0;
|
||||
} else {
|
||||
p = strdup(name);
|
||||
if (p == NULL)
|
||||
return krb5_enomem(context);
|
||||
context->default_cc_name_set = 1;
|
||||
}
|
||||
|
||||
if (p == NULL)
|
||||
return krb5_enomem(context);
|
||||
|
||||
filepath = (strncmp("FILE:", p, 5) == 0
|
||||
|| strncmp("DIR:", p, 4) == 0
|
||||
|| strncmp("SCC:", p, 4) == 0);
|
||||
|
Reference in New Issue
Block a user