[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wsf-java-dev
Subject:    Re: [Dev] Authenticating with client_credentials grant failing with due to the use of multiple authe
From:       Kaveen Rodrigo <kaveen () wso2 ! com>
Date:       2019-01-18 11:56:00
Message-ID: CAF7uod4CZrUmcXgikcu=6bvnt+5p8UpJEexNUZEz9Ct+ifZf0g () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Noted,

We're running a FAPI test suite[1] against the WSO2 Open Banking solution
and just wanted to test out all the methods,
On a live environment, this probably might not happen.

[1] -
https://openbanking.atlassian.net/wiki/spaces/DZ/pages/23856067/OB+OIDC+Conformance+Suite


cheers,
Kaveen Rodrigo

On Fri, Jan 18, 2019 at 5:05 PM Hasintha Indrajee <hasintha@wso2.com> wrote:

> If you need to use Basic Client Authentication + mTLS for authentication,
> you need to turn off basic authenticator. IIRC, clients should not use more
> than one method for authentication as per specification.
> 
> The given request meets two client authenticator criteria. Basic client
> authenticator and Basic + mTLS client authenticator.
> 
> On Fri, Jan 18, 2019 at 4:43 PM Kaveen Rodrigo <kaveen@wso2.com> wrote:
> 
> > Hey Farasath,
> > 
> > I tried it without the client_secret and it works out, And then I
> > realized probably the *" Allow authentication without the client secret"*
> > is causing the problem (we use this as we validate transport layer
> > certificates on the gateway) Now it works :-)
> > 
> > We'll have to take a look at it from our end.
> > 
> > Thanks, Have a nice weekend,
> > Kaveen Rodrigo
> > 
> > On Fri, Jan 18, 2019 at 4:17 PM Farasath Ahamed <farasatha@wso2.com>
> > wrote:
> > 
> > > Hi Kaveen,
> > > 
> > > Can you try the same request without sending the client_secret in the
> > > request (send only the client_id) ?
> > > 
> > > On Friday, January 18, 2019, Kaveen Rodrigo <kaveen@wso2.com> wrote:
> > > 
> > > > Hey all,
> > > > 
> > > > I'm having some trouble getting a token with *client_credentials *grant
> > > > and mutual TLS where it fails with the error message *"**The client
> > > > MUST NOT use more than one authentication method in each" *refer
> > > > request below
> > > > 
> > > > curl -k -d "grant_type=client_credentials&scope=accounts&client_id=<CLIENT_ID>&client_secret=<CLIENT_SECRET>"
> > > >  
> > > > \ -H "Content-Type: application/x-www-form-urlencoded"
> > > > 
> > > > \ --cert cert.crt --key key.key -X POST https://203.94.95.194:8243/token
> > > > 
> > > > I'm using *wso2ob-km 5.7.0 (WSO2 Identity Server 5.7.0)* with OAuth
> > > > logs enabled, and I get the following output.
> > > > 
> > > > TID: [-1234] [] [2019-01-18 02:51:54,108] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} \
> > > >                 -  Executing OAuth client authenticators.
> > > > TID: [-1234] [] [2019-01-18 02:51:54,108] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} \
> > > >                 -  Retrieving registered OAuth client authenticator list.
> > > > TID: [-1234] [] [2019-01-18 02:51:54,112] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} \
> > > > -  Evaluating canAuthenticate of authenticator : \
> > > >                 PrivateKeyJWTClientAuthenticator
> > > > TID: [-1234] [] [2019-01-18 02:51:54,113] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.token.handler.clientauth.jwt.PrivateKeyJWTClientAuthenticator} \
> > > > -  Authenticate Requested with clientAssertionType : null*TID: [-1234] [] \
> > > > [2019-01-18 02:51:54,114] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} \
> > > >                 -  PrivateKeyJWTClientAuthenticator authenticator cannot \
> > > >                 handle this request.
> > > > *TID: [-1234] [] [2019-01-18 02:51:54,115] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} \
> > > > -  Evaluating canAuthenticate of authenticator : \
> > > >                 BasicOAuthClientCredAuthenticator
> > > > TID: [-1234] [] [2019-01-18 02:51:54,115] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.client.authentication.BasicAuthClientAuthenticator} \
> > > >                 -  Basic auth credentials present as body params. Hence \
> > > >                 returning true
> > > > TID: [-1234] [] [2019-01-18 02:51:54,115] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} \
> > > > -  BasicOAuthClientCredAuthenticator authenticator can handle incoming \
> > > >                 request.
> > > > TID: [-1234] [] [2019-01-18 02:51:54,115] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} \
> > > > -  Authenticator BasicOAuthClientCredAuthenticator can authenticate the \
> > > > client request.  Hence trying to evaluate authentication*TID: [-1234] [] \
> > > > [2019-01-18 02:51:54,115] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.client.authentication.BasicAuthClientAuthenticator} \
> > > >                 -  Authenticating client : <CLIENT_ID>with client secret.
> > > > *TID: [-1234] [] [2019-01-18 02:51:54,139] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.util.OAuth2Util} -  Client credentials were \
> > > > fetched from the database.*TID: [-1234] [] [2019-01-18 02:51:54,139] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.util.OAuth2Util} -  Successfully \
> > > >                 authenticated the client with client id : <CLIENT_ID>
> > > > *TID: [-1234] [] [2019-01-18 02:51:54,139] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.util.OAuth2Util} -  Client credentials were \
> > > >                 added to the cache for client id : <CLIENT_ID>
> > > > TID: [-1234] [] [2019-01-18 02:51:54,139] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} \
> > > > -  Authentication result from OAuth client authenticator \
> > > >                 BasicOAuthClientCredAuthenticator is : true
> > > > TID: [-1234] [] [2019-01-18 02:51:54,139] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} \
> > > >                 -  Evaluating canAuthenticate of authenticator : \
> > > >                 PublicClientAuthenticator
> > > > TID: [-1234] [] [2019-01-18 02:51:54,160] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} \
> > > >                 -  PublicClientAuthenticator authenticator can handle \
> > > >                 incoming request.
> > > > TID: [-1234] [] [2019-01-18 02:51:54,160] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} \
> > > > -  Previously an authenticator is evaluated. Hence authenticator \
> > > >                 PublicClientAuthenticator is not evaluating
> > > > TID: [-1234] [] [2019-01-18 02:51:54,160] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} \
> > > > -  Authenticator PublicClientAuthenticator can authenticate the client \
> > > > request.  Hence trying to evaluate authentication*TID: [-1234] [] [2019-01-18 \
> > > > 02:51:54,161] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} \
> > > > -  2 Authenticators were executed previously. Hence failing client \
> > > >                 authentication
> > > > TID: [-1234] [] [2019-01-18 02:51:54,161] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} \
> > > > -  Setting error to client authentication context : Error code : \
> > > > invalid_request, Error message : The client MUST NOT use more than one \
> > > >                 authentication method in each
> > > > *TID: [-1234] [] [2019-01-18 02:51:54,184] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.OAuth2Service} -  Access Token request \
> > > > received for Client ID <CLIENT_ID>, User ID null, Scope : [accounts] and \
> > > >                 Grant Type : client_credentials
> > > > TID: [-1234] [] [2019-01-18 02:51:54,192]  INFO \
> > > > {org.wso2.carbon.identity.oauth.config.OAuthServerConfiguration} -  The \
> > > >                 default OAuth token issuer will be used. No custom token \
> > > >                 generator is set.
> > > > TID: [-1234] [] [2019-01-18 02:51:54,192]  INFO \
> > > > {org.wso2.carbon.identity.oauth.config.OAuthServerConfiguration} -  The \
> > > > default Identity OAuth token issuer will be used. No custom token generator \
> > > >                 is set.
> > > > TID: [-1234] [] [2019-01-18 02:51:54,315] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer} -  Successfully \
> > > >                 created AppInfoCache under OAuthCacheManager
> > > > TID: [-1234] [] [2019-01-18 02:51:54,316] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer} -  Triggering \
> > > >                 access token pre issuer listeners for client: <CLIENT_ID>
> > > > TID: [-1234] [] [2019-01-18 02:51:54,316] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer} -  \
> > > > OAuth-Error-Code=invalid_request \
> > > >                 client-id=<CLIENT_ID>grant-type=client_credentials \
> > > >                 scope=accounts
> > > > TID: [-1234] [] [2019-01-18 02:51:54,316] DEBUG \
> > > > {org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer} -  Triggering \
> > > > access token post issuer listeners for client: <CLIENT_ID> 
> > > > How can I mitigate this behavior? Disable some of the authenticators?
> > > > set priority?
> > > > Please give your input,
> > > > 
> > > > Thanks In advance,
> > > > Kaveen Rodrigo
> > > > 
> > > > --
> > > > *Kaveen Rodrigo *
> > > > Software Engineer | WS02
> > > > 
> > > > Email : kaveen@wso2.com
> > > > Mobile : +94779684749
> > > > Web : http://www.wso2.com
> > > > 
> > > > <http://goog_953536661>
> > > > [image: http://wso2.com/signature] <http://wso2.com/signature>
> > > > 
> > > 
> > > 
> > > --
> > > Farasath Ahamed
> > > Senior Software Engineer, WSO2 Inc.; http://wso2.com
> > > Mobile: +94777603866
> > > Blog: blog.farazath.com
> > > Twitter: @farazath619 <https://twitter.com/farazath619>
> > > <http://wso2.com/signature>
> > > 
> > > 
> > > 
> > > 
> > > 
> > 
> > --
> > *Kaveen Rodrigo *
> > Software Engineer | WS02
> > 
> > Email : kaveen@wso2.com
> > Mobile : +94779684749
> > Web : http://www.wso2.com
> > 
> > <http://goog_953536661>
> > [image: http://wso2.com/signature] <http://wso2.com/signature>
> > 
> 
> 
> --
> Hasintha Indrajee
> WSO2, Inc.
> Mobile:+94 771892453
> 
> 

-- 
*Kaveen Rodrigo *
Software Engineer | WS02

Email : kaveen@wso2.com
Mobile : +94779684749
Web : http://www.wso2.com

<http://goog_953536661>
[image: http://wso2.com/signature] <http://wso2.com/signature>


[Attachment #5 (text/html)]

<div dir="ltr"><div dir="ltr">Noted,<div><br></div><div>We&#39;re running  a FAPI \
test suite[1] against the WSO2 Open Banking solution and just wanted to test out all \
the methods,</div><div>On a live environment, this probably might not \
happen.</div><div><br></div><div>[1] -  <a \
href="https://openbanking.atlassian.net/wiki/spaces/DZ/pages/23856067/OB+OIDC+Conforma \
nce+Suite">https://openbanking.atlassian.net/wiki/spaces/DZ/pages/23856067/OB+OIDC+Conformance+Suite</a></div><div><br></div><div>cheers, \
</div><div>Kaveen Rodrigo</div></div></div><br><div class="gmail_quote"><div \
dir="ltr" class="gmail_attr">On Fri, Jan 18, 2019 at 5:05 PM Hasintha Indrajee &lt;<a \
href="mailto:hasintha@wso2.com">hasintha@wso2.com</a>&gt; wrote:<br></div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex"><div dir="ltr">If you need to use Basic Client \
Authentication  + mTLS for authentication, you need to turn off basic authenticator. \
IIRC, clients should not use more than one method for authentication as per \
specification.  <div><br></div><div>The given request meets two client authenticator \
criteria. Basic client authenticator and Basic  + mTLS client authenticator.  \
</div></div><br><div class="gmail_quote"><div dir="ltr" \
class="gmail-m_-3167199913576772141gmail_attr">On Fri, Jan 18, 2019 at 4:43 PM Kaveen \
Rodrigo &lt;<a href="mailto:kaveen@wso2.com" target="_blank">kaveen@wso2.com</a>&gt; \
wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div \
dir="ltr">Hey Farasath,  <div><br></div><div>I tried it without the client_secret and \
it works out, And then I realized probably the <b>&quot;  Allow authentication \
without the client secret&quot;</b> is causing the problem (we use this as we \
validate transport layer certificates on the gateway) Now it works \
:-)</div><div><br></div><div>We&#39;ll have to take a look at it from our \
end.</div><div><br></div><div>Thanks, Have a nice weekend,  </div><div>Kaveen \
Rodrigo</div></div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Jan 18, \
2019 at 4:17 PM Farasath Ahamed &lt;<a href="mailto:farasatha@wso2.com" \
target="_blank">farasatha@wso2.com</a>&gt; wrote:<br></div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex">Hi Kaveen,<div><br></div><div>Can you try the same \
request without sending the client_secret in the request (send only the client_id) \
?<br><br>On Friday, January 18, 2019, Kaveen Rodrigo &lt;<a \
href="mailto:kaveen@wso2.com" target="_blank">kaveen@wso2.com</a>&gt; \
wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px \
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div \
dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div \
dir="ltr"><div dir="ltr">Hey all,<div><br></div><div>I&#39;m having some trouble \
getting a token with  <span \
style="color:rgb(0,0,0);white-space:pre-wrap"><b>client_credentials </b>grant and \
mutual TLS where it fails with the error message <b>&quot;</b></span><span \
style="color:rgb(0,0,0);white-space:pre-wrap"><b>The client MUST NOT use more than \
one authentication method in each&quot; </b>refer request below \
</span></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><pre \
style="color:rgb(0,0,0);white-space:pre-wrap"><pre style="white-space:pre-wrap">curl \
-k -d &quot;grant_type=client_credentials&amp;scope=accounts&amp;client_id=&lt;CLIENT_ID&gt;&amp;client_secret=&lt;CLIENT_SECRET&gt;&quot; \
</pre><pre style="white-space:pre-wrap">    \ -H &quot;Content-Type: \
application/x-www-form-urlencoded&quot; </pre><pre style="white-space:pre-wrap">     \
\ --cert cert.crt --key key.key -X POST <a href="https://203.94.95.194:8243/token" \
target="_blank">https://203.94.95.194:8243/token</a></pre></pre></blockquote><div><div>I&#39;m \
using <b>wso2ob-km 5.7.0 (WSO2 Identity Server  5.7.0)</b>  with OAuth logs enabled, \
and I get the following output.</div></div><blockquote style="margin:0px 0px 0px \
40px;border:none;padding:0px"><div><div><pre><font size="1"><font \
color="#000000"><span style="white-space:pre-wrap">TID: [-1234] [] [2019-01-18 \
02:51:54,108] DEBUG {org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} \
                -  Executing OAuth client authenticators.
TID: [-1234] [] [2019-01-18 02:51:54,108] DEBUG \
{org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} -  \
                Retrieving registered OAuth client authenticator list.
TID: [-1234] [] [2019-01-18 02:51:54,112] DEBUG \
{org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} -  \
                Evaluating canAuthenticate of authenticator : \
                PrivateKeyJWTClientAuthenticator
TID: [-1234] [] [2019-01-18 02:51:54,113] DEBUG \
{org.wso2.carbon.identity.oauth2.token.handler.clientauth.jwt.PrivateKeyJWTClientAuthenticator} \
-  Authenticate Requested with clientAssertionType : null <b>TID: [-1234] [] \
[2019-01-18 02:51:54,114] DEBUG \
{org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} -  \
PrivateKeyJWTClientAuthenticator authenticator cannot handle this request. </b>TID: \
[-1234] [] [2019-01-18 02:51:54,115] DEBUG \
{org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} -  \
                Evaluating canAuthenticate of authenticator : \
                BasicOAuthClientCredAuthenticator
TID: [-1234] [] [2019-01-18 02:51:54,115] DEBUG \
{org.wso2.carbon.identity.oauth2.client.authentication.BasicAuthClientAuthenticator} \
                -  Basic auth credentials present as body params. Hence returning \
                true
TID: [-1234] [] [2019-01-18 02:51:54,115] DEBUG \
{org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} -  \
                BasicOAuthClientCredAuthenticator authenticator can handle incoming \
                request.
TID: [-1234] [] [2019-01-18 02:51:54,115] DEBUG \
{org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} -  \
Authenticator BasicOAuthClientCredAuthenticator can authenticate the client request.  \
Hence trying to evaluate authentication <b>TID: [-1234] [] [2019-01-18 02:51:54,115] \
DEBUG {org.wso2.carbon.identity.oauth2.client.authentication.BasicAuthClientAuthenticator} \
-  Authenticating client : &lt;CLIENT_ID&gt;with client secret. </b>TID: [-1234] [] \
[2019-01-18 02:51:54,139] DEBUG {org.wso2.carbon.identity.oauth2.util.OAuth2Util} -  \
Client credentials were fetched from the database. <b>TID: [-1234] [] [2019-01-18 \
02:51:54,139] DEBUG {org.wso2.carbon.identity.oauth2.util.OAuth2Util} -  Successfully \
authenticated the client with client id : &lt;CLIENT_ID&gt; </b>TID: [-1234] [] \
[2019-01-18 02:51:54,139] DEBUG {org.wso2.carbon.identity.oauth2.util.OAuth2Util} -  \
                Client credentials were added to the cache for client id : \
                &lt;CLIENT_ID&gt;
TID: [-1234] [] [2019-01-18 02:51:54,139] DEBUG \
{org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} -  \
Authentication result from OAuth client authenticator \
                BasicOAuthClientCredAuthenticator is : true
TID: [-1234] [] [2019-01-18 02:51:54,139] DEBUG \
{org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} -  \
                Evaluating canAuthenticate of authenticator : \
                PublicClientAuthenticator
TID: [-1234] [] [2019-01-18 02:51:54,160] DEBUG \
{org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} -  \
                PublicClientAuthenticator authenticator can handle incoming request.
TID: [-1234] [] [2019-01-18 02:51:54,160] DEBUG \
{org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} -  \
Previously an authenticator is evaluated. Hence authenticator \
                PublicClientAuthenticator is not evaluating
TID: [-1234] [] [2019-01-18 02:51:54,160] DEBUG \
{org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} -  \
Authenticator PublicClientAuthenticator can authenticate the client request.  Hence \
trying to evaluate authentication <b>TID: [-1234] [] [2019-01-18 02:51:54,161] DEBUG \
{org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} -  2 \
                Authenticators were executed previously. Hence failing client \
                authentication
TID: [-1234] [] [2019-01-18 02:51:54,161] DEBUG \
{org.wso2.carbon.identity.oauth2.client.authentication.OAuthClientAuthnService} -  \
Setting error to client authentication context : Error code : invalid_request, Error \
message : The client MUST NOT use more than one authentication method in each \
</b>TID: [-1234] [] [2019-01-18 02:51:54,184] DEBUG \
{org.wso2.carbon.identity.oauth2.OAuth2Service} -  Access Token request received for \
Client ID &lt;CLIENT_ID&gt;, User ID null, Scope : [accounts] and Grant Type : \
                client_credentials
TID: [-1234] [] [2019-01-18 02:51:54,192]  INFO \
{org.wso2.carbon.identity.oauth.config.OAuthServerConfiguration} -  The default OAuth \
                token issuer will be used. No custom token generator is set.
TID: [-1234] [] [2019-01-18 02:51:54,192]  INFO \
{org.wso2.carbon.identity.oauth.config.OAuthServerConfiguration} -  The default \
                Identity OAuth token issuer will be used. No custom token generator \
                is set.
TID: [-1234] [] [2019-01-18 02:51:54,315] DEBUG \
{org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer} -  Successfully created \
                AppInfoCache under OAuthCacheManager
TID: [-1234] [] [2019-01-18 02:51:54,316] DEBUG \
{org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer} -  Triggering access token \
                pre issuer listeners for client: &lt;CLIENT_ID&gt;
TID: [-1234] [] [2019-01-18 02:51:54,316] DEBUG \
{org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer} -  \
OAuth-Error-Code=invalid_request \
                client-id=&lt;CLIENT_ID&gt;grant-type=client_credentials \
                scope=accounts
TID: [-1234] [] [2019-01-18 02:51:54,316] DEBUG \
{org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer} -  Triggering access token \
post issuer listeners for client: </span></font></font><font color="#000000" \
size="1"><span style="white-space:pre-wrap">&lt;CLIENT_ID&gt;</span></font></pre></div></div></blockquote><div><div>How \
can I mitigate this behavior? Disable some of the authenticators? set \
priority?</div><div>Please give your input,  </div><div><br></div><div>Thanks In \
advance,  </div><div>Kaveen Rodrigo</div><div><br></div>-- <br><div dir="ltr"><div \
dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><b>Kaveen Rodrigo  </b><div><font \
color="#666666">Software Engineer | WS02  </font></div><div><font \
color="#666666"><br></font></div><div><font color="#666666">Email :  <a \
href="mailto:kaveen@wso2.com" \
target="_blank">kaveen@wso2.com</a></font></div><div><font color="#666666">Mobile :  \
<a href="tel:+94779684749" target="_blank">+94779684749</a></font></div><div><font \
color="#666666">Web :  <a href="http://www.wso2.com" \
target="_blank">http://www.wso2.com</a></font></div><div><a \
href="http://goog_953536661" target="_blank"><br></a></div><div><a \
href="http://wso2.com/signature" target="_blank"><img \
alt="http://wso2.com/signature"></a><span></span><a href="http:///" \
target="_blank"></a><span></span><br></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
 </blockquote></div><br><br>-- <br><div dir="ltr"><div><div dir="ltr"><div><div \
dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr" \
style="color:rgb(136,136,136);font-size:12.8px"><div><div><div>Farasath \
Ahamed<br></div>Senior Software Engineer,  <span style="font-size:12.8px">WSO2 Inc.;  \
</span><a href="http://wso2.com/" style="font-size:12.8px;color:rgb(17,85,204)" \
target="_blank">http://wso2.com</a></div><div><span style="font-size:12.8px">Mobile:  \
</span><a href="tel:%2B94777603866" value="+94713149860" \
style="font-size:12.8px;color:rgb(17,85,204)" \
target="_blank">+94777603866</a><br></div></div><div>Blog:  <a \
href="http://blog.farazath.com" \
target="_blank">blog.farazath.com</a></div></div><div><span \
style="color:rgb(136,136,136);font-size:12.8px">Twitter: <a \
href="https://twitter.com/farazath619" \
target="_blank">@farazath619</a></span></div><div><a href="http://wso2.com/signature" \
target="_blank"><img \
src="http://c.content.wso2.com/signatures/wso2-signature-general.png" \
style="font-size: 12.8px;"></a><br></div><div><br><br></div></div></div></div></div></div></div><a \
href="http:///" target="_blank"></a><span></span><span></span><br></div></div></div><br>
 </blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" \
class="gmail-m_-3167199913576772141gmail-m_5075260077733170835gmail_signature"><div \
dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><b>Kaveen Rodrigo  </b><div><font \
color="#666666">Software Engineer | WS02  </font></div><div><font \
color="#666666"><br></font></div><div><font color="#666666">Email :  <a \
href="mailto:kaveen@wso2.com" \
target="_blank">kaveen@wso2.com</a></font></div><div><font color="#666666">Mobile :  \
<a href="tel:+94779684749" target="_blank">+94779684749</a></font></div><div><font \
color="#666666">Web :  <a href="http://www.wso2.com" \
target="_blank">http://www.wso2.com</a></font></div><div><a \
href="http://goog_953536661" target="_blank"><br></a></div><div><a \
href="http://wso2.com/signature" target="_blank"><img \
src="https://c.content.wso2.com/signatures/wso2-signature-general.png" \
alt="http://wso2.com/signature"></a><span></span><a href="http:///" \
target="_blank"></a><span></span><br></div></div></div></div></div></div></div> \
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" \
class="gmail-m_-3167199913576772141gmail_signature"><div dir="ltr"><div><div \
dir="ltr"><div>Hasintha Indrajee</div><div>WSO2, Inc.</div><div>Mobile:+94 \
771892453</div><div><br></div></div></div></div></div> </blockquote></div><br \
clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div \
dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><b>Kaveen Rodrigo  </b><div><font \
color="#666666">Software Engineer | WS02  </font></div><div><font \
color="#666666"><br></font></div><div><font color="#666666">Email :  <a \
href="mailto:kaveen@wso2.com" \
target="_blank">kaveen@wso2.com</a></font></div><div><font color="#666666">Mobile :  \
<a href="tel:+94779684749" target="_blank">+94779684749</a></font></div><div><font \
color="#666666">Web :  <a href="http://www.wso2.com" \
target="_blank">http://www.wso2.com</a></font></div><div><a \
href="http://goog_953536661" target="_blank"><br></a></div><div><a \
href="http://wso2.com/signature" target="_blank"><img \
src="https://c.content.wso2.com/signatures/wso2-signature-general.png" \
alt="http://wso2.com/signature"></a><span></span><a href="http:///" \
target="_blank"></a><span></span><br></div></div></div></div></div></div></div>



_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic