WebKDC.3pm

Langue: en

Version: 2009-09-08 (ubuntu - 24/10/10)

Section: 3 (Bibliothèques de fonctions)

NAME

WebKDC - functions to support the WebKDC

SYNOPSIS

   use WebAuth;
   use WebKDC;
   use WebKDC::Exception;
   use WebKDC::WebRequest;
   use WebKDC::WebResponse;
 
   my ($status, $exception) = 
          WebKDC::make_request_token_request($req, $resp);
 
 

DESCRIPTION

WebKDC is a set of convenience functions built on top of mod WebAuth to implement the WebKDC.

All functions have the potential to throw either a WebKDC::WebKDCException or WebAuth::Exception.

EXPORT

None

FUNCTIONS

make_request_token_request(req,resp)
   ($status, $e) = WebKDC::make_request_token_request($req, $resp);
 
 

Used to handle an incoming request token. It should be used in the following fashion:

   my $req = new WebKDC::WebRequest;
   my $resp = new WebKDC::WebResponse;
 
   # if the user just submitted their username/password, include them
   if ($username && $password) {
     $req->user($username);
     $req->pass($password);
   }
 
   # pass in any proxy-tokens we have from a cookies
   # i.e., enumerate through all cookies that start with webauth_wpt
   # and put them into a hash:
   # $cookies = { "webauth_wpt_krb5" => $cookie_value }
    
   $req->proxy_cookies($cookies);
 
   # $req_token_str and $service_token_str would normally get
   # passed in via query/post parameters
 
   $req->request_token($req_token_str);
   $req->service_token($service_token_str);
 
   my ($status, $e) = WebKDC::make_request_token_request($req, $resp);
 
   # for all these cases, check if $resp->proxy_cookies() has any
   # proxy cookies we need to update when sending back a page to
   # the browser
 
   if ($status == WK_SUCCESS) {
      # ok, request succesful
   } elsif ($status == WK_ERR_USER_AND_PASS_REQUIRED
            || $status == WK_LOGIN_FORCED) {
      # prompt for user/pass
   } elsif ($status == WK_ERR_LOGIN_FAILED) {
      # supplied user/pass was invalid, try again
   } else {
     # use this if/elsif/else to pick the error message
     if ($status == WK_ERR_UNRECOVERABLE_ERROR) {
        # something nasty happened.
     } elsif ($status == WK_ERR_REQUEST_TOKEN_STATLE) {
        # user took too long to login, original request token is stale
     } elsif ($status == WK_ERR_WEBAUTH_SERVER_ERROR) {
        # like WK_ERR_UNRECOVERABLE_ERROR, but indicates the error
        # most likely is due to the webauth server making the request,
     } else {
        # treat like WK_ERROR_UNRECOVERABLE ERROR
     }
     # display the error message and don't prompt anymore
   }
 
 

AUTHOR

Roland Schemers (schemers@stanford.edu)

SEE ALSO

WebKDC::WebKDCException WebKDC::Token WebKDC::WebRequest WebKDC::WebRespsonse WebAuth.