# Copyrights 2007-2008 by Mark Overmeer. # For other contributors see ChangeLog. # See the manual pages for details on the licensing terms. # Pod stripped from pm file by OODoc 1.05. # This is an exerpt of the script you need you use username/password # login with the WS-Security specification. # # The security schema uses a lot, which makes the use of XML::Compile # more of a hassle than usually: each component needs to be prepared # with its own reader or writer. # # In some future, WS-Security might be supported by a module. # Also in a future, the "::Document" creation should disappear. # # Contributed by Alan Wind # Modified by Mark Overmeer, 2008-04-16 use XML::Compile::Util 'pack_type'; use constant MY_PASSWORD => 'replace_with_your_password'; use constant MY_USERNAME => 'replace_with_your_username'; use constant WSS_200401 => 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss'; use constant WSS_SECEXT_200401 => WSS_200401 . '-wssecurity-secext-1.0.xsd'; use constant WSS_USERNAME_200401 => WSS_200401 . '-username-token-profile-1.0'; # Create the password translator my $password_element = pack_type WSS_SECEXT_200401, 'Password'; my $password_writer = $wsdl->schemas->compile(WRITER => $password_element); my $password_document = XML::LibXML::Document->new('1.0', 'UTF-8'); my $password_value = $password_writer->($password_document, { _ => MY_PASSWORD , Type => WSS_USERNAME_200401 . '#PasswordText' } ); # Map the first any of SecurityHeaderType to UsernameToken, and set # the password which is any using the above. my $UsernameToken_element = pack_type WSS_SECEXT_200401, 'UsernameToken'; my $UsernameToken_writer = $wsdl->schemas->compile(WRITER => $UsernameToken_element); my $UsernameToken_document = XML::LibXML::Document->new('1.0', 'UTF-8'); my $UsernameToken_value = $UsernameToken_writer->($UsernameToken_document, { Username => { _ => MY_USERNAME } , $password_element => $password_value } ); my ($result, $trace) = $call->( header => { $UsernameToken_element => $UsernameToken_value }, # rest of arguments );