| Authen-CAS-External documentation | Contained in the Authen-CAS-External distribution. |
Authen::CAS::External - Authenticate with CAS servers as a browser would.
This documentation refers to Authen::CAS::External version 0.06
my $cas_auth = Authen::CAS::External->new(
cas_url => 'https://cas.mydomain.com/',
);
# Set the username and password
$cas_auth->username('joe_smith');
$cas_auth->password('hAkaT5eR');
my $response = $cas_auth->authentiate();
my $secured_page = $ua->get($response->destination);
Provides a way to authenticate with a CAS server just as a browser would. This is useful with web scrapers needing to login to a CAS site.
This is fully object-oriented, and as such before any method can be used, the constructor needs to be called to create an object to work with.
This will construct a new object.
%attributes is a HASH where the keys are attributes (specified in the
ATTRIBUTES section).
$attributes is a HASHREF where the keys are attributes (specified in the
ATTRIBUTES section).
This is the URL of the CAS site excluding /login. This can be a URI object or a string of a URL.
This is the password to use for logging in to the CAS site. When set, this clears the ticket_granting_cookie.
This is the username to use for logging in to the CAS site. When set, this clears the ticket_granting_cookie.
This method will authenticate against the CAS service using the already supplied username and password and will return a Authen::CAS::External::Response object.
This method takes a HASH with the following keys:
This is a Boolean of if the gateway parameter should be sent to the CAS server. The default is to not send any gateway parameter.
This is a Boolean of if the renew parameter should be sent to the CAS server. The default is to not send any renew parameter.
This is a string that specifies the service value to send to the CAS server. The default is to not send any service parameter.
This method is not actually used, but is required for classes to consume the Authen::CAS::External::UserAgent role as this class does. This method will return the currently set username and password to the user agent.
Douglas Christopher Wilson, <doug at somethingdoug.com>
Please report any bugs or feature requests to
bug-authen-cas-external at rt.cpan.org, or through the web interface at
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Authen-CAS-External.
I will be notified, and then you'll automatically be notified of progress on
your bug as I make changes.
I highly encourage the submission of bugs and enhancements to my modules.
You can find documentation for this module with the perldoc command.
perldoc Authen::CAS::External
You can also look for information at:
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Authen-CAS-External
Copyright 2009 Douglas Christopher Wilson.
This program is free software; you can redistribute it and/or modify it under the terms of either:
| Authen-CAS-External documentation | Contained in the Authen-CAS-External distribution. |
package Authen::CAS::External; use 5.008001; use strict; use utf8; use warnings 'all'; # Module metadata our $AUTHORITY = 'cpan:DOUGDUDE'; our $VERSION = '0.06'; use Authen::CAS::External::Library qw(TicketGrantingCookie); use Moose 0.89; use MooseX::StrictConstructor 0.08; use MooseX::Types::Moose qw(Str); use URI 1.22; # Clean the imports are the end of scope use namespace::clean 0.04 -except => [qw(meta)]; # Role with 'Authen::CAS::External::UserAgent'; # Attributes has password => ( is => 'rw', isa => Str, clearer => 'clear_password', predicate => 'has_password', trigger => sub { shift->clear_ticket_granting_cookie }, ); has ticket_granting_cookie => ( is => 'rw', isa => TicketGrantingCookie, clearer => 'clear_ticket_granting_cookie', documentation => q{The Ticket Granting Cookie for the CAS user session}, predicate => 'has_ticket_granting_cookie', ); has username => ( is => 'rw', isa => Str, clearer => 'clear_username', predicate => 'has_username', trigger => sub { shift->clear_ticket_granting_cookie }, ); # Methods sub authenticate { my ($self, %args) = @_; # Splice out the variables my ($service, $gateway, $renew) = @args{qw(service gateway renew)}; # Get the URI to request my $url = $self->service_request_url( (defined $gateway ? (gateway => $gateway) : () ), (defined $renew ? (renew => $renew ) : () ), (defined $service ? (service => $service) : () ), ); # Do not redirect back to service my $redirect_back = $self->redirect_back; $self->redirect_back(0); # Get the service my $response = $self->get($url); # Restore previous value $self->redirect_back($redirect_back); if (!$self->has_previous_response) { confess 'Failed retrieving response'; } # Set our ticket granting ticket if we have one if ($self->previous_response->has_ticket_granting_cookie) { $self->ticket_granting_cookie($self->previous_response->ticket_granting_cookie); } # Return the last response return $self->previous_response; } sub get_cas_credentials { my ($self, $service) = @_; # This default callback stub simply returns the stored # credentials if (!$self->has_username) { confess 'Unable to authenticate because no username was provided'; } if (!$self->has_password) { confess 'Unable to authenticate because no password was provided'; } # Return username, password return $self->username, $self->password; } sub get_cas_ticket_granting_cookie { my ($self, %args) = @_; # Splice out the variables my ($username, $service) = @args{qw(username service)}; # This default callback stub simply returns the stored # credentials if (!$self->has_ticket_granting_cookie) { return; } # Return ticket granting ticket return $self->ticket_granting_cookie; } # Make immutable __PACKAGE__->meta->make_immutable; 1; __END__