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 successful
} 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.