Add enforce_ok_as_delegate setting
If this flag is set to true, then GSSAPI credential delegation will be disabled when the "ok-as-delegate" flag is not set in the service ticket.
This commit is contained in:

committed by
Viktor Dukhovni

parent
b5449e6c97
commit
8ee86db261
@@ -487,6 +487,17 @@ init_auth_restart
|
|||||||
|
|
||||||
*minor_status = 0;
|
*minor_status = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check if our configuration requires us to follow the KDC's
|
||||||
|
* guidance. If so, we transmogrify the GSS_C_DELEG_FLAG into
|
||||||
|
* the GSS_C_DELEG_POLICY_FLAG.
|
||||||
|
*/
|
||||||
|
if ((context->flags & KRB5_CTX_F_ENFORCE_OK_AS_DELEGATE)
|
||||||
|
&& (req_flags & GSS_C_DELEG_FLAG)) {
|
||||||
|
req_flags &= ~GSS_C_DELEG_FLAG;
|
||||||
|
req_flags |= GSS_C_DELEG_POLICY_FLAG;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the credential doesn't have ok-as-delegate, check if there
|
* If the credential doesn't have ok-as-delegate, check if there
|
||||||
* is a realm setting and use that.
|
* is a realm setting and use that.
|
||||||
|
@@ -234,6 +234,7 @@ init_context_from_config_file(krb5_context context)
|
|||||||
INIT_FIELD(context, int, max_msg_size, 1000 * 1024, "maximum_message_size");
|
INIT_FIELD(context, int, max_msg_size, 1000 * 1024, "maximum_message_size");
|
||||||
INIT_FLAG(context, flags, KRB5_CTX_F_DNS_CANONICALIZE_HOSTNAME, TRUE, "dns_canonicalize_hostname");
|
INIT_FLAG(context, flags, KRB5_CTX_F_DNS_CANONICALIZE_HOSTNAME, TRUE, "dns_canonicalize_hostname");
|
||||||
INIT_FLAG(context, flags, KRB5_CTX_F_CHECK_PAC, TRUE, "check_pac");
|
INIT_FLAG(context, flags, KRB5_CTX_F_CHECK_PAC, TRUE, "check_pac");
|
||||||
|
INIT_FLAG(context, flags, KRB5_CTX_F_ENFORCE_OK_AS_DELEGATE, FALSE, "enforce_ok_as_delegate");
|
||||||
|
|
||||||
if (context->default_cc_name)
|
if (context->default_cc_name)
|
||||||
free(context->default_cc_name);
|
free(context->default_cc_name);
|
||||||
|
@@ -232,6 +232,16 @@ See the TOKEN EXPANSION section.
|
|||||||
Use DNS SRV records to lookup KDC services location.
|
Use DNS SRV records to lookup KDC services location.
|
||||||
.It Li dns_lookup_realm = Va boolean
|
.It Li dns_lookup_realm = Va boolean
|
||||||
Use DNS TXT records to lookup domain to realm mappings.
|
Use DNS TXT records to lookup domain to realm mappings.
|
||||||
|
.It Li enforce_ok_as_delegate = Va boolean
|
||||||
|
If this flag to true, GSSAPI credential delegation will be
|
||||||
|
disabled when the
|
||||||
|
.Ar ok-as-delegate
|
||||||
|
flag is not set in the service ticket.
|
||||||
|
If this flag is false, the
|
||||||
|
.Ar ok-as-delegate
|
||||||
|
ticket flag is only enforced when an application specifically
|
||||||
|
requests enforcement.
|
||||||
|
The default value is false.
|
||||||
.It Li kdc_timesync = Va boolean
|
.It Li kdc_timesync = Va boolean
|
||||||
Try to keep track of the time differential between the local machine
|
Try to keep track of the time differential between the local machine
|
||||||
and the KDC, and then compensate for that when issuing requests.
|
and the KDC, and then compensate for that when issuing requests.
|
||||||
|
@@ -286,6 +286,7 @@ typedef struct krb5_context_data {
|
|||||||
#define KRB5_CTX_F_SOCKETS_INITIALIZED 8
|
#define KRB5_CTX_F_SOCKETS_INITIALIZED 8
|
||||||
#define KRB5_CTX_F_RD_REQ_IGNORE 16
|
#define KRB5_CTX_F_RD_REQ_IGNORE 16
|
||||||
#define KRB5_CTX_F_FCACHE_STRICT_CHECKING 32
|
#define KRB5_CTX_F_FCACHE_STRICT_CHECKING 32
|
||||||
|
#define KRB5_CTX_F_ENFORCE_OK_AS_DELEGATE 64
|
||||||
struct send_to_kdc *send_to_kdc;
|
struct send_to_kdc *send_to_kdc;
|
||||||
#ifdef PKINIT
|
#ifdef PKINIT
|
||||||
hx509_context hx509ctx;
|
hx509_context hx509ctx;
|
||||||
|
Reference in New Issue
Block a user