use strict;
use WWW::Mechanize;
+ use LWP::ConnCache;
use GSSAPI;
use GSSAPI::OID;
use MIME::Base64;
sub parse_token($) {
my ($json) = @_;
+ print $json;
my $ref = decode_json($json);
- return $ref->{'gssweb'}{'token'};
+ return decode_base64($ref->{'gssweb'}{'token'}) or die "No token\n";
}
-
+;
sub token_body($$) {
my ($target_server, $itoken) = @_;
print "$status\n";
return undef unless $otoken;
print "Pre-encoding token: $otoken\n";
- my $encoded_token = encode_base64($otoken);
+ my $encoded_token = encode_base64($otoken, '');
chomp($encoded_token);
my $out = "token=" . uri_encode($encoded_token, {encode_reserved => 1}) ."&nonce=42";
print "$out\n";
my ($url, $gssname) = @ARGV;
my $www = WWW::Mechanize->new('autocheck' => 0);
+$www->conn_cache(LWP::ConnCache->new);
my $done = 0;
my $response_token = undef;
-unless ($done) {
+ while (!$done) {
$www->post($url, 'Content' => token_body($gssname, $response_token));
my $status = $www->status();
} else {
print "Unexpected response status: $status\n";
print $www->content();
+ $done = 1;
}
}