The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Gantry::Plugins::Uaf - A User Authentication and Authorization Framework

SYNOPSIS

In the Apache Perl startup or app.cgi or app.server:

    <Perl>
        # ...
        use MyApp qw{ -Engine=CGI -TemplateEngine=TT Cache Session Uaf};
    </Perl>
    

Inside MyApp.pm:

    use Gantry::Plugins::Uaf;

DESCRIPTION

This plugin mixes in a method that will provide session authentication and user authorization. Session authentication is based on a valid username and password. While user authorization is based on application defined rules which grant access to resources. The goal of this module is to be simple and flexiable.

To met this goal four objects are defined. They are Authenticate, Authorize, User and Rule. This package provides basic implementations of those objects.

The Rule object either grants or denies access to a resource. The access is anything you want to use. A resource can be anything you define.

The User object consists of username and attributes. You can define as many and whatever attributes you want. The User object is not tied to any one datastore.

The base Authenticate object has two users hardcoded within. Those users are "admin" and "demo", with corresponding passwords. This object handles the authentication along with basic login and logout functionality.

The base Authorization object has only one rule defined: AllowAll.

Using the default, provided, Authentication and Authorization modules should allow you get your application up and running in minimal time. Once that is done, then you can define your User datastore, what your application rules are and then create your objects. Once you do that, then you can load your own modules with the following config variables.

 uaf_authn_factory - The module name for your Authentication object
 uaf_authz_factory - The module name for your Authorization object

The defaults for those are:

 Gantry::Plugins::Uaf::Authorize
 Gantry::Plugins::Uaf::Authenticate

These modules must be on the Perl include path and are loaded during Gantry's startup processing. This plugin also requires the Session plugin.

METHODS

uaf_authenticate

The method that is called for every url. It controls the authentication process, loads the User object and sets the scurity token.

ACCESSORS

uaf_authn

Returns the handle for the Authentication object.

uaf_authz

Returns the handle for the Authorization object.

Example:

     $manager = $gobj->uaf_authz;
     if ($manager->can($user, "read", "data")) {
    
     }
uaf_user

Set/Returns the handle for the User object.

Example:

     $user = $gobj->uaf_user;
     $gobj->uaf_user($user);

PRIVATE METHODS

get_callbacks

For use by Gantry. Registers the callbacks needed by Uaf during the PerlHandler Apache phase or its moral equivalent.

initialize

This method is called by Gantry it will load and initialize your Authentication and Authorization modules.

do_login

Exposes the url "/login", and calls the login() method of your Authenticaton module.

do_logout

Exposes the url "/logout", and calls the logout() method of your Authentication module.

SEE ALSO

 Gantry
 Gantry::Plugins::Session
 Gantry::Plugins::Uaf::Rule
 Gantry::Plugins::Uaf::User
 Gantry::Plugins::Uaf::Authorize
 Gantry::Plugins::Uaf::Authenticate
 Gantry::Plugins::Uaf::AuthorizeFactory

ACKNOWLEGEMENT

This module was heavily influenced by Apache2::SiteControl written by Tony Kay, <tkay@uoregon.edu>.

AUTHOR

Kevin L. Esteb <kesteb@wsipc.org>

COPYRIGHT AND LICENSE

Copyright (C) 2008 Kevin L. Esteb

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.