Sounds good.
Thanks Kishanthan.

Thanks & Regards,
Ishara Cooray
Senior Software Engineer
Mobile : +9477 262 9512
WSO2, Inc. | http://wso2.com/
Lean . Enterprise . Middleware

On Wed, Jan 4, 2017 at 5:30 PM, Kishanthan Thangarajah <[email protected]>
wrote:

> We are working on this. We couldn't progress much last week due to other
> priorities. The plan is to deliver in two weeks time.
>
> On Tue, Jan 3, 2017 at 1:40 PM, Ishara Cooray <[email protected]> wrote:
>
>> Hi,
>>
>> What could be the status of this? Do we have a time line defined?
>>
>> Thanks & Regards,
>> Ishara Cooray
>> Senior Software Engineer
>> Mobile : +9477 262 9512 <+94%2077%20262%209512>
>> WSO2, Inc. | http://wso2.com/
>> Lean . Enterprise . Middleware
>>
>> On Fri, Dec 9, 2016 at 2:18 PM, Sagara Gunathunga <[email protected]>
>> wrote:
>>
>>>
>>>
>>> On Fri, Dec 9, 2016 at 2:15 PM, Sanjeewa Malalgoda <[email protected]>
>>> wrote:
>>>
>>>> Hi All,
>>>> Please find inline comments.
>>>>
>>>> On Fri, Dec 9, 2016 at 12:49 PM, Sagara Gunathunga <[email protected]>
>>>> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Thu, Dec 8, 2016 at 6:59 PM, Ishara Cooray <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> To overcome the above limitation where we cannot plug custom
>>>>>> authentication, i came up with the below approach.
>>>>>>
>>>>>> Having one interceptor and delegate authentication to an interface.
>>>>>> Implementation of the interface is configurable so that we can plug 
>>>>>> custom
>>>>>> authentication as well.
>>>>>>
>>>>>> [image: Inline image 1]
>>>>>>
>>>>>> One limitation here is we can have only one auth type active at a
>>>>>> time.
>>>>>>
>>>>>> Hi Sanjeewa,
>>>>>>
>>>>>> Shall we continue with this approach until we get a proper fix from
>>>>>> msf4j?
>>>>>>
>>>>>
>>>>> It's ok to use above  approach as a temporary workaround till we get
>>>>> proper solution from MSF4J, but please make sure to implement only 
>>>>> required
>>>>> features in a simple manner because you have to discard this and have to
>>>>> use proper MSF4J approach before any release.
>>>>>
>>>>> By looking at issues faced by API-M and IS teams we have few issues to
>>>>> solve,
>>>>>
>>>>>
>>>>> 1. Ability to apply/skip Interceptors in global and per-service levels
>>>>> 2. Ability to define the order of Interceptors
>>>>> 3. Ability to intercept response messages
>>>>>
>>>> Ability to build security and user context in a way we can access it
>>>> from service implementation.
>>>> Most of the other platforms allowed to do that and people who work on
>>>> service implementation can get real advantage of that.
>>>>
>>>>>
>>>>> The good news is JAX-RS 2.0 spec is already solved these issues and we
>>>>> can adopt their concepts easily to MSF4J programming model. Please refer
>>>>> solution for each issue below.
>>>>>
>>>>>
>>>>> *1. Ability to intercept response messages *
>>>>>
>>>>> JAX-RS defines 2 interfaces as ContainerRequestFilter[1] and
>>>>> ContainerResponseFilter[2] to intercept request and response messages, IMO
>>>>> these 2 interfaces are much clean and standard then current MSF4J
>>>>> Interceptor[3] concept where response intercepting is not simple.
>>>>>
>>>>>
>>>>> *2.  Ability to apply/skip Interceptors  in global and per-service
>>>>> levels *
>>>>>
>>>>> Annotation driven NameBinding[4] concept defined for JAX-RS Filters is
>>>>> very flexible and easy to use as well. This NameBinding[4] feature enables
>>>>> to apply JAX-RS Filters at global, per-Resource or even per-sub-Resource
>>>>> level.
>>>>>
>>>>> *3. Define the order of Interceptors *
>>>>>
>>>>> JAX-RS defines several message processing extension points such as
>>>>> Pre, PreMatch, Post, it's possible to apply Filters during some of these
>>>>> message processing stages, as an example refer PreMatching[5] annotation.
>>>>>
>>>>> Further, to define fine grained order of Filters JAX-RS reuse Java's
>>>>> standard Priority[1] annotation, through this annotation numeric priority
>>>>> value can be define per Filters basis. JAX-RS already provide set of
>>>>> pre-defined Priories here[6]
>>>>>
>>>> Ability to engage in different phases is definitely a good feature. But
>>>> there can be situations where we need to engage multiple interceptors at
>>>> same phase with order of execution. As example i need to engage both
>>>> authenticate and authorization interceptors in pre invoke phase but
>>>> authenticator first and then authorizer as 2nd interceptor. In that case we
>>>> need to mention phase and order within phase in some way. It seems CXF and
>>>> other run times already handled this in different ways.
>>>>
>>>
>>> This requirement is well handled by the JAX-RS concept I described
>>> above.
>>>
>>> Thanks !
>>>
>>>>
>>>>
>>>> [1]http://cxf.apache.org/docs/interceptors.html
>>>>
>>>> Thanks,
>>>> sanjeewa.
>>>>
>>>>>
>>>>>
>>>>> I have setup a meeting in next Wednesday, if we can cater current
>>>>> requirements using above concepts let's go ahead with JAX-RS Filters.
>>>>>
>>>>>
>>>>> [1] - https://jax-rs-spec.java.net/nonav/2.0-SNAPSHOT/apidocs/in
>>>>> dex.html?javax/ws/rs/container/ContainerRequestFilter.html
>>>>> [2] - https://jax-rs-spec.java.net/nonav/2.0-SNAPSHOT/apidocs/ja
>>>>> vax/ws/rs/container/ContainerResponseFilter.html
>>>>> [3] - https://github.com/wso2/msf4j/blob/master/core/src/main/ja
>>>>> va/org/wso2/msf4j/Interceptor.java
>>>>> [4] - https://jax-rs-spec.java.net/nonav/2.0-SNAPSHOT/apidocs/in
>>>>> dex.html?javax/ws/rs/NameBinding.html
>>>>> [5] - https://jax-rs-spec.java.net/nonav/2.0-SNAPSHOT/apidocs/in
>>>>> dex.html?javax/ws/rs/container/PreMatching.html
>>>>> [6] - https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs
>>>>> /Priorities.html
>>>>>
>>>>> Thanks !
>>>>>
>>>>>> ​
>>>>>>
>>>>>>
>>>>>> Thanks & Regards,
>>>>>> Ishara Cooray
>>>>>> Senior Software Engineer
>>>>>> Mobile : +9477 262 9512 <+94%2077%20262%209512>
>>>>>> WSO2, Inc. | http://wso2.com/
>>>>>> Lean . Enterprise . Middleware
>>>>>>
>>>>>> On Thu, Dec 8, 2016 at 11:23 AM, Ishara Cooray <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Thilina,
>>>>>>>>
>>>>>>>> And also if there are multiple interceptors and one interceptor
>>>>>>>> returns false from its' preCaall then the invocation chain will not
>>>>>>>> continue further.
>>>>>>>>
>>>>>>>> So Is this implies if preCall returns 'true' then the invocation
>>>>>>>> chain will continue further?
>>>>>>>>
>>>>>>>
>>>>>>> Yes
>>>>>>>
>>>>>>> I was thinking to return 'true' if particular auth header
>>>>>>> type(Basic, Bearer) is not found in an interceptor, so that it will 
>>>>>>> check
>>>>>>> the other available interceptors.
>>>>>>> But i guess this approach may also fail if the request header type
>>>>>>> is not provided may be by mistake.
>>>>>>> Because all the interceptors will return true and will it be taken
>>>>>>> as a valid authorization?
>>>>>>>
>>>>>>>
>>>>>>> Thanks & Regards,
>>>>>>> Ishara Cooray
>>>>>>> Senior Software Engineer
>>>>>>> Mobile : +9477 262 9512 <+94%2077%20262%209512>
>>>>>>> WSO2, Inc. | http://wso2.com/
>>>>>>> Lean . Enterprise . Middleware
>>>>>>>
>>>>>>> On Wed, Dec 7, 2016 at 5:25 PM, Afkham Azeez <[email protected]> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Dec 7, 2016 at 5:17 PM, Ishara Cooray <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi Thilina,
>>>>>>>>>
>>>>>>>>> And also if there are multiple interceptors and one interceptor
>>>>>>>>> returns false from its' preCaall then the invocation chain will not
>>>>>>>>> continue further.
>>>>>>>>>
>>>>>>>>> So Is this implies if preCall returns 'true' then the invocation
>>>>>>>>> chain will continue further?
>>>>>>>>>
>>>>>>>>
>>>>>>>> Yes
>>>>>>>>
>>>>>>>>
>>>>>>>>> If that is the case we can return true in our overridden preCall
>>>>>>>>> method so that it goes to next Interceptor.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks & Regards,
>>>>>>>>> Ishara Cooray
>>>>>>>>> Senior Software Engineer
>>>>>>>>> Mobile : +9477 262 9512 <077%20262%209512>
>>>>>>>>> WSO2, Inc. | http://wso2.com/
>>>>>>>>> Lean . Enterprise . Middleware
>>>>>>>>>
>>>>>>>>> On Wed, Dec 7, 2016 at 2:33 PM, Afkham Azeez <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> How about supporting JAXRS filters?
>>>>>>>>>>
>>>>>>>>>> On Wed, Dec 7, 2016 at 12:52 PM, Thusitha Thilina Dayaratne <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Ishara,
>>>>>>>>>>>
>>>>>>>>>>> As you have mentioned, with the current architecture we can't
>>>>>>>>>>> set the specific interceptor for a particular service but rather to 
>>>>>>>>>>> all
>>>>>>>>>>> services in the registry. And also if there are multiple 
>>>>>>>>>>> interceptors and
>>>>>>>>>>> one interceptor returns false from its' preCaall then the 
>>>>>>>>>>> invocation chain
>>>>>>>>>>> will not continue further.
>>>>>>>>>>>
>>>>>>>>>>> IMHO we have few options
>>>>>>>>>>>
>>>>>>>>>>>    - We can implement a way to register specific interceptors
>>>>>>>>>>>    to specific services
>>>>>>>>>>>    - We can support JAX-RS Filters
>>>>>>>>>>>    - We can provide a way to skip some interceptors for
>>>>>>>>>>>    specific services
>>>>>>>>>>>
>>>>>>>>>>> @Azeez WDYT?
>>>>>>>>>>>
>>>>>>>>>>> Thanks
>>>>>>>>>>> Thusitha
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Dec 7, 2016 at 10:56 AM, Ishara Cooray <[email protected]
>>>>>>>>>>> > wrote:
>>>>>>>>>>>
>>>>>>>>>>>> HI,
>>>>>>>>>>>>
>>>>>>>>>>>> We are using MSF4J interceptor for securing REST APIs in API
>>>>>>>>>>>> Manager. [1] As for now Interceptor registration happens at the 
>>>>>>>>>>>> class level
>>>>>>>>>>>> @Component annotation as below.
>>>>>>>>>>>>
>>>>>>>>>>>> @Component(
>>>>>>>>>>>>         name = "org.wso2.carbon.apimgt.rest.a
>>>>>>>>>>>> pi.common.interceptors.OAUTH2SecurityInterceptor",
>>>>>>>>>>>>         service = Interceptor.class,
>>>>>>>>>>>>         immediate = true
>>>>>>>>>>>> )
>>>>>>>>>>>> The limitations here are
>>>>>>>>>>>>
>>>>>>>>>>>>    1. it is not possible to have more than one interceptor
>>>>>>>>>>>>    that will dynamically pick when an api call is received(Because 
>>>>>>>>>>>> the order
>>>>>>>>>>>>    matters and we are not certain which interceptor will take into 
>>>>>>>>>>>> effect ).
>>>>>>>>>>>>    2. We cannot explicitly configure to use Custom
>>>>>>>>>>>>    interceptors because of the above[1] reason.
>>>>>>>>>>>>
>>>>>>>>>>>> Do we have any plans for these limitations?
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks & Regards,
>>>>>>>>>>>> Ishara Cooray
>>>>>>>>>>>> Senior Software Engineer
>>>>>>>>>>>> Mobile : +9477 262 9512 <+94%2077%20262%209512>
>>>>>>>>>>>> WSO2, Inc. | http://wso2.com/
>>>>>>>>>>>> Lean . Enterprise . Middleware
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> Dev mailing list
>>>>>>>>>>>> [email protected]
>>>>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Thusitha Dayaratne
>>>>>>>>>>> Software Engineer
>>>>>>>>>>> WSO2 Inc. - lean . enterprise . middleware |  wso2.com
>>>>>>>>>>>
>>>>>>>>>>> Mobile  +94712756809 <071%20275%206809>
>>>>>>>>>>> Blog      alokayasoya.blogspot.com
>>>>>>>>>>> About    http://about.me/thusithathilina
>>>>>>>>>>> <http://wso2.com/signature>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>> [email protected]
>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> *Afkham Azeez*
>>>>>>>>>> Senior Director, Platform 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 <+94%2077%20332%200919>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
>>>>>>>>>> <http://lk.linkedin.com/in/afkhamazeez>*
>>>>>>>>>>
>>>>>>>>>> *Lean . Enterprise . Middleware*
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> *Afkham Azeez*
>>>>>>>> Senior Director, Platform 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 <+94%2077%20332%200919>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
>>>>>>>> <http://lk.linkedin.com/in/afkhamazeez>*
>>>>>>>>
>>>>>>>> *Lean . Enterprise . Middleware*
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Dev mailing list
>>>>>> [email protected]
>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Sagara Gunathunga
>>>>>
>>>>> Associate Director / Architect; 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
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> *Sanjeewa Malalgoda*
>>>> WSO2 Inc.
>>>> Mobile : +94713068779 <+94%2071%20306%208779>
>>>>
>>>> <http://sanjeewamalalgoda.blogspot.com/>blog
>>>> :http://sanjeewamalalgoda.blogspot.com/
>>>> <http://sanjeewamalalgoda.blogspot.com/>
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Sagara Gunathunga
>>>
>>> Associate Director / Architect; 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
>>>
>>>
>>
>
>
> --
> *Kishanthan Thangarajah*
> Technical Lead,
> Platform Technologies Team,
> WSO2, Inc.
> lean.enterprise.middleware
>
> Mobile - +94773426635 <+94%2077%20342%206635>
> Blog - *http://kishanthan.wordpress.com <http://kishanthan.wordpress.com>*
> Twitter - *http://twitter.com/kishanthan <http://twitter.com/kishanthan>*
>
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to