[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'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 <<a \
href="mailto:hasintha@wso2.com">hasintha@wso2.com</a>> 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 <<a href="mailto:kaveen@wso2.com" target="_blank">kaveen@wso2.com</a>> \
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>" Allow authentication \
without the client secret"</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'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 <<a href="mailto:farasatha@wso2.com" \
target="_blank">farasatha@wso2.com</a>> 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 <<a \
href="mailto:kaveen@wso2.com" target="_blank">kaveen@wso2.com</a>> \
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'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>"</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" </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 "grant_type=client_credentials&scope=accounts&client_id=<CLIENT_ID>&client_secret=<CLIENT_SECRET>" \
</pre><pre style="white-space:pre-wrap"> \ -H "Content-Type: \
application/x-www-form-urlencoded" </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'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 : <CLIENT_ID>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 : <CLIENT_ID> </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 : \
<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 <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 <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: </span></font></font><font color="#000000" \
size="1"><span style="white-space:pre-wrap"><CLIENT_ID></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