Apache2-AuthAny

Apache2::AuthAny utilizes other authentication modules or internal
code, and provides a single "GATE" page where the end user can choose
between authentication mechanisms. AuthAny was developed to provide
login to the Gossamer Health system. Login mechanisms for Gossamer
include Google (OpenID), ProtectNetwork and UW NetID (Shibboleth),
HTTP Authentication (LDAP and basic). Logout is supported for all
mechanisms, including HTTP authentication which is not normally
possible. AuthAny includes a role-based authorization system.

The system supports the following features:

    * Identity providers can be added through configuration.
    * Log out without closing the browser window.
    * Linking of accounts from different providers to a single identity.
    * Apache "Require" directives for user or role authorization.
    * Environment variables are passed to the protected application.
    * Command-line tool for adding and updating users.
    * Configurable timeout allowing both a "recognized" state and an 
      "authenticated" state.

The University of Washington maintains a demo site at:

 https://authany.cirg.washington.edu/

INSTALLATION

AuthAny requires a relational database. The db/auth_any.sql file
can be used to create a minimal database, or examined to determine
which tables and columns are needed.

Once the database is built, the following environment variables
should be set prior to running "make test" below:

AUTH_ANY_ROOT  [ex. /usr/share/authany]
AUTH_ANY_CONFIG_ROOT [ex. /etc/authany]
AUTH_ANY_DB [ex. mysql]
AUTH_ANY_DB_PW_FILE [ex /etc/authany/db-passwd]
AUTH_ANY_DB_USER  [ex. authany]
AUTH_ANY_DB_NAME [ex auth_any_db]

To install this module, run the following commands:

	perl Makefile.PL
	make
	make test
	make install

        post-install.pl

CONFIGURATION

Following installation, Apache must be configured to load the AuthAny
handlers. Under Debian, a file with the following lines can be added
to the /etc/apache2/conf.d directory ...

   PerlSetEnv AUTH_ANY_ROOT       /usr/share/authany
   PerlSetEnv AUTH_ANY_CONFIG_ROOT  /etc/authany
   PerlSetEnv AUTH_ANY_DB         mysql
   PerlSetEnv AUTH_ANY_DB_PW_FILE /etc/authany/db-passwd
   PerlSetEnv AUTH_ANY_DB_USER    kgoldov
   PerlSetEnv AUTH_ANY_DB_NAME    auth_any
   #PerlSetEnv AUTH_ANY_DB_HOST    not needed unless remote db
   
   PerlRequire              /usr/share/authany/startup.pl
   PerlLoadModule Apache2::AuthAny

SUPPORT AND DOCUMENTATION

After installing, you can find documentation for this module with the
perldoc command.

    perldoc Apache2::AuthAny

This documentation explains how to add identity providers, set
up a "GATE" page, and use "Require" directives to control access.

Please see the TODO section for a list known desired improvements.

You can also look for information at:

    RT, CPAN's request tracker
        http://rt.cpan.org/NoAuth/Bugs.html?Dist=Apache2-AuthAny

    AnnoCPAN, Annotated CPAN documentation
        http://annocpan.org/dist/Apache2-AuthAny

    CPAN Ratings
        http://cpanratings.perl.org/d/Apache2-AuthAny

    Search CPAN
        http://search.cpan.org/dist/Apache2-AuthAny


COPYRIGHT AND LICENCE

Copyright (C) 2011 University of Washington

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.

