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

Catalyst::Authentication::Credential::Upstream::Headers

SYNOPSIS

 use Catalyst qw(Authentication);

 __PACKAGE__->config(
     authentication => {
         default_realm => 'upstream',
         realms => {
             upstream => {
                 credential => {
                     class => 'Upstream::Headers',
                     user_header => 'X-Header-Containing-Username',
                     role_header => 'X-Header-Containing-Comma-Separated-List-Of-Roles'
                 }
             }
         }
     }
 );

DESCRIPTION

This authentication credential for Catalyst::Plugin::Authentication was originally implemented to support OpenAM in a way that fit into the framework provided by C::P::A.

OpenAM (formerly Sun's OpenSSO) is a federated identity management platform. It is a complex product supporting SAML and integration with Microsoft's Active Directory. OpenAM provides authentication and authorization services to web applications by utilizing agents that run in front of the application. The agents are implemented as plugins for popular HTTP servers, injecting logic into the request handler and applying policy based upon upstream configuration.

One of the methods of passing identity information back down to the application is by including the information in the request headers. This is similar in scope to the Credential::Remote implementation, but using headers instead of environment variables.

CAVEATS

  • I really hope I don't have to say it, but don't let users bypass your authentication mechanisms by passing the headers themselves.

  • This is a pretty crappy way of passing identity metadata around.

AUTHOR

Mike Eldridge <diz@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Infinity Interactive, Inc.

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