Authen-Ticket

 view release on metacpan or  search on metacpan

Makefile.PL  view on Meta::CPAN

# the contents of the Makefile that is written.
WriteMakefile(
    NAME	 => 'Authen::Ticket',
    VERSION_FROM => 'lib/Authen/Ticket.pm', # finds $VERSION
    PREREQ_PM    => { 
                      'Apache'            => "1.26",
                      'Apache::Constants' => "1.09",
                      'Apache::URI'       => "1.00",
                      'Apache::Util'      => "1.01",
                      'CGI'               => "2.46",
                      'CGI::Cookie'       => "1.06",
                      'MIME::Base64'      => "2.11",
                    },
    dist         => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
);

README  view on Meta::CPAN

The following module dependencies exist:

Module         Authen::Ticket   ::Server   ::Client   ::Signature
------         --------------   --------   --------   -----------
Apache               X
Apache::File                                               X
Apache::URI          X

Carp                                X          X
CGI                                 X
CGI::Cookie          X              X          

MIME::Base64                        X          X
OpenSSL                                                    X

----
BUGS
----

o Tickets must not expire during a POST.  This will cause all POST
  data to be lost.

lib/Authen/Ticket.pm  view on Meta::CPAN

# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.

package Authen::Ticket;

use Apache ();
use Apache::Constants (qw/OK DECLINED FORBIDDEN/);
use Apache::URI ();
use CGI::Cookie ();

use vars (qw#$VERSION @ISA#);

$VERSION = '0.02';
@ISA = ( );

sub handler ($$) {
  my $class = shift;
  my $r = shift;
  my $log = $r->log;

lib/Authen/Ticket.pm  view on Meta::CPAN

    #
    # sign ticket if signing is available...
    #
    my $sc = eval { $self->sign_ticket($cookiev); };
    if($@) {
      $self->debug("Eval results: [$@]");
    } else {
      $cookiev = $sc;
    }
    
    $self->go_to_url(CGI::Cookie->new(-name => $$self{TicketName},
                                      -value => $cookiev,
                                      -domain => $$self{TicketDomain},
                                      -path => '/'
                                     ));
    return OK;
  } elsif($r->current_callback eq "PerlAccessHandler") {
    $class .= "::Client";

    return OK unless $r->is_main;

lib/Authen/Ticket.pm  view on Meta::CPAN

      $uri->hostname($r->get_server_name);
  
      $uri->port($r->get_server_port);
      $uri->query(scalar $r->args);

      $log->debug("Ticket `request_uri' being set to `" .
                  $uri->unparse . "'");

      # read in content if it exists...  even for a GET
  
      $self->err_headers_out->add('Set-Cookie' =>
        CGI::Cookie->new(-name => 'request_uri',
                         -value => $uri->unparse,
                         -domain => $self->{TicketDomain},
                         -path => '/'
                        )
        );
      return FORBIDDEN;
    }

    $r->connection->user($self->{ticket}->{uid});
    return OK;

lib/Authen/Ticket/Client.pm  view on Meta::CPAN


  if($ENV{MOD_PERL}) {
    $r = shift;
    unless(ref $r) {
      unshift @_, $r;
      $r = '';
    }
    $r ||= Apache->request;
    $self->{_r} = $r;
    $self->{_log} = $r->log;
    $cookies = $r->headers_in->{Cookie};
  } else {
    $cookies = $ENV{HTTP_COOKIE};
  }

  my @cookies = split(/;\s*/, $cookies);

  $self->configure(@_);

  $self->initialize;

lib/Authen/Ticket/Client.pm  view on Meta::CPAN

    my $t = shift @cookies;
    $self->debug("Considering [$t]");
    my($k, $v) = split(/=/, $t, 2);
    $k =~ s{%(..)}{chr(hex($1))}ge;
    $self->debug("$k => [$v]");
    next unless $k eq $$self{TicketName};
    $v =~ s{%(..)}{chr(hex($1))}ge;
    $ticket = $v;
  }

  $self->debug("Cookies: [$cookies]");
  $self->debug("Ticket: [$ticket]");
  
  #
  # provide automatic signature verification if available...
  #
  $self->debug("Ticket: [$ticket]");
  my $sc = eval { $self->verify_ticket($ticket); };
  if($@) {
    $self->debug("Eval results: [$@]");
  } else {

lib/Authen/Ticket/Server.pm  view on Meta::CPAN


  if($ENV{MOD_PERL}) {
    $r = shift;
    unless(ref $r) {
      unshift @_, $r;
      $r = '';
    }
    $r ||= Apache->request;
    $self->{_r} = $r;
    $self->{_log} = $r->log;
    $ENV{HTTP_COOKIE} ||= $r->headers_in->{Cookie};
  }

  bless $self, $class;

  $self->{query} = $self->get_query_object;
  $self->{stdout} = $self->get_stdout_object;

  $self->{request_uri} = $$self{query}->param('request_uri');

  if($$self{_r}) {
    $self->{request_uri} ||= $self->prev && $self->prev->uri;
  }
  $self->debug("Request URI: [", $$self{request_uri}, "]");

  my $cookie = $$self{query}->cookie('request_uri');

  $self->debug("Cookie: [", $cookie, "]");

  $self->{request_uri} ||= $cookie;

  $self->{has_cookies} = 1 if $cookie;

  $self->configure(@_);

  $self->initialize;

  return $self



( run in 0.856 second using v1.01-cache-2.11-cpan-e9199f4ba4c )