AuthCAS
view release on metacpan or search on metacpan
lib/AuthCAS.pm view on Meta::CPAN
{'cas:proxyTicket'} )
{
return $xml->{'cas:serviceResponse'}[0]{'cas:proxySuccess'}[0]
{'cas:proxyTicket'}[0];
}
return undef;
}
=pod
=head2 get_https2
request a document using https, return status and content
Sven suspects this is intended to be private.
Returns
=cut
sub get_https2 {
my $host = shift;
my $port = shift;
my $path = shift;
my $ssl_data = shift;
my $trusted_ca_file = $ssl_data->{'cafile'};
my $trusted_ca_path = $ssl_data->{'capath'};
if ( ( $trusted_ca_file && !( -r $trusted_ca_file ) )
|| ( $trusted_ca_path && !( -d $trusted_ca_path ) ) )
{
$errors = sprintf
"error : incorrect access to cafile ".($trusted_ca_file||'<empty>')." or capath ".($trusted_ca_path||'<empty>')."\n";
return undef;
}
unless ( eval "require IO::Socket::SSL" ) {
$errors = sprintf
"Unable to use SSL library, IO::Socket::SSL required, install IO-Socket-SSL (CPAN) first\n";
return undef;
}
require IO::Socket::SSL;
unless ( eval "require LWP::UserAgent" ) {
$errors = sprintf
"Unable to use LWP library, LWP::UserAgent required, install LWP (CPAN) first\n";
return undef;
}
require LWP::UserAgent;
my $ssl_socket;
my %ssl_options = (
SSL_use_cert => 0,
PeerAddr => $host,
PeerPort => $port,
Proto => 'tcp',
Timeout => '5'
);
$ssl_options{'SSL_ca_file'} = $trusted_ca_file if ($trusted_ca_file);
$ssl_options{'SSL_ca_path'} = $trusted_ca_path if ($trusted_ca_path);
## If SSL_ca_file or SSL_ca_path => verify peer certificate
$ssl_options{'SSL_verify_mode'} = 0x01
if ( $trusted_ca_file || $trusted_ca_path );
$ssl_options{'SSL_version'} = $ssl_data->{'SSL_version'}
if defined( $ssl_data->{'SSL_version'} );
$ssl_socket = new IO::Socket::SSL(%ssl_options);
unless ($ssl_socket) {
$errors = sprintf "error %s unable to connect https://%s:%s/\n",
&IO::Socket::SSL::errstr, $host, $port;
return undef;
}
my $request = "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n";
print $ssl_socket "$request";
my @result;
while ( my $line = $ssl_socket->getline ) {
push @result, $line;
}
$ssl_socket->close( SSL_no_shutdown => 1 );
return \@result;
}
=pod
=head1 SEE ALSO
JA-SIG Central Authentication Service L<http://www.jasig.org/cas>
was Yale Central Authentication Service L<http://www.yale.edu/tp/auth/>
phpCAS L<http://esup-phpcas.sourceforge.net/>
=head1 COPYRIGHT
Copyright (C) 2003, 2005,2006,2007,2009 Olivier Salaun - Comité Réseau des Universités L<http://www.cru.fr>
2012 Sven Dowideit - L<mailto:SvenDowideit@fosiki.com>
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=head1 AUTHORS
Olivier Salaun
Sven Dowideit
=cut
1;
( run in 0.711 second using v1.01-cache-2.11-cpan-39bf76dae61 )