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
