Hi,

then your example with the PingServiceLocator and the PingPort classes confused 
me.

I also use wsdl2java (well the Maven plugin with wsdl2code goal), and I end up 
with a couple of classes and interfaces.
For the client code I use the generated class that ends in Stub, so I would 
expect something like PingServiceStub that extends from 
org.apache.axis2.client.Stub and implements PingService
Maybe the names are a little different.

Then construct a org.apache.axis2.context.ConfigurationContext instance using

ConfigurationContext context = ConfigurationContextFactory
                .createConfigurationContextFromFileSystem(this.axis2repo,
                        this.axis2xml);

The parameters are the location of the axis2repo (where your modules are) and 
the axis2xml parameter sets the location of the "client" axis2.xml (well, I 
just use a customized axis2.xml for my client). The most important changes for 
my service and client are

        <module ref="rampart"/>

        <parameter name="OutflowSecurity">
        <action>
            <items>UsernameToken</items>

            <passwordType>PasswordText</passwordType>

             <!--  for encrypted passwords
            <passwordType>PasswordDigest</passwordType>
             -->
            <addUTElements>Nonce Created</addUTElements>

            <!-- if you want to set it in the config statically
            <user>username</user>
            
<passwordCallbackClass>OutflowSecurityCallbackHandler</passwordCallbackClass>
            -->
        </action>
    </parameter>

Then construct the service stub with the context

this.serviceStub = new PingServiceStub(context, "enter service URL here");

Then get the service options

org.apache.axis2.client.Options options = this.serviceStub
                ._getServiceClient().getOptions();

And set the security options programmatically as previously posted, e.g.

options.setProperty(WSHandlerConstants.USER, this.user);
OutflowSecurityCallbackHandler cbh = new OutflowSecurityCallbackHandler();
options.setProperty(WSHandlerConstants.PW_CALLBACK_REF, cbh);


That should do it. Obviously your service also needs to have the proper Rampart 
and InflowSecurity parameter configuration in its service.xml or the server 
side axis2.xml.

BR,
Leander


> -----Ursprüngliche Nachricht-----
> Von: brianfm [mailto:bfmur...@gmail.com]
> Gesendet: Mittwoch, 28. Januar 2009 10:26
> An: axis-user@ws.apache.org
> Betreff: Re: AW: setting username/password in soap header
> programmatically
>
>
> Hi,
>
> thanks agagin for your reply. I am using Axis2 (with Rampart 1.4) and
> not
> Axis 1.
> I am generating a stub for my client using wsdl2java. I just noticed
> from
> your reply you say to use axis2.xml for the client, where would I
> insert
> this. I have searched the web extensively, there does not seem to be
> any way
> of the client inserting a handler programmatically,
>
> thanks,
>
> Brian
>
> Mario-Leander Reimer wrote:
> >
> > Hi Brain,
> >
> > I just realized that you are using Axis1. Sorry for the
> misunderstanding.
> >
> > The code you had sent will was for Axis2, I have this working under
> Axis2
> > 1.4.1 with Rampart 1.4.
> >
> > Unfortunately I have no experience with Axis1 so I can't help you any
> > further.
> >
> > Regards,
> > Leander
> >
> >
> >
> >> -----Ursprüngliche Nachricht-----
> >> Von: brianfm [mailto:bfmur...@gmail.com]
> >> Gesendet: Dienstag, 27. Januar 2009 18:18
> >> An: axis-user@ws.apache.org
> >> Betreff: Re: setting username/password in soap header
> programmatically
> >>
> >>
> >> Hi,
> >>
> >> thanks to everyone again who has replied.
> >> I would prefer not to add custom headers to the soap message, i want
> to
> >> use
> >> the ws-security usernametoken.
> >> Thanks Leander for your response, but that approach did not work.
> >> In the wss4j documentation, is the following code snippit.
> >> Unfortunately, it is not clear on which object the _setPropery in on
> -
> >> its
> >> is not on any generation code from wsdl2java or in the apit:
> >>
> >>  PingServiceLocator service = new PingServiceLocator();
> >>     ...
> >>  PingPort port = (PingPort) service.getPing1();
> >>  port._setProperty(UsernameToken.PASSWORD_TYPE,
> >> WSConstants.PASSWORD_TEXT);
> >>  port._setProperty(WSHandlerConstants.USER, "werner");
> >>
> >> This is from the package description of org.apache.ws.axis.security.
> >>
> >> I had success with the following approach , but all these classes
> are
> >> deprecated, and no alternative is suggested in the api.
> >>
> >>         OutflowConfiguration outflowConfig = new
> >> OutflowConfiguration();
> >>
> >>
> >> outflowConfig.setActionItems("UsernameToken");
> >>
> >>
> >> outflowConfig.setUser("bob");
> >>
> >>
> >>
> outflowConfig.setPasswordCallbackClass("test1.security.PWCBClientHandle
> >> r");
> >>
> >>
> >>
> axisstub._getServiceClient().getOptions().setProperty(WSSHandlerConstan
> >> ts.OUTFLOW_SECURITY,
> >>
> >>
> >> outflowConfig.getProperty());
> >>
> >> I am trying to attempt something basic here, unfortunately the api
> doc
> >> is
> >> quite poor.
> >> Any ideas?
> >>
> >> Brian
> >>
> >> brianfm wrote:
> >> >
> >> > Hi,
> >> >
> >> > My application requires that I programmatically set a username and
> >> > password into the ws-security standard locations in the soap
> header.
> >> Note
> >> > that I do not want to configure Rampart athentication because
> >> > authentication logic will be fully proprietery in the server.
> >> > I intend to just retrieve the usename/password from soap header
> >> > programmtically from server and then authenticate.
> >> >
> >> > thanks,
> >> >
> >> > Brian
> >> >
> >>
> >> --
> >> View this message in context: http://www.nabble.com/setting-
> username-
> >> password-in-soap-header-programmatically-tp21641020p21689872.html
> >> Sent from the Axis - User mailing list archive at Nabble.com.
> >
> >
> > VVA Networks GmbH
> >
> > Mario-Leander Reimer
> > Dipl.-Inf. (FH)
> > Teamleitung Publishing Solutions
> > ---------------------------------------------------------------------
> ------
> > VVA Networks GmbH
> > : medien mit zukunft
> > Geisenhausenerstraße 15-17
> > 81379 München
> > Deutschland
> > ---------------------------------------------------------------------
> ------
> > Fon:    +49 89 2000375-610
> > Fax:    +49 89 2000375-699
> > Mobil:  +49 173 5883541
> > ---------------------------------------------------------------------
> ------
> > leander.rei...@vva-networks.de
> > www.vva-networks.de
> >
> > ---------------------------------------------------------------------
> --
> > HRB 33884 Düsseldorf
> > Geschäftsführer Rolf Christian Kassel
> > ---------------------------------------------------------------------
> --
> > Ein Unternehmen der VVA Kommunikation
> > http://www.vva.de
> > ---------------------------------------------------------------------
> --
> > omnisuite® - integrate. automate. communicate.
> > http://www.omnisuite.de
> > ---------------------------------------------------------------------
> --
> >
> > Diese Nachricht (inklusive aller Anhänge) ist vertraulich. Sie darf
> > ausschließlich durch den vorgesehenen Empfänger und Adressaten
> gelesen,
> > kopiert oder genutzt werden. Sollten Sie diese Nachricht
> versehentlich
> > erhalten haben, bitten wir, den Absender (durch Antwort-E-Mail)
> hiervon
> > unverzüglich zu informieren und die Nachricht zu löschen. Jede
> unerlaubte
> > Nutzung oder Weitergabe des Inhalts dieser Nachricht, sei es
> vollständig
> > oder teilweise, ist unzulässig.
> >
> > This message (including any attachments) is confidential and may be
> > privileged. It may be read, copied and used only by the intended
> > recipient.
> > If you have received it in error please contact the sender (by return
> > E-Mail) immediately and delete this message. Any unauthorised use or
> > dissemination of this message in whole or in part is strictly
> prohibited.
> >
> >
>
> --
> View this message in context: http://www.nabble.com/setting-username-
> password-in-soap-header-programmatically-tp21641020p21702411.html
> Sent from the Axis - User mailing list archive at Nabble.com.

Reply via email to