]> git.ipfire.org Git - thirdparty/krb5.git/commit
Add alias support 1393/head
authorGreg Hudson <ghudson@mit.edu>
Wed, 15 Jan 2025 02:25:51 +0000 (21:25 -0500)
committerGreg Hudson <ghudson@mit.edu>
Thu, 27 Feb 2025 18:04:45 +0000 (13:04 -0500)
commit5d3fe31bf1dc48e8ee946bf65428611958cac329
treecd33bf73c6b47418744c66b9d0fd416cf7a1ae53
parent5f33fb2cf19562175c8271cb9c54a67212f63b93
Add alias support

Add a new kadmin command add_alias.  Implement it for DB2 and LMDB by
writing stub principal entries with a tl-data entry giving the target
name.  Add libkdb5 functions to create and interpret alias entries.
Handle these stub entries in krb5_db_get_principal(), iteratively
resolving aliases up to a depth of 10.

To allow kadm5_delete_principal() to work on aliases, remove the code
that fetches the entry prior to deletion; it was needed before commit
0780e46fc13dbafa177525164997cd204cc50b51 to decrement the policy
reference count, but now serves no purpose.  Adjust kdb_delete_entry()
to translate KRB5_KDB_NOENTRY instead of ignoring it, as we still want
to return KADM5_UNK_PRINC when deleting a nonexistent principal name.

Modify the LDAP KDB module to work with alias entries.  In
krb5_ldap_put_principal(), recognize stub alias entries and add an
alias to the object for the target principal.  In
krb5_ldap_delete_principal(), don't delete the LDAP object when
deleting an alias name.  In krb5_ldap_iterate(), generate stub entries
for each alias name in addition to the populated entry for the
canonical name.  A small amount of refactoring was done as part of
this work: the LDAP-specific principal name parsing and unparsing
functions were simplified, and a helper function search_princ() was
added to find the LDAP object for a principal name.

In kdb5_util tabdump, add a dump type "alias" to display a list of
aliases in the database.

Based on work by Alexander Bokovoy.
40 files changed:
doc/admin/admin_commands/kadmin_local.rst
doc/admin/admin_commands/kdb5_util.rst
doc/admin/conf_ldap.rst
doc/admin/database.rst
src/include/kdb.h
src/include/krb5/kadm5_auth_plugin.h
src/include/krb5/kadm5_hook_plugin.h
src/kadmin/cli/kadmin.c
src/kadmin/cli/kadmin.h
src/kadmin/cli/kadmin_ct.ct
src/kadmin/dbutil/tabdump.c
src/kadmin/server/auth.c
src/kadmin/server/auth.h
src/kadmin/server/auth_acl.c
src/kadmin/server/kadm_rpc_svc.c
src/kadmin/server/server_stubs.c
src/lib/kadm5/admin.h
src/lib/kadm5/admin_xdr.h
src/lib/kadm5/clnt/client_principal.c
src/lib/kadm5/clnt/client_rpc.c
src/lib/kadm5/clnt/libkadm5clnt_mit.exports
src/lib/kadm5/kadm_err.et
src/lib/kadm5/kadm_rpc.h
src/lib/kadm5/kadm_rpc_xdr.c
src/lib/kadm5/server_internal.h
src/lib/kadm5/srv/kadm5_hook.c
src/lib/kadm5/srv/libkadm5srv_mit.exports
src/lib/kadm5/srv/server_kdb.c
src/lib/kadm5/srv/svr_principal.c
src/lib/kdb/kdb5.c
src/lib/kdb/libkdb5.exports
src/lib/krb5/error_tables/kdb5_err.et
src/plugins/kdb/ldap/libkdb_ldap/ldap_principal.c
src/plugins/kdb/ldap/libkdb_ldap/ldap_principal.h
src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c
src/tests/Makefile.in
src/tests/t_alias.py [new file with mode: 0755]
src/tests/t_kadmin_acl.py
src/tests/t_kdb.py
src/tests/t_tabdump.py