[1181] in Kerberos_V5_Development

home help back first fref pref prev next nref lref last post

krb5_db_entry and kadm5 info

daemon@ATHENA.MIT.EDU (Barry Jaspan)
Wed May 15 15:56:23 1996

Date: Wed, 15 May 1996 15:56:08 -0400
From: "Barry Jaspan" <bjaspan@MIT.EDU>
To: krbdev@MIT.EDU


The OV admin system associates some information with principals that
is not stored in the krb5_db_entry (basically, the principal's policy
and password history).  When you call ovsec_kadm_get_principal, you
get back a data type called ovsec_kadm_principal_ent_t which contains
a union of the data from the krb5_db_entry and from the admin
database; this mostly-redundant structure was necessary because the
krb5_db_entry did not have space for the admin fields the OV system
needed to return.

In the current integration so far, the data that used to be stored in
a separate admin database is now stored in a tl_data structure.  Thus,
in principle, the redundant structure ovsec_kadm_principal_ent_t is no
longer necessary.  kadm5_get_principal can just return the
krb5_db_entry for the requested principal.

This is a really ugly solution, however, because of the use of
tl_data.  If you want to access admin info (say, the policy name), you
have to (1) call kadm5_get_principal and (2) call
krb5_dbe_lookup_tl_data.  Simiarly, to update data, you can't just
call kadm5_put_principal, you first have to call
krb5_dbe_upate_tl_data too.  It also requires that we either define a
searpate tl_data type for each piece of admin data or (as it is now)
require a program to deal with *all* the admin data every time it
wants to touch any of it.  Blech.

The basic problem here is that the entire tl_data setup is difficult
to work with.  I think that all the data contained in the
krb5_db_entry should be directly accessible rather than having some of
it buried in a linked list.  Since the admin system requires new
information to be added to entries, we should just define a new
database entry version.  There does not seem to be an explicit
database entry versioning system in place, though; however, we are
probably going to force users to do a dump/load cycle with krb5 1.0
anyway, so this is a good time to introduce one.

In short, I'd like to remove the tl_data list from krb5_db_entry, and
add the following fields:

	int			version;	/* database entry vno */

	krb5_timestamp		last_pwd_change;
	krb5_timestamp		mod_date;
	krb5_principal		mod_princ;
	char *			policy;		/* admin policy name */
	krb5_key_data		*hist_data;	/* password history */

Comments?  Why was the tl_data list created in the first place?  Does
anyone even follow what I'm talking about? :-)

Barry

home help back first fref pref prev next nref lref last post