Authen-Krb5-Easy
view release on metacpan or search on metacpan
All functions will need to be imported.
=over 4
=item kinit($keytab, $principle)
This uses the keytab file specified in $keytab and uses it to acquire a ticket granting ticket for $principle. This is functionally equivalent to system("kinit -k -t $keytab $principle"), but is done directly through the kerberos libraries.
=item kdestroy()
Erases all credentials in the ticket file.
=item kerror()
returns an error string ended with a "\n" that describes what error happened.
=item kcheck($keytab, $principle)
Checks to see if the ticket has expired, and if it has, get a new one using $keytab and $principle.
=item kexpires()
{
krb_error_while_doing = "could not resolve keytab";
krb_error_string = (char *)error_message(code);
krb_error_code = code;
XSRETURN_UNDEF;
}
code = krb5_get_init_creds_keytab(context, &creds, princ, keytab, 0, NULL, &options);
if(code)
{
krb_error_while_doing = "could not get initial credentials";
krb_error_string = (char *)error_message(code);
krb_error_code = code;
XSRETURN_UNDEF;
}
krb_expires = creds.times.endtime;
code = krb5_cc_initialize(context, ccache, princ);
if(code)
{
krb_error_while_doing = "could not initialize cache";
krb_error_string = (char *)error_message(code);
krb_error_code = code;
XSRETURN_UNDEF;
}
code = krb5_cc_store_cred(context, ccache, &creds);
if(code)
{
krb_error_while_doing = "could not store credentials";
krb_error_string = (char *)error_message(code);
krb_error_code = code;
XSRETURN_UNDEF;
}
krb5_free_cred_contents(context, &creds);
krb5_kt_close(context, keytab);
# /* clean up*/
krb5_free_principal(context, princ);
if(code && code != KRB5_CC_END)
{
krb_error_while_doing = "could not read next credential";
krb_error_string = (char *)error_message(code);
krb_error_code = code;
XSRETURN_UNDEF;
}
code = krb5_cc_end_seq_get(context, ccache, ¤t);
if(code)
{
krb_error_while_doing = "could not finish reading credentials";
krb_error_string = (char *)error_message(code);
krb_error_code = code;
XSRETURN_UNDEF;
}
flags = KRB5_TC_OPENCLOSE;
code = krb5_cc_set_flags(context, ccache, flags);
if(code)
{
krb_error_while_doing = "could not set ccache flags";
krb_error_string = (char *)error_message(code);
( run in 0.306 second using v1.01-cache-2.11-cpan-4d50c553e7e )