Hi Kasun,

Thanks a lot for pointing that out.

So, this is the current implementation.

    private static PrivilegedCarbonContext carbonContext;

    @OnOpen
    public void onOpen (Session session, @PathParam("topic") String topic,
@PathParam("tdomain") String tdomain) {
        carbonContext =
PrivilegedCarbonContext.getThreadLocalCarbonContext();
        carbonContext.setTenantDomain(tdomain);
    }

    @OnMessage
    public void onMessage (Session session, String message,
@PathParam("topic") String topic, @PathParam("tdomain") String tdomain) {
        String tdomain = carbonContext.getTenantDomain();
        websocketInputService.invokeListener(tdomain, topic, message);
    }

Unless we authenticate clients at onOpen method, this implementation too is
unsecured, right?

Thanks,
Dilini


On Wed, Jul 23, 2014 at 5:08 AM, Kasun Gajasinghe <[email protected]> wrote:

>
>
>
> On Tue, Jul 22, 2014 at 4:30 PM, Dilini Muthumala <[email protected]> wrote:
>
>> Hi Sagara,
>>
>> Thanks a lot for the informative reply.
>>
>> On Tue, Jul 22, 2014 at 8:22 PM, Sagara Gunathunga <[email protected]>
>> wrote:
>>
>>>  As we discussed offline you need to modify onOpen() method to receive
>>> tenant id from an initial handshake request, then within the onOpen method
>>> you have to write logic similar to 
>>> CarbonContextCreatorValve#initCarbonContext()
>>> method.
>>>
>>
>> Alternatively, how about reading the tenant domain from the path
>> parameter (i.e. without using PrivilegedCarbonContext), as shown below?
>>
>>     @OnOpen
>>     public void onOpen (Session session, @PathParam("topic") String
>> topic, @PathParam("tdomain") String tdomain) {
>>     }
>>
>>     @OnMessage
>>     public void onMessage (Session session, String message,
>> @PathParam("topic") String topic, @PathParam("tdomain") String tdomain) {
>>         websocketInputService.invokeListener(tdomain, topic, message);
>>     }
>>
>>
> -1. This would create a security loop hole.
>
> If your webapp needs to work across all the tenants, then you might need
> to make it a SaaS app. This would be pretty much similar to API publisher.
>
>
>
>> Thanks,
>> Dilini
>>
>>>
>>>
>>> Thanks !
>>>
>>> On Tue, Jul 22, 2014 at 7:18 PM, Dilini Muthumala <[email protected]>
>>> wrote:
>>>
>>>> FYI, this is the end point trying to get the tenant id:
>>>>
>>>> import javax.websocket.*;
>>>> import org.wso2.carbon.context.PrivilegedCarbonContext;
>>>> import
>>>> org.wso2.carbon.event.input.adaptor.websocket.WebsocketInputService;
>>>>
>>>> @ServerEndpoint(value = "/{topic}")
>>>> public class DataReceivingEndpoint {
>>>>
>>>>     private static WebsocketInputService websocketInputService;
>>>>     private static int tenantId;
>>>>
>>>>     public DataReceivingEndpoint() {
>>>>         websocketInputService = (WebsocketInputService)
>>>> PrivilegedCarbonContext.getThreadLocalCarbonContext()
>>>>                 .getOSGiService(WebsocketInputService.class);
>>>>     }
>>>>
>>>>     @OnOpen
>>>>     public void onOpen (Session session, @PathParam("topic") String
>>>> topic) {
>>>>     }
>>>>
>>>>     @OnMessage
>>>>     public void onMessage (Session session, String message,
>>>> @PathParam("topic") String topic) {
>>>>         tenantId =
>>>> PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); //
>>>> returned -1
>>>>         websocketInputService.invokeListener(tenantId, topic, message);
>>>>     }
>>>>
>>>>     @OnClose
>>>>     public void onClose (Session session, CloseReason reason) {
>>>>     }
>>>>
>>>>     @OnError
>>>>     public void onError (Session session) {
>>>>     }
>>>> }
>>>>
>>>>
>>>> On Tue, Jul 22, 2014 at 5:58 PM, Dilini Muthumala <[email protected]>
>>>> wrote:
>>>>
>>>>> Hi all,
>>>>>
>>>>> Had an offline discussion with Sameera, Sagara and Chamil regarding
>>>>> this.
>>>>>
>>>>> The most important piece of info is missing in my initial mail, which
>>>>> is, this web app contains a web-socket end point.
>>>>>
>>>>> That must be the reason why all these usual methods are not working.
>>>>>
>>>>> Thanks,
>>>>> Dilini
>>>>>
>>>>>
>>>>> On Tue, Jul 22, 2014 at 5:45 PM, Kasun Gajasinghe <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> Hi Dilini,
>>>>>>
>>>>>> What's the product you are trying this in? Can you open up
>>>>>> CARBON_HOME/repository/conf/tomcat/catalina-server.xml, and make sure 
>>>>>> that
>>>>>> it has the following valve defined?
>>>>>>
>>>>>>       <Valve
>>>>>> className="org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve"/>
>>>>>>
>>>>>> The reported jira that is mentioned above is an issue with logging.
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Tue, Jul 22, 2014 at 4:58 AM, Asanka Dissanayake <[email protected]
>>>>>> > wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Jul 22, 2014 at 5:23 PM, Asanka Dissanayake <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Jul 22, 2014 at 5:03 PM, Gayashan Amarasinghe <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi Dilini,
>>>>>>>>>
>>>>>>>>> Did you deploy the web app as super tenant or a tenant? What are
>>>>>>>>> the server versions you used?
>>>>>>>>>
>>>>>>>>> Method you have used is the proper way to access the tenant Id.
>>>>>>>>>
>>>>>>>> AFAIK you shouldn't use PrivilegedCarbonContext to read
>>>>>>>> information. It is used to write stuffs to the carbon context.
>>>>>>>>
>>>>>>> For more information:
>>>>>>>
>>>>>>> PrivilegedCarbonContext
>>>>>>>
>>>>>>> PrivilegedCarbonContext is a special subclass of CarbonContext,
>>>>>>> which allows you to perform privileged operations such as, setting the
>>>>>>> tenant ID and domain, starting or ending tenant flows and more. This 
>>>>>>> class
>>>>>>> can only be used by Carbon components that have the permission to get 
>>>>>>> hold
>>>>>>> of an instance of the PrivilegedCarbonContext.
>>>>>>>
>>>>>>>
>>>>>>> CarbonContext
>>>>>>> The CarbonContext is designed for normal tenants to retrieve
>>>>>>> information from the Carbon runtime. In the super tenant mode, for this 
>>>>>>> to
>>>>>>> work the relevant data has to be set so that tenants can retrieve
>>>>>>> information using the CarbonContext.
>>>>>>>
>>>>>>>>  However as Malintha has mentioned, there are some bugs when
>>>>>>>>> certain super-tenant related tasks are logged, which has not been 
>>>>>>>>> observed
>>>>>>>>> for tenant-wise tasks. This bug will be fixed with 4.3 release.
>>>>>>>>>
>>>>>>>>> Thanks.
>>>>>>>>>
>>>>>>>>> /Gayashan
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Jul 22, 2014 at 3:29 PM, Dilini Muthumala <[email protected]
>>>>>>>>> > wrote:
>>>>>>>>>
>>>>>>>>>>  Hi,
>>>>>>>>>>
>>>>>>>>>> Would like to know, how to $subject.
>>>>>>>>>>
>>>>>>>>>> I tired with,
>>>>>>>>>>
>>>>>>>>>> PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
>>>>>>>>>>
>>>>>>>>>> which returned -1, as the tenant id.
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Dilini
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> *Dilini Muthumala*
>>>>>>>>>> Software Engineer,
>>>>>>>>>> WSO2 Inc.
>>>>>>>>>>
>>>>>>>>>> *E-mail :* [email protected]
>>>>>>>>>> *Mobile: *+94713 400 029
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Dev mailing list
>>>>>>>>>> [email protected]
>>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> *Gayashan Amarasinghe*
>>>>>>>>> Software Engineer | Platform TG
>>>>>>>>> WSO2, Inc. | http://wso2.com
>>>>>>>>> lean. enterprise. middleware
>>>>>>>>>
>>>>>>>>> Mobile : +94718314517
>>>>>>>>> Blog : gayashan-a.blogspot.com
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Dev mailing list
>>>>>>>>> [email protected]
>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>>
>>>>>>>>
>>>>>>>> *Asanka DissanayakeSoftware Engineer*
>>>>>>>> *WSO2 Inc. - lean . enterprise . middleware |  wso2.com
>>>>>>>> <http://wso2.com/>*
>>>>>>>>
>>>>>>>> *email: [email protected] <[email protected]>,   blog:
>>>>>>>> cyberwaadiya.blogspot.com
>>>>>>>> <http://cyberwaadiya.blogspot.com>, asankastechtalks.wordpress.com
>>>>>>>> <http://asankastechtalks.wordpress.com>  mobile: +94 71 8373821*
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>>
>>>>>>> *Asanka DissanayakeSoftware Engineer*
>>>>>>> *WSO2 Inc. - lean . enterprise . middleware |  wso2.com
>>>>>>> <http://wso2.com/>*
>>>>>>>
>>>>>>> *email: [email protected] <[email protected]>,   blog:
>>>>>>> cyberwaadiya.blogspot.com
>>>>>>> <http://cyberwaadiya.blogspot.com>, asankastechtalks.wordpress.com
>>>>>>> <http://asankastechtalks.wordpress.com>  mobile: +94 71 8373821*
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Dev mailing list
>>>>>>> [email protected]
>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>>> *Kasun Gajasinghe*Senior Software Engineer, WSO2 Inc.
>>>>>> email: kasung AT spamfree wso2.com
>>>>>> linked-in: http://lk.linkedin.com/in/gajasinghe
>>>>>> blog: http://kasunbg.org
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Dev mailing list
>>>>>> [email protected]
>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Dilini Muthumala*
>>>>> Software Engineer,
>>>>> WSO2 Inc.
>>>>>
>>>>> *E-mail :* [email protected]
>>>>> *Mobile: *+94713 400 029
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> *Dilini Muthumala*
>>>> Software Engineer,
>>>> WSO2 Inc.
>>>>
>>>> *E-mail :* [email protected]
>>>> *Mobile: *+94713 400 029
>>>>
>>>> _______________________________________________
>>>> Dev mailing list
>>>> [email protected]
>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>
>>>>
>>>
>>>
>>> --
>>> Sagara Gunathunga
>>>
>>> Senior Technical Lead; WSO2, Inc.;  http://wso2.com
>>> V.P Apache Web Services;    http://ws.apache.org/
>>> Linkedin; http://www.linkedin.com/in/ssagara
>>> Blog ;  http://ssagara.blogspot.com
>>>
>>>
>>
>>
>> --
>> *Dilini Muthumala*
>> Software Engineer,
>> WSO2 Inc.
>>
>> *E-mail :* [email protected]
>> *Mobile: *+94713 400 029
>>
>> _______________________________________________
>> Dev mailing list
>> [email protected]
>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>
>>
>
>
> --
>
> *Kasun Gajasinghe*Senior Software Engineer, WSO2 Inc.
> email: kasung AT spamfree wso2.com
> linked-in: http://lk.linkedin.com/in/gajasinghe
> blog: http://kasunbg.org
>
>
>



-- 
*Dilini Muthumala*
Software Engineer,
WSO2 Inc.

*E-mail :* [email protected]
*Mobile: *+94713 400 029
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to