use SOAP::Lite; SOAP::Lite->import(+trace => 'all'); my $uri = 'urn:Foo'; my $proxy = 'http://localhost/'; my $client = SOAP::Lite ->readable(1) ->uri($uri) ->proxy($proxy); $client->autotype(0); my $security_token = 'MIIFazCCBFOgAwIBAg'; my $signature_value = 'E81kRkC92PFjxn5rr6'; my $BinarySecurityToken = SOAP::Header->name('wsse:BinarySecurityToken') ->attr({ 'EncodingType' => 'http://docs.oasis-open.org/etc', 'ValueType' => 'http://docs.oasis-open.org/etc', 'wsu:Id' => 'X509-38899A2DEAAE0A0A' }) ->value($security_token); my $CanonicalizationMethod = SOAP::Header->name('ds:CanonicalizationMethod') ->value('Cmethod'); my $SignatureMethod = SOAP::Header->name('ds:SignatureMethod') ->value('SignatureMethod'); my $SignedInfo = SOAP::Header->name('ds:SignedInfo') ->value(\SOAP::Header->value($CanonicalizationMethod, $SignatureMethod)); my $Signature = SOAP::Header->name('ds:Signature') ->value(\$SignedInfo); my $SignatureValue = SOAP::Header->name('ds:SignatureValue') ->value($signature_value); my $security = SOAP::Header->name('wsse:Security') ->attr({ 'xmlns:wsse' => 'http://docs.oasis-open.org/etc', 'xmlns:wsu' => 'http://docs.oasis-open.org/etc' }) ->value(\SOAP::Header->value($BinarySecurityToken,$Signature,$SignatureValue) ); my $elem1 = SOAP::Data->name('ELEM1' => "value1"); my $elem2 = SOAP::Data->name('ELEM2' => "value2"); my $response = $client->mymethod( $security, $elem1, $elem2 );