On Fri, Jun 22, 2012 at 3:13 PM, Lakmali Baminiwatta <[email protected]>wrote:

> Hi Isuru,
>
>
> On Fri, Jun 22, 2012 at 2:58 PM, Isuru Suriarachchi <[email protected]>wrote:
>
>>
>>
>> On Fri, Jun 22, 2012 at 2:42 PM, Lakmali Baminiwatta <[email protected]>wrote:
>>
>>> Hi,
>>>
>>> On Fri, Jun 22, 2012 at 2:18 PM, Isuru Suriarachchi <[email protected]>wrote:
>>>
>>>> Lakmali,
>>>>
>>>> Can you please explain why we need this SuperTenantRolePlayer and why
>>>> it always returns false for isUltimateDestination()? Looks like, we can't
>>>> always return false here and have to figure out whether this is the
>>>> ultimate destination of the message. If the message is going into a tenant,
>>>> returning false is ok. But for the super tenant case, it should return
>>>> true. In any case, please look into this urgently and fix. This has
>>>> introduced a fundamental bug in addressing and RM.
>>>>
>>>
>>> We need to set the SuperTenantRolePlayer to invoke secure services by
>>> tenants. This was actually had been a module inside products previously
>>> (ex: AS org.wso2.stratos.appserver.deployment) and I just made it common by
>>> adding it as a stratos component. This was done as a fix for the issue [1].
>>>
>>> Previously this was only added to the services. Now after
>>> product-service merging this SuperTenantRolePlayer might be an issue to the
>>> products.
>>>
>>
>> Yes, correct..
>>
>>
>>> Will look in this.
>>>
>>
>> You can fix this either by not registering the Role Player for super
>> tenant or by writing the logic inside that method to determine whether it
>> is called by the super tenant or not.
>>
>
> Thanks for the suggestions. If we don't register the Role Player for super
> tenant, stratos secure services will fail in its super tenant flow while
> trying to process must understand fields for security headers. Because the
> rampart is engaged for services, only in sub tenants flow.
>
> So I think we have to take the second approach.
>

I just looked into this and looks like we can't figure out whether the
incoming request is going to a service hosted in super tenant or to a
service hosted in a sub tenant. That is because isUltimateDestination()
doesn't have the message context or any other information.

Therefore we'll have to figure out a proper solution for this. Azeez, have
you got any idea?

Thanks,
~Isuru


>
> Thanks,
> Lakmali
>
>
>> Thanks,
>> ~Isuru
>>
>>
>>>
>>> [1] 
>>> https://wso2.org/jira/browse/STRATOS-1953<https://wso2.org/jira/browse/STRATOS-1953>
>>>
>>> Thanks,
>>> Lakmali
>>>
>>>
>>>>
>>>> Thanks,
>>>> ~Isuru
>>>>
>>>> On Fri, Jun 22, 2012 at 1:34 PM, Andun Gunawardena <[email protected]>wrote:
>>>>
>>>>> Hi All,
>>>>>
>>>>> I have notified that Sandesha2 module cant be engaged in the
>>>>> way which was described in 
>>>>> [1]<http://wso2.org/project/app-server/4.1.2/docs/commodity_quote_guide.html>.
>>>>> In the client side it shows the follwoing error,
>>>>>
>>>>> ERROR [2012-06-21 12:19:47,991] The endpoint reference (EPR) for the
>>>>> Operation not found is and the WSA Action = . If this EPR was previously
>>>>> reachable, please contact the server administrator.
>>>>>
>>>>> When I did a SOAP tracing in AS, I found that the Addressing module is
>>>>> not engaged properly in the response SOAP message. That causes the
>>>>> Sandesha2 handshaking protocol to crash by not having necessary EPRs. The
>>>>> following SOAP message is the SOAP message which was returned to the first
>>>>> handshaking SOAP message, and it doesn't have addressing headers.
>>>>>
>>>>> <soapenv:Envelope xmlns:soapenv="
>>>>> http://www.w3.org/2003/05/soap-envelope";>
>>>>>    <soapenv:Header />
>>>>>    <soapenv:Body>
>>>>>       <ns:greetResponse xmlns:ns="http://www.wso2.org/types";>
>>>>>          <return>Hello World, AndunSLG !!!</return>
>>>>>       </ns:greetResponse>
>>>>>    </soapenv:Body>
>>>>> </soapenv:Envelope>
>>>>>
>>>>> In the org.apache.axiom.soap.impl.llom.SOAPHeaderImpl class's 127 line
>>>>> has the following Boolean check which have to return true for
>>>>> the correct excution,
>>>>>
>>>>> return (rolePlayer == null || rolePlayer.isUltimateDestination());
>>>>>
>>>>> But in the current carbon trunk, the rolePlayer object is a instance
>>>>> of org.wso2.carbon.stratos.deployment.SuperTenantRolePlayer. It has the
>>>>> method isUltimateDestination() implemented as follows,
>>>>>
>>>>> public boolean isUltimateDestination() {
>>>>>         return false;
>>>>> }
>>>>>
>>>>> So because of that
>>>>> Axis2's org.apache.axis2.handlers.addressing.AddressingInHandler class
>>>>> disables the AddressignOutHandler. So no addressing happens at the out
>>>>> flow. That causes all the trouble in Addressing and Sandesha2. I put 
>>>>> return
>>>>> true experimentally and that makes all the troubles back to normal. So is
>>>>> the implementation of public boolean isUltimateDestination()  is correct ?
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Isuru Suriarachchi
>>>> Senior Technical Lead
>>>> WSO2 Inc. http://wso2.com
>>>> email : [email protected]
>>>> blog : http://isurues.wordpress.com/
>>>>
>>>> lean . enterprise . middleware
>>>>
>>>>
>>>
>>>
>>> --
>>> Lakmali Baminiwatta*
>>> *
>>> Software Engineer
>>> WSO2, Inc.: http://wso2.com
>>> lean.enterprise.middleware
>>> mobile:  +94 71 2335936
>>> *
>>> *
>>>
>>>
>>
>>
>> --
>> Isuru Suriarachchi
>> Senior Technical Lead
>> WSO2 Inc. http://wso2.com
>> email : [email protected]
>> blog : http://isurues.wordpress.com/
>>
>> lean . enterprise . middleware
>>
>>
>
>
> --
> Lakmali Baminiwatta*
> *
> Software Engineer
> WSO2, Inc.: http://wso2.com
> lean.enterprise.middleware
> mobile:  +94 71 2335936
> *
> *
>
>


-- 
Isuru Suriarachchi
Senior Technical Lead
WSO2 Inc. http://wso2.com
email : [email protected]
blog : http://isurues.wordpress.com/

lean . enterprise . middleware
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to