#!/usr/bin/perl # CAS sample client use strict; use CGI; use AuthCAS; # Configuration my $host = $ENV{HTTP_HOST}; my ( $domain, $port ) = ( $host =~ /\w+\.([^:]+)(:\d+)?/ ); my $protocol = ( $ENV{HTTPS} =~ /^on$/i ) ? "https" : "http"; my $portal_url = "$protocol://auth.$domain$port"; my $cas_url = "$portal_url/cas"; my $cas = new AuthCAS( casUrl => $cas_url ); my $cgi = new CGI; my $pgtUrl = $cgi->url() . "%3Fproxy%3D1"; my $pgtFile = '/tmp/pgt.txt'; my $proxiedService = 'http://webmail'; `touch $pgtFile`; # CSS my $css = <proxyMode( pgtFile => '/tmp/pgt.txt', pgtCallbackUrl => $pgtUrl ); # CAS login URL my $login_url = $cas->getServerLoginURL( $cgi->url() ); # Start HTTP response print $cgi->header(); # Proxy URL for TGT validation if ( $cgi->param('proxy') ) { # Store pgtId and pgtIou $cas->storePGT( $cgi->param('pgtIou'), $cgi->param('pgtId') ); } else { print "\n"; print "\n"; print "\n"; print "CAS sample client\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
\n"; print "
\n"; print "
\n"; print "

CAS sample client

\n"; print "
\n"; print "
\n"; my $ticket = $cgi->param('ticket'); # First time access unless ($ticket) { print "

Login on $cas_url

\n"; print "
\n"; print "Simple login\n"; print "Renew login\n"; print "Gateway login\n"; print "
\n"; } # Ticket receveived else { print "
\n"; print "
\n"; print "

CAS login result

\n"; print "
\n"; print "
\n"; print $cgi->h4("Service ticket: $ticket"); # Get user my $user = $cas->validateST( $cgi->url(), $ticket ); if ($user) { print $cgi->h4("Authenticated user: $user"); } else { print "
Error: " . &AuthCAS::get_errors() . "
\n"; } # Get proxy granting ticket my $pgtId = $cas->{pgtId}; if ($pgtId) { print $cgi->h4("Proxy granting ticket: $pgtId"); # Try to request proxy ticket my $pt = $cas->retrievePT($proxiedService); if ($pt) { print $cgi->h4("Proxy ticket: $pt"); # Use proxy ticket my ( $puser, @proxies ) = $cas->validatePT( $proxiedService, $pt ); print $cgi->h4("Proxied user: $puser"); print $cgi->h4("Proxies used: @proxies"); } else { print "
Error: " . &AuthCAS::get_errors() . "
\n"; } } else { print "
Error: Unable to get proxy granting ticket
\n"; } print "
\n"; print "
\n"; print "
\n"; print "url . "\">Home\n"; print "Logout\n"; print "Logout with redirect\n"; print "
\n"; } print "
\n"; print "
\n"; print "
\n"; print $cgi->end_html(); # Remove PGT file unlink $pgtFile; } exit;