Hi Andrew,

Say the message sender is Alice. Server is Bob. 

When Alice sends a SOAP message, Alice will expect the response. Alice
cannot change into "Kate" within the message receiving time. Therefore
Alice is the same for message inflow/outflow at the client side.

At the server side Bob is Bob for inflow/outflow.

But if Bob wants to send Alice a UsernameToken then at the services.xml,
inside <RampartConfig> he should say <ramp:user> is Bob and specify the
correct policy.

When message with the UT is received by Alice, on the message inflow of
the client side Rampart will be invoked. UsernameToken will be validated
using the password callback handler. If the password callback handler
put the correct password it should work.

Rampart can load only one policy for message inflow/outflow at client
side. Same goes for server side. You cannot load different policies for
message inflow and outflow in a straight forward manner.

Cheers,
Dimuthu  



On Wed, 2007-07-25 at 01:28 -0700, Andrew Fielden wrote: 
> Thanks Dimuthu. My question was about UsernameToken, not Basic
> Authentication, but specifically its use with a WS Policy.
> I've looked at the samples/policy/sample01/policy.xml file (below), and
> have a question about this: The 'RampartConfig' section of the policy
> specifies only one user. What happens if the inflow/outflow users are
> different? Does the ramp:user refer to the inflow user or the outflow
> user?
> 
> 
> <wsp:Policy wsu:Id="UTOverTransport"
> xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssec
> urity-utility-1.0.xsd"
> xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy";>
>       <wsp:ExactlyOne>
>         <wsp:All>
>               <sp:TransportBinding
> xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy";>
>                 <wsp:Policy>
>                       <sp:TransportToken>
>                         <wsp:Policy>
>                               <sp:HttpsToken
> RequireClientCertificate="false"/>
>                         </wsp:Policy>
>                       </sp:TransportToken>
>                       <sp:AlgorithmSuite>
>                         <wsp:Policy>
>                               <sp:Basic256/>
>                         </wsp:Policy>
>                       </sp:AlgorithmSuite>
>                       <sp:Layout>
>                         <wsp:Policy>
>                               <sp:Lax/>
>                         </wsp:Policy>
>                       </sp:Layout>
>                       <sp:IncludeTimestamp/>
>                 </wsp:Policy>
>               </sp:TransportBinding>
>               <sp:SignedSupportingTokens
> xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy";>
>                       <wsp:Policy>
>                               <sp:UsernameToken
> sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/In
> cludeToken/AlwaysToRecipient" />
>                 </wsp:Policy>
>               </sp:SignedSupportingTokens>
>               
>               <ramp:RampartConfig
> xmlns:ramp="http://ws.apache.org/rampart/policy";> 
>                       <ramp:user>alice</ramp:user>
>       
> <ramp:passwordCallbackClass>org.apache.rampart.samples.policy.sample01.P
> WCBHandler</ramp:passwordCallbackClass>
>               </ramp:RampartConfig>
>               
>         </wsp:All>
>       </wsp:ExactlyOne>
> </wsp:Policy>
> 
> 
> 
> > -----Original Message-----
> > From: Dimuthu [mailto:[EMAIL PROTECTED]
> > Sent: 25 July 2007 04:13
> > To: [email protected]
> > Subject: Re: Using a different user for inflow/outflow basic
> > authenticationin ws-policy
> > 
> > 
> > Hi Andrew,
> > 
> > HTTP Basic Auth is different from UsernameToken.
> > 
> > This is how you handle HTTP Basic Auth [1]
> > 
> > UsernameToken can be added in two ways, i.e. by using policy or
> > inflow/outflow configs.
> > 
> > If you want to use policy please refer
> > samples/policy/sample01/policy.xml.
> > 
> > If you want to use inflow/outflow config please refer
> > samples/basic/sample02. Here is a good article about it[2]
> > 
> > 
> > Regards,
> > Dimuthu
> > 
> > 
> > [1]
> > HttpTransportProperties.Authenticator auth = new
> > HttpTransportProperties.Authenticator();
> > auth.setPreemptiveAuthentication(true);
> > auth.setAuthSchemes(authSchemes);
> > auth.setUsername("username");
> > auth.setPassword("password");
> > Options options = serviceClient.getOptions();
> > options.setProperty(HTTPConstants.AUTHENTICATE, auth);
> > serviceClient.setOptions(options);
> > 
> > [2]http://wso2.org/library/240
> > 
> > 
> > On Tue, 2007-07-24 at 06:01 -0700, Andrew Fielden wrote:
> > > Hi,
> > >
> > > I'm trying to use a WS Policy file with Rampart. If I wish to enable
> > > basic authentication for outflow, the RampartConfig section of the
> > > ws-policy will look like this:
> > >
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <wsp:Policy
> xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy";>
> > >     <wsp:ExactlyOne>
> > >         <wsp:All>
> > >             <ramp:RampartConfig
> > >
> > > xmlns:ramp="http://ws.apache.org/rampart/policy";>
> > >                 <ramp:user>alice</ramp:user>
> > > <ramp:passwordCallbackClass>InboundPWCallbackHandler
> > >                   </ramp:passwordCallbackClass>
> > >             </ramp:RampartConfig>
> > >         </wsp:All>
> > >     </wsp:ExactlyOne>
> > > </wsp:Policy>
> > >
> > >
> > > My question is, suppose I wish to specify a user for basic
> > > authentication Inflow. How do I differentiate between usernames for
> > > basic authentication in both directions (inflow and outflow)?
> > > There is only one ramp:user element.
> > >
> > > Thanks.
> > > Andrew.
> > >
> > >
> 

Reply via email to