Problemas del module de authentication con Apache 2 y Perl

Soy un desarrollador de SharePoint que intenta get un module Perl para trabajar con Subversion, pero creo que algo está mal con mi syntax. Solo necesito get el nombre de usuario y la contraseña, pasarlo al service web, get un verdadero / falso y autenticar en function de esa información. Aquí está el código del module en Perl:

package Apache2::AuthGetUser; #authenticates users based on bool value from a asmx webservice use SOAP::Lite; use Data::Dumper; use strict; use warnings; use Apache2::Access(); use Apache2::RequestRec(); use Apache2::Const ':common'; sub handler { my $r = shift; my $username = $r->user; my ($status, $password) = $r->get_basic_auth_pw; return $status unless $status == Apache2::Const::OK; my $endpoint = "http://localhost:2010/CIM.FBAAuthentication/12/template/layouts/wsFBAAuthentication.asmx"; #endpoint my $namespace = "http://tempuri.org/"; #namespace my $wsfunction = "AuthenticateUser"; #webservice function my $webservice = SOAP::Lite ->uri($namespace) ->on_action(sub { join '/', $namespace, $_[1] }) ->proxy($endpoint); #my $method = SOAP::Data->name($wsfunction) my $method = SOAP::Data->name($wsfunction) ->attr({xmlns => $namespace}); my @params = (SOAP::Data->name('UserName')->value($username)->type(''), SOAP::Data->name('Password')->value($password)->type('')); my $result = $webservice->call($method=>@params)->result; if($result ne "true"){ $r->note_basic_auth_failure; #$r->log_reason($result); return AUTH_REQUIRED; } return Apache2::Const::OK; } 1; 

Si alguien tiene cualquier sugerencia, por favor comunicármelo. Recibo un error similar en los files de Apache Config: no puedo llamar al método "valor" en un valor indefinido en la línea C: /usr/site/lib/Apache2/AuthGetUser.pm 30. Gracias por todo. Si logro que esto funcione, tendré una publicación de blog próxima.

Trata de romper esta línea

  my @params = (SOAP::Data->name('UserName')->value($username)->type(''), SOAP::Data->name('Password')->value($password)->type('')); 

Por ejemplo,

  my $userParam = SOAP::Data->name('UserName')->value($username)->type('xsd:string'); 

¿trabajo? Qué tal si:

  my $userParam = SOAP::Data->new(name => 'UserName', value => $username, type => 'xsd:string'); 

con

  my @params = ($userParam, $pwdParam); 

donde defines $ pwdParam de manera similar.

Intereting Posts