kdc: Add Heimdal cert ext for ticket max_life
This adds support for using a Heimdal-specific PKIX extension to derive a maximum Kerberos ticket lifetime from a client's PKINIT certificate. KDC configuration parameters: - pkinit_max_life_from_cert_extension - pkinit_max_life_bound If `pkinit_max_life_from_cert_extension` is set to true then the certificate extension or EKU will be checked. If `pkinit_max_life_bound` is set to a positive relative time, then that will be the upper bound of maximum Kerberos ticket lifetime derived from these extensions. The KDC config `pkinit_ticket_max_life_from_cert` that was added earlier has been renamed to `pkinit_max_life_from_cert`. See lib/hx509 and lib/krb5/krb5.conf.5.
This commit is contained in:
@@ -101,6 +101,9 @@ krb5_kdc_get_config(krb5_context context, krb5_kdc_configuration **config)
|
||||
c->enable_pkinit = FALSE;
|
||||
c->pkinit_princ_in_cert = TRUE;
|
||||
c->pkinit_require_binding = TRUE;
|
||||
c->pkinit_max_life_from_cert_extension = FALSE;
|
||||
c->pkinit_max_life_bound = 0;
|
||||
c->pkinit_dh_min_bits = 1024;
|
||||
c->db = NULL;
|
||||
c->num_db = 0;
|
||||
c->logf = NULL;
|
||||
@@ -283,6 +286,23 @@ krb5_kdc_get_config(krb5_context context, krb5_kdc_configuration **config)
|
||||
0,
|
||||
"kdc", "pkinit_dh_min_bits", NULL);
|
||||
|
||||
c->pkinit_max_life_from_cert_extension =
|
||||
krb5_config_get_bool_default(context, NULL,
|
||||
c->pkinit_max_life_from_cert_extension,
|
||||
"kdc",
|
||||
"pkinit_max_life_from_cert_extension",
|
||||
NULL);
|
||||
|
||||
c->pkinit_max_life_bound =
|
||||
krb5_config_get_time_default(context, NULL, 0, "kdc",
|
||||
"pkinit_max_life_bound",
|
||||
NULL);
|
||||
|
||||
c->pkinit_max_life_from_cert =
|
||||
krb5_config_get_time_default(context, NULL, 0, "kdc",
|
||||
"pkinit_max_life_from_cert",
|
||||
NULL);
|
||||
|
||||
*config = c;
|
||||
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user