Credentials via gss_acquire_cred and GSS_C_BOTH

Nick Thurn nick.thurn at db.com
Mon Nov 24 18:19:58 EST 2003


Hi Folks,

I have a server/client combination using the GSSAPI that comes with the MIT
distribution. It happily works when the server just accepts and the client just
initiates.

I need to be able to both accept and initiate from the server so changed my code
to use GSS_C_BOTH. The result is the following errors.

   kilmer: ~/bin>testgss --server
   GSSAPI error: acquiring credentials: Miscellaneous failure
   GSSAPI error: acquiring credentials: Permission denied

It is very important to be able to initiate connections from a service as our environment
has many situations where where unattended service to service communications are
required.

If anyone could help I would be most grateful. I have downloaded the list archive but can
find no mention of this issue

The code used is below and works fine with GSS_C_ACCEPT.

cheers
Nick


   bool
   gss::server::Imp::acquire()
   {
           OM_uint32  major;
           OM_uint32  minor;

           gss_name_t target = GSS_C_NO_NAME;

           if (service[0] != 0)
           {
                   gss_buffer_desc namebuf;

                   namebuf.value  = const_cast<char*>(service);
                   namebuf.length = strlen(service) + 1;

                   major = gss_import_name(&minor,
                                           &namebuf,
                                           (gss_OID) gss_nt_service_name,
                                           &target);

                   if (major != GSS_S_COMPLETE)
                   {
                           log_status("importing service name",
                                                   major, minor);
                           return false;
                   }
           }
           // release and zero existing credentials
           if (credentials != GSS_C_NO_CREDENTIAL)
           {
                   gss_release_cred(&minor, &credentials);
                   credentials = GSS_C_NO_CREDENTIAL;
           }
           // warn if there's no keytab variable
           if (! getenv("KRB5_KTNAME") && logfn)
                   logfn("GSSAPI warning: $KRB5_KTNAME not defined");

           major = gss_acquire_cred(&minor,
                                       target,
                                       0,
                                       GSS_C_NULL_OID_SET,
                                       GSS_C_BOTH,
                                       &credentials,
                                       NULL,
                                       NULL);

           if (major != GSS_S_COMPLETE)
                   log_status("acquiring credentials", major, minor);

           if (target != GSS_C_NO_NAME)
                   gss_release_name(&minor, &target);

           return (major == GSS_S_COMPLETE);
   }

   CBTO-GRT IT Sydney
   +61-2-9258-1394




--

This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden.




More information about the Kerberos mailing list