]> andersk Git - moira.git/blobdiff - reg_svr/kerberos.c
Command line printer manipulation client, and build goo.
[moira.git] / reg_svr / kerberos.c
index 870dfd416c20a80570b04852db01e4f32638edd6..e24098306aed23356d51e793ad1d264e2ff89185 100644 (file)
@@ -21,6 +21,9 @@
 
 #include <com_err.h>
 
+#define KRB5_DEPRECATED 1
+#define KRB5_PRIVATE 1
+
 #ifdef KRB4
 #include <des.h>
 #include <kadm.h>
@@ -31,7 +34,6 @@
 #ifdef KRB5
 #include <kadm5/admin.h>
 #include <krb5.h>
-#include <krb.h>
 
 krb5_context context;
 #endif
@@ -113,8 +115,10 @@ long register_kerberos(char *username, char *password)
   void *kadm_server_handle = NULL;
   kadm5_ret_t status;
   kadm5_principal_ent_rec princ;
+  kadm5_policy_ent_rec defpol;
   kadm5_config_params realm_params;
   char admin_princ[256];
+  long mask = 0;
 #ifdef KERBEROS_TEST_REALM
   char ubuf[256];
 
@@ -128,6 +132,8 @@ long register_kerberos(char *username, char *password)
   realm_params.mask = 0;
 #endif
 
+  memset(&princ, 0, sizeof(princ));
+
   status = krb5_parse_name(context, username, &(princ.principal));
   if (status)
     return status;
@@ -139,8 +145,16 @@ long register_kerberos(char *username, char *password)
   if (status)
     goto cleanup;
 
-  status = kadm5_create_principal(kadm_server_handle, &princ,
-                                 KADM5_PRINCIPAL, password);
+  /* Assign "default" policy if it exists. */
+  if (!kadm5_get_policy(kadm_server_handle, "default", &defpol))
+    {
+      princ.policy = "default";
+      mask |= KADM5_POLICY;
+      (void) kadm5_free_policy_ent(kadm_server_handle, &defpol);
+    } 
+
+  mask |= KADM5_PRINCIPAL;
+  status = kadm5_create_principal(kadm_server_handle, &princ, mask, password);
 
 cleanup:
   krb5_free_principal(context, princ.principal);
@@ -184,7 +198,7 @@ long register_kerberos(char *username, char *password)
   unsigned long *lkey = (unsigned long *)key;
 
   if ((status = krb_get_svc_in_tkt(MOIRA_SNAME, shorthostname, realm,
-                                  PWSERV_NAME, KADM_SINST, 1, KEYFILE)))
+                                  PWSERV_NAME, KADM_SINST, 3, KEYFILE)))
     return status;
 
   if ((status = kadm_init_link(PWSERV_NAME, KADM_SINST, realm)) !=
This page took 0.045176 seconds and 4 git commands to generate.