AFIU you do not need to handle sending 403 etc.. in API dispatch logic. Just return false in canProcess() method.
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
