Re: [Perlgssapi-developer] Re: Feedback on LWP-Authen-Negotiate-0.02
Brought to you by:
achimgrolms
From: Leif J. <le...@it...> - 2006-02-17 10:47:12
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Achim Grolms wrote: > On Friday 17 February 2006 07:50, Leif Johansson wrote: >> Dax Kelson wrote: >> >> Are you talking about the variable reuse for $status? Imho it is >> acceptable in this case since they both represent return-status >> from different functions from the same library. > > GSSAPI::Name->import() > > can fail. throwing away the return value is not a good idea. > > a reason for fail can just be a typo in DNS or /etc/hosts > (GSSAPI is using DNS for resolution to canonical hostname). > > the implementation does not print debugging information, > that is a problen (just think of expired credentials). > > > This is my implementation: > > > > > > > package LWP::Authen::Negotiate; > > use strict; > use warnings; > > require Exporter; > use AutoLoader qw(AUTOLOAD); > > our @ISA = qw(Exporter); > > # Items to export into callers namespace by default. Note: do not export > # names by default without a very good reason. Use EXPORT_OK instead. > # Do not simply export all your public functions/methods/constants. > > # This allows declaration use LWP::Authen::Negotiate ':all'; > # If you do not need this, moving things directly into @EXPORT or @EXPORT_OK > # will save memory. > our %EXPORT_TAGS = ( 'all' => [ qw( > > ) ] ); > > our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); > > our @EXPORT = qw( > > ); > > our $VERSION = '0.04'; > > > use MIME::Base64 "2.12"; > use GSSAPI 0.18; > > > sub authenticate > { > LWP::Debug::debug("authenticate() called"); > my ($class,$ua,$proxy,$auth_param,$response,$request,$arg,$size) = @_; > > my $uri = URI->new($request->uri); > my $targethost = $request->uri()->host(); > > my ($otime,$omech,$otoken,$oflags); > my $target; > my $status; > TRY: { > $status = GSSAPI::Name->import( > $target, > join( '@', 'HTTP', $targethost ), > GSSAPI::OID::gss_nt_hostbased_service > ); > last TRY if ( $status->major != GSS_S_COMPLETE ); > my $tname; > $target->display( $tname ); > LWP::Debug::debug("target hostname $targethost"); > LWP::Debug::debug("GSSAPI servicename $tname"); > my $auth_header = $proxy ? "Proxy-Authorization" : "Authorization"; > > my $itoken = q{}; > foreach ($response->header('WWW-Authenticate')) { > last if /^Negotiate (.+)/ && ($itoken=decode_base64($1)); > } > > my $ctx = GSSAPI::Context->new(); > my $imech = GSSAPI::OID::gss_mech_krb5; > #my $iflags = GSS_C_MUTUAL_FLAG; > my $iflags = GSS_C_REPLAY_FLAG; > my $bindings = GSS_C_NO_CHANNEL_BINDINGS; > my $creds = GSS_C_NO_CREDENTIAL; > my $itime = 0; > $status = $ctx->init($creds,$target,$imech,$iflags,$itime,$bindings,$itoken, > $omech,$otoken,$oflags,$otime); > if ( $status->major == GSS_S_COMPLETE > or $status->major == GSS_S_CONTINUE_NEEDED ) { > LWP::Debug::debug( 'successfull $ctx->init()'); > my $referral = $request->clone; > $referral->header( $auth_header => "Negotiate ".encode_base64 > ($otoken,"")); > return $ua->request( $referral, $arg, $size, $response ); > } > } > if ( $status->major != GSS_S_COMPLETE ) { > LWP::Debug::debug( $status->generic_message()); > LWP::Debug::debug( $status->specific_message() ); > return $response; > } > } > > 1; > __END__ > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642 > _______________________________________________ > Perlgssapi-developer mailing list > Per...@li... > https://lists.sourceforge.net/lists/listinfo/perlgssapi-developer Can you send me a patch for that against my 0.03 I just uploaded? -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFD9amm8Jx8FtbMZncRAltIAJ0SvyI97ubE6Mv65FfJtlvOxq09/ACggUda susubIG7RurlKDyGQ5Uc84U= =8ZU+ -----END PGP SIGNATURE----- |