The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Dancer2::Plugin::Auth::CAS - CAS sso authentication for Dancer2

VERSION

Version 2.000

SYNOPSIS

Dancer2::Plugin::Auth::CAS provides CAS single-sign-on authentication

Add the plugin to your application:

    use Dancer2::Plugin::Auth::CAS;

Configure the plugin in your config:

  plugins:
    "Auth::CAS":
        cas_url: "https://your.org/sso"
        cas_denied_path: "/denied"
        cas_version: "2.0"
        cas_user_map: "user"
        cas_attr_map:
            email: "email"
            username: "username"
            firstName: "firstname"
            lastName: "lastname"

Call the auth_cas function in a before filter:

    before sub {
        # fetches the ticket via URL 'ticket' parameter
        auth_cas; 

        # or if you want to fetch the ticket yourself:
        auth_cas( ticket => $cas_ticket_id ); 

        # or if you want to override global options:
        auth_cas(
            cas_denied_path => ... ,
            cas_user_map => ... ,
        );
    };

or in a route handler:

    get '/confidential' => sub {
        auth_cas;
        # Authenticated
        ...
    };

DESCRIPTION

Cancer::Plugin::Auth::CAS provides single-sign-on (sso) authentication via JASIGs Central Authentication Service (CAS). See http://www.jasig.org/cas

CONFIGURATION

The available configuration options are listed below.

cas_url

The URL of your CAS server

cas_denied_path

Redirect towards this path or URL when authentication worked but was simply invalid.

cas_version

The version of your CAS server, usually '2.0' or '1.0'

cas_user_map

This lets you choose under what name the CAS user details will be stored in your session. Defaults to: 'cas_user' All user attributes delivered by the CAS-Server will be stored as a HashRef under the session key of cas_user_map. Defaults to: 'cas_user'

cas_attr_map

This lets you map CAS user attributes towards your own attribute names.

Example:

    cas_attr_map:
        email: "user_email"
        username: "username"
        firstName: "first_name"
        lastName: "last_name"

This will map the CAS user attribute email to user_email aso..

FUNCTIONS

auth_cas ( %args )

This function may be called in a before filter or at the beginning of a route handler. It checks if the client is authenticated, else it redirects the client towards the CAS-server SSO login URL.

If the login succeeds, the CAS-Server will redirect the client towards the first requested path including a 'ticket' as URL parameter. This triggers the auth_cas a second time, where it validates the 'ticket' against the CAS-Server. If the service ticket validation fails, it will redirect the client towards the cas_denied_path URL.

Once the ticket validation has been done, the server includes user attributes in its reponse to the Dancer application. These user attributes are stored as a HashRef in a session key (see cas_user_map). These attributes can be renamed/mapped towards your own keys with the cas_attr_map option.

Parameters:

  • ticket (optional)

    If you want to extract the CAS ticket yourself, then you can forward it explicitly with this parameter.

  • cas_denied_path (optional)

    See cas_denied_path in the configuration section.

  • cas_user_map (optional)

    See cas_user_map in the configuration section.

AUTHOR

Jean Stebens, <cpan.helba at recursor.net>

BUGS

Please report any bugs or feature requests at https://github.com/corecache/Dancer-Plugin-Auth-CAS. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc Dancer2::Plugin::Auth::CAS

You can also look for information at: https://github.com/corecache/Dancer-Plugin-Auth-CAS

LICENSE AND COPYRIGHT

Copyright 2013-2014 Jean Stebens.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.