CAS Dispatcher

Introduction

The CAS Dispatcher is designed to allows the cohabitation of many Central Authentication Server ( CAS - http://www.yale.edu/tp/auth/) in a global authentication infrastructure.

The CAS Dispatcher was build to offer an alternative to the Danish LDAP based authentication infrastructure (see DEF Distributed Authentication System - CAS Dispatcher for general introduction to the problems and solution proposed).

Requirements

This package require Perl v5.6.1 minimum. It also requires the following Perl modules:

Finally, since this package does transparent CAS validation, it requires a HTTPS server, preferably Apache. HTTPS is a requirement of the CAS validation process although the validation itself can work without SSL.

Download

The latest version of CAS dispatcher is 1.2 and can be downloaded from: http://toolxite.net/cas_dispatcher/cas_dispatcher.1.2.tar.gz

Installation

The simplest installation method is to unpack the package in in the HTTPS server CGI script directory (e.g. cgi-bin). This allows all scripts (login, login_reply and validate) to be used directly from the unpacked distribution.

If you HTTP server supports symbolic links, you can create a version independent link after unpacking the package to avoid URL changes for each new version.

Example installation:
# wget http://toolxite.net/cas_dispatcher/cas_dispatcher.1.2.tar.gz
# cd /usr/lib/cgi-bin/
# tar xzf ~/cas_dispatcher.1.2.tar.gz
# ln -s cas_dispatcher.1.2 cas_dispatcher

Basic CAS function

After installation, you need to configure the server.conf file to include all CAS servers part of your infrastructure. Once this is done, you can start using the CAS dispatcher as a standard CAS server. For the example above on the toolxite.net server, you could use the following URLs:

In it's basic setup, the CAS dispactcher will behave like an ordinary CAS server, except that the user will be prompted for selection of CAS server if one as not been already selected. The other small difference is that the validate no reply, which normally does not include a second line, can optionally contain an error message as the second line. In that case, the no specifies that a validation error occured (described in the message), rather than a simple invalid ticket.

Please remember that the service argument used for login and validate should be strictly the same, the smallest difference will lead to a validation error.

Extra validation options

The CAS dispatcher validation proceedure allows for extra parameters which will generate an extra lookup and return extra user information.

Information

Request for extra user information information is triggered by the info CGI parameter (info=1). For info to work, the servers.conf file should include a cas_info entries with a info script URL for the CAS server in use. Generally, it is a bad idea to use info if not all servers in servers.conf include a cas_info entry. Requesting info from a CAS server which does not provide it will cause the validation to fail.

When a cas_info URL exists, validate will call that URL with the parameter id containing the CAS login ID of the user being validated. This CGI script should return any of the following fields:

So far, no formal values or formats have been defined for these fields but this may be wise for participants in a CAS network to agree on this.

These fields are return by the info script one per line with the field name followed by one or more spaces and the field value. Validate returns them ASIS after the first two standard line of CAS validate reply. See Package content, servers.conf and validate for more information.

Mapping

In some cases, the CAS login ID return by validate is not the ID needed for your service. For example, Dspace needs email addresses as IDs and not CAS login IDs. In this case, it is possible to use the map argument to validate, so that the CAS login ID in the validate reply (second line) is replaced with a different value. For example, use the map=email argument, will replace the CAS login ID with the email address. Using the map argument will automatically automatically invoke the info mechanism described above. See Package content, servers.conf and validate for more information.

Package content

The CAS Dispatcher package includes the following files: