On Fri, Jul 5, 2013 at 12:04 PM, Miyuru Wanninayaka <[email protected]> wrote:

> AFIU you do not need to handle sending 403 etc.. in API dispatch logic.
> Just return false in canProcess() method.
>

How does that automatically set the HTTP status code to 403 or 302?


>
> You can write a synapse config to handle messages not hitting to any
> resource in main sequence. Check API-M's main sequence.
>
>
> On Fri, Jul 5, 2013 at 10:53 AM, Ruwan Yatawara <[email protected]> wrote:
>
>> On Fri, Jul 5, 2013 at 10:51 AM, Sanjeewa Malalgoda <[email protected]>wrote:
>>
>>>
>>>
>>> On Fri, Jul 5, 2013 at 10:27 AM, Afkham Azeez <[email protected]> wrote:
>>>
>>>> In addition to 403, it would also be nice to support a 302. Sometimes,
>>>> if you access via  the wrong transport, it is better to redirect to the URL
>>>> containing the correct transport. So, we can have an additional property
>>>> which will specify whether a 403 or 302 has to be returned in the case of
>>>> the request coming on an unavailable transport.
>>>>
>>> +1. When we return 302 we need to point to where that document moved (if
>>> we have enough information). If we tried google.com it will return
>>> something like this.
>>>
>>> < HTTP/1.1 302 Found
>>> < Location: http://www.google.lk/
>>>
>>>
>>> <TITLE>302 Moved</TITLE></HEAD><BODY>
>>> <H1>302 Moved</H1>
>>> The document has moved
>>> <A HREF="http://www.google.lk/";>here</A>.
>>> </BODY></HTML>
>>>
>>
>> @Sanjeewa and @Azeez, I'm working on addressing both issues.
>>
>> Thanks for the feedback.
>>
>>
>>>
>>> So smart client apps will do second call to moved location(here
>>> www.google.lk/ ) and get response from there. We can use same here.
>>>
>>>
>> Thanks,
>>> Sanjeewa.
>>>
>>>>
>>>> Azeez
>>>>
>>>>
>>>> On Fri, Jul 5, 2013 at 10:11 AM, Ruwan Yatawara <[email protected]>wrote:
>>>>
>>>>> Hi All,
>>>>>
>>>>> I was able to achieve $subject using an alternate method.
>>>>>
>>>>> Now, the transport validation is done at the API level, and if the In
>>>>> inTransport in the message context does not match any of the transports
>>>>> listed in the API configuration, a property will be set in the Syanpse
>>>>> MessageContext, which in turn will be copied on to the Axis2
>>>>> MessageContext. Ultimately at the time of fabricating the response, this
>>>>> property will be checked, if it exists, a 403 forbidden response will be
>>>>> sent as the response.
>>>>>
>>>>> Thanks,
>>>>> Ruwan Yatawara
>>>>>
>>>>>
>>>>> On Wed, Jul 3, 2013 at 9:32 AM, Ruwan Yatawara <[email protected]>wrote:
>>>>>
>>>>>> Hi All,
>>>>>>
>>>>>> I did a rough implementation of the method I communicated in the
>>>>>> previous mail (of making a pseudo-service out of the each rest API), and
>>>>>> the concept "works" but it kind of looks like a "hack" at the end of the
>>>>>> day.
>>>>>>
>>>>>> I've listed down a few reasons, as to why this approach seems this
>>>>>> way.
>>>>>>
>>>>>> 1. The barrier between API and Proxy Service now seems murkier than
>>>>>> ever
>>>>>> 2. When going by this approach APIs need to be accessed with a
>>>>>> "/services/<CONTEXT>" url pattern.
>>>>>> 3. I had to re-implement the proxy service instantiating methods
>>>>>> leaving out most of the logic, in-order to create pseudo-services
>>>>>> 4. We will not be able to have a Rest API and Proxy Service with the
>>>>>> same name, at a given point of time (Since the AxisConfiguration will
>>>>>> maintain an entry for the pseudo-service created in the API's stead)
>>>>>> 5. Since, in the code "context" value specified in the URL will be
>>>>>> used to look up the Service. API name and Context needs to be the same.
>>>>>>
>>>>>> What do you all think? What would be the best way to achieve $subject?
>>>>>>
>>>>>> Thanks,
>>>>>> Ruwan Yatawara
>>>>>>
>>>>>> Ruwan Yatawara
>>>>>>
>>>>>> Software Engineer,
>>>>>> WSO2 Inc.
>>>>>> lean . enterprise . middleware
>>>>>>
>>>>>> email : [email protected]
>>>>>> mobile : +94 77 9110413
>>>>>> www: :http://wso2.com
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Jul 1, 2013 at 11:15 PM, Ruwan Yatawara <[email protected]>wrote:
>>>>>>
>>>>>>> Hi All,
>>>>>>>
>>>>>>> We are trying to introduce transport level access restrictions to
>>>>>>> APIs. As is already there in Proxy-Services, we seek to introduce a
>>>>>>> transport attribute to the API configuration and filter API access via 
>>>>>>> same.
>>>>>>>
>>>>>>> However when looking through the Syanpse code, i came to the
>>>>>>> understanding that, transport validation is done via the axis2 code 
>>>>>>> (It's
>>>>>>> the same block of code) for both Proxy Services and APIs. Before
>>>>>>> dispatching a call to Axis2, Synapse will verify whether the message
>>>>>>> context includes a service. When it comes to APIs, in which case there
>>>>>>> isn't an attached service, Synapse will specify the default
>>>>>>> "__SynapseService" as the service.
>>>>>>>
>>>>>>> Because of this, when it comes down to the Axis level, Proxy Service
>>>>>>> and Rest API calls will both be treated as services (since both have
>>>>>>> services assign to them). When Service#getExposedTransports method is
>>>>>>> called, whilst the proxy service will relay back transports configured 
>>>>>>> for
>>>>>>> that "specific" service, Rest APIs would always return the exposed
>>>>>>> transports for the "default" service (which are always HTTP & HTTPS).
>>>>>>>
>>>>>>> As a workaround for this I was thinking, maybe we can constitute
>>>>>>> some sort of "Pseudo-Service" (Since it is anyhow being treated at Axis
>>>>>>> level as a Service) out of each Rest API, and maintain a Deployer that 
>>>>>>> will
>>>>>>> set/update parameters like "ExposedTransports" that may in turn be 
>>>>>>> accessed
>>>>>>> via Axis.
>>>>>>>
>>>>>>> I'm not entirely sure if this is the right thing to do.
>>>>>>>
>>>>>>> Please feel free to weigh in your thoughts.
>>>>>>>
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>> Ruwan Yatawara
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> *Afkham Azeez*
>>>> Director of Architecture; WSO2, Inc.; http://wso2.com
>>>> Member; Apache Software Foundation; http://www.apache.org/
>>>> * <http://www.apache.org/>**
>>>> email: **[email protected]* <[email protected]>* cell: +94 77 3320919
>>>> blog: **http://blog.afkham.org* <http://blog.afkham.org>*
>>>> twitter: 
>>>> **http://twitter.com/afkham_azeez*<http://twitter.com/afkham_azeez>
>>>> *
>>>> linked-in: **http://lk.linkedin.com/in/afkhamazeez*
>>>> *
>>>> *
>>>> *Lean . Enterprise . Middleware*
>>>>
>>>> _______________________________________________
>>>> Architecture mailing list
>>>> [email protected]
>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>
>>>>
>>>
>>>
>>> --
>>> *
>>> *
>>> *Sanjeewa Malalgoda*
>>> WSO2 Inc.
>>> Mobile : +94713068779
>>>
>>>  <http://sanjeewamalalgoda.blogspot.com/>blog
>>> :http://sanjeewamalalgoda.blogspot.com/<http://sanjeewamalalgoda.blogspot.com/>
>>>
>>>
>>>
>>
>> _______________________________________________
>> Architecture mailing list
>> [email protected]
>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>
>>
>
>
> --
> Miyuru Wanninayaka
> Technical Lead
> WSO2 Inc. : http://wso2.com
>
> Mobile : +94 77 209 9788
> Blog : http://miyurudw.blogspot.com
> Flickr : http://www.flickr.com/photos/miyuru_daminda
> _______________________________________________
> Architecture mailing list
> [email protected]
> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>
>


-- 
*Afkham Azeez*
Director of Architecture; WSO2, Inc.; http://wso2.com
Member; Apache Software Foundation; http://www.apache.org/
* <http://www.apache.org/>**
email: **[email protected]* <[email protected]>* cell: +94 77 3320919
blog: **http://blog.afkham.org* <http://blog.afkham.org>*
twitter: **http://twitter.com/afkham_azeez*<http://twitter.com/afkham_azeez>
*
linked-in: **http://lk.linkedin.com/in/afkhamazeez*
*
*
*Lean . Enterprise . Middleware*
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to