From sachinmamoru@gmail.com  Wed Feb 21 02:59:52 2024
Return-Path: <sachinmamoru@gmail.com>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1])
 by ietfa.amsl.com (Postfix) with ESMTP id DC859C14F684
 for <oauth@ietfa.amsl.com>; Wed, 21 Feb 2024 02:59:52 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.085
X-Spam-Level: 
X-Spam-Status: No, score=-2.085 tagged_above=-999 required=5
 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1,
 DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,
 HTML_MESSAGE=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001,
 SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01,
 T_REMOTE_IMAGE=0.01, T_SCC_BODY_TEXT_LINE=-0.01,
 URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001]
 autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key)
 header.d=gmail.com
Received: from mail.ietf.org ([50.223.129.194])
 by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id yCNOfTp04xwi for <oauth@ietfa.amsl.com>;
 Wed, 21 Feb 2024 02:59:48 -0800 (PST)
Received: from mail-yb1-xb36.google.com (mail-yb1-xb36.google.com
 [IPv6:2607:f8b0:4864:20::b36])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by ietfa.amsl.com (Postfix) with ESMTPS id D47DCC14F5FC
 for <oauth@ietf.org>; Wed, 21 Feb 2024 02:59:47 -0800 (PST)
Received: by mail-yb1-xb36.google.com with SMTP id
 3f1490d57ef6-dcdb210cb6aso7198152276.2
 for <oauth@ietf.org>; Wed, 21 Feb 2024 02:59:47 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1708513187; x=1709117987; darn=ietf.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=DEijrraeWg0fUKaYK+cTBAtpNkXIDgfGNhT3IDmQNpw=;
 b=Q6YozLSQFjTCcKeJZkJ+MPwWTFg5SNpZVB8peLeEey+CUUiFIIhxhtuFVq/GIeGcuE
 7RYU6gZvD9OM1tfpv+BBWjequ59QxwHgSGjv5pFdz8b7YAU7rAooEWHghhvsgybKEnBn
 BljMpA/+jXqexeMqxFSZOXGyPuua5xR/MpnhpZByikKvb1So2nRnu1HToybhanxpL1D4
 z7GA1NDGVZ+j5iDzCdN5j9Bg+o22eJj42dTcdnDjVXm5E3lhgFMx6AQMnQPX2ZBjpQeU
 Hh6+rSxXKa2FTWurL2yJVIlf2Xh2SyfZKZtY2luBHZy0Adwyo8Rky+/OX95jqgvnGy4S
 FM3Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1708513187; x=1709117987;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=DEijrraeWg0fUKaYK+cTBAtpNkXIDgfGNhT3IDmQNpw=;
 b=SEIfqBpM9seXNC/9xagON7HaBxNclpvz6qISZfn3/w05Jh6rEXoT00RG8/NEw8+PpT
 CE0krKQNLjGPZCeLn8qjgFz2vmo6fPQ4ngPTrIEk/yzecL8fn81JJVs9T0nv/wj9sTHW
 QFtO2PqLvIdUd4vHxGVLl2QFz+RaoBXEkt8bijVzv6kmb3ctFjZl0VzbOXYoZH+TgscC
 Fg0p6uGRdmO89WLOIaF7EMJq5M1MZO0d+OeUwHiG9K5nmUaRPaMoD97hevQ4u7wlTg8+
 MPX3pnszh59V41ock8HK640aILjbDfyELRCP2iY1ggmuLV7sIABb20F/WduH+9FyAwQB
 cHaw==
X-Forwarded-Encrypted: i=1;
 AJvYcCXQgIWQsYfYfsnlJSM2ERUxBPk5aZBy+zPDI6Z1Qe4FJKLZ6JXXqw0kigURpHjeYwOVH3+CzFwLkNxmORI3Tg==
X-Gm-Message-State: AOJu0Yzlav4bAItHv9fYJKjyQOu9SN20AHXs+EM0sKLWjFDD8vy5DNHR
 nX2PpsdkXs+g5YLtn5YD1wU3R2A3P6VVuWwp0/wl5IGS+Zy9yOcTcb6oJt2VbFZZ+r2WWiIoEqz
 gOW7DXLJ051Xz9sH5zcLbSEWs2iM=
X-Google-Smtp-Source: AGHT+IF1BkYaR/Ca11IUhuUXX+Ior8k0tjLkeD+vqLwYOwZ+e62bGQAkSMX6Df0+hm6mD5I3F+Ma48PblV0rT2zzBvo=
X-Received: by 2002:a25:8a07:0:b0:dc2:466a:23bd with SMTP id
 g7-20020a258a07000000b00dc2466a23bdmr14801710ybl.54.1708513186761; Wed, 21
 Feb 2024 02:59:46 -0800 (PST)
MIME-Version: 1.0
References: <CAD=XBCog_o8GzpDMTYKvvi=2mneM0nW0vfCc=FubtOFNF5WM=A@mail.gmail.com>
 <374ADB2C-2F74-4B95-8CDA-3266089CD00C@gmail.com>
 <CAD=XBCqs-Qf7P--KvqQcJq37Agh3gn-bfwfj7tZvwdngx+4k+A@mail.gmail.com>
 <13C59DD4-94E0-47AC-9A7E-D7B463BD1552@gmail.com>
 <CAD=XBCpgLZObed8Kj2ST6engpFR47psFrrbNKw5rwaN=_E25qA@mail.gmail.com>
 <CAD=XBCrkFr3L2AyXtKRPSAmHg9khQctENZ-2+oR1af7JBbcJ-g@mail.gmail.com>
 <11F9493F-CE30-450F-BDC9-3C8DCAC35B28@gmail.com>
 <CAD=XBCq8Q2a9yxEbotJ2wepjy+BzeoN0=f8x_RpBV1LgtBX58A@mail.gmail.com>
 <CAJot-L3+umKapjdBgnonWB1kgTK3dEokG0pNLYnpF_pVUB_U3w@mail.gmail.com>
In-Reply-To: <CAJot-L3+umKapjdBgnonWB1kgTK3dEokG0pNLYnpF_pVUB_U3w@mail.gmail.com>
From: Sachin Mamoru <sachinmamoru@gmail.com>
Date: Wed, 21 Feb 2024 16:29:35 +0530
Message-ID: <CAD=XBCoZw6sXLNg6tXbGYjEungvRvSudM6o3YgUkNNoP7JuM0w@mail.gmail.com>
To: Warren Parad <wparad@rhosys.ch>
Cc: Neil Madden <neil.e.madden@gmail.com>, oauth <oauth@ietf.org>,
 janak@wso2.com, 
 thilinasenarath97@gmail.com, "piraveena@wso2.com" <piraveena@wso2.com>
Content-Type: multipart/alternative; boundary="0000000000009750d60611e2390e"
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/rAiRhHMyYGLFMRlgb7HyqAJfn7o>
Subject: Re: [OAUTH-WG] Evaluation of Scope Management in Refresh Token
 Behavior
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>,
 <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth/>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>,
 <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 21 Feb 2024 10:59:53 -0000

--0000000000009750d60611e2390e
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Warren,

Agree with you on the complexity of our scenario. This is one of the parts
of a complex issue we are discussing internally. So according to section 6
of the specification, we can conclude that "the refresh token scope MUST be
identical to that of the refresh token included by the client in the
request".
Thank you, everyone, for the input you have provided regarding the issue.

On Wed, 21 Feb 2024 at 15:46, Warren Parad <wparad@rhosys.ch> wrote:

> Sachin,
>
> Can I ask what your goal is here, as in what would you like out of this
> conversation, what concrete if anything would like this working group to
> action? It seems that you have had a question, which has been answered
> multiple times (in multiple different email threads, I might add). The
> language in the RFC is pretty clear, although, in practice I can see that
> the usage might be a bit complex.
>
> - Warren
>
> On Wed, Feb 21, 2024 at 10:37=E2=80=AFAM Sachin Mamoru <sachinmamoru@gmai=
l.com>
> wrote:
>
>> Hi Neil,
>>
>> Since Access tokens are bound to scopes. These scopes define the
>> permissions granted for accessing resources. When an access token is
>> requested, it's issued with specific scopes based on the authorization
>> granted by the resource owner.
>>
>> On the other hand, Refresh tokens are used to obtain new access tokens
>> when the current access token expires or becomes invalid. The critical
>> aspect here is that the refresh token itself is not bound by scopes in t=
he
>> same way access tokens are. Instead, the refresh token carries the
>> potential to issue new access tokens with scopes that are the same as or
>> narrower than the original scopes granted during the initial authorizati=
on
>> process.
>>
>> When you use a refresh token to obtain a new access token, you have the
>> option to request a scope that is narrower than the original scope.
>>
>> This is quite contradicting to me as the spec says that "refresh token
>> scopes should be identical to that of the refresh token included by the
>> client in the request". - When a refresh token is used to obtain a new
>> access token, and a new refresh token is also issued in this process, th=
e
>> new refresh token must have the same scope as the refresh token that was
>> used in the request.
>> On the other hand, it says "Refresh tokens are issued to the client by
>> the authorization server and are used to obtain a new access token when =
the
>> current access token becomes invalid or expires, or to obtain additional
>> access tokens with identical or narrower scope". - There's a flexibility=
 in
>> scope when using a refresh token to request new access tokens, but this
>> flexibility might seem counterintuitive at first. Specifically, the idea
>> that the scope of the new access token can be adjusted (narrowed) withou=
t
>> altering the permissions granted by the refresh token itself.
>>
>> Thanks & Regards,
>> Sachin
>>
>> On Wed, 21 Feb 2024 at 13:57, Neil Madden <neil.e.madden@gmail.com>
>> wrote:
>>
>>> That section quite clearly says "*access tokens* with identical or
>>> narrower scope". Not refresh tokens.
>>>
>>> -- Neil
>>>
>>> On 21 Feb 2024, at 08:24, Sachin Mamoru <sachinmamoru@gmail.com> wrote:
>>>
>>> Hi Warren and Neil,
>>>
>>> My basis for asking this is due to the following definition [1],
>>>
>>> Refresh tokens are credentials used to obtain access tokens.  Refresh
>>>    tokens are issued to the client by the authorization server and are
>>>    used to obtain a new access token when the current access token
>>>    becomes invalid or expires, or to obtain additional access tokens
>>>    with identical or narrower scope (access tokens may have a shorter
>>>    lifetime and fewer permissions than authorized by the resource
>>>    owner).  Issuing a refresh token is optional at the discretion of th=
e
>>>    authorization server.  If the authorization server issues a refresh
>>>    token, it is included when issuing an access token (i.e., step (D) i=
n
>>>    Figure 1).
>>>
>>> [1] https://datatracker.ietf.org/doc/html/rfc6749#section-1.5
>>>
>>> Thanks & Regards,
>>> Sachin
>>>
>>> On Wed, 21 Feb 2024 at 13:36, Sachin Mamoru <sachinmamoru@gmail.com>
>>> wrote:
>>>
>>>> Hi Warren and Neil,
>>>>
>>>> Thanks for the valuable input and sorry for mentioning other products,
>>>> I just wanted to provide an example.
>>>> So Warren according to you following is the behaviour that spec
>>>> suggested.
>>>>
>>>> When we request an access token using 3 scopes (scope1, scope2, scope3=
).
>>>>
>>>> Then will receive a refresh token (refresh_token1) with the access
>>>> token.
>>>>
>>>> After that will request another access token with refresh_token1 and
>>>> provide the scope list as scope1 and scope2 (Narrow down scopes).
>>>>
>>>> Similarly, get another refresh token (refresh_token2) with the access
>>>> token.
>>>>
>>>> Now if we request another access token with refresh_token2, we should
>>>> be able to request scope3 also.
>>>> That means the refresh token will not be narrowed down instead only th=
e
>>>> access token will get narrowed down.
>>>>
>>>> So Warren and Neil, if possible can you pinpoint to me the exact place
>>>> in the spec where it does explicitly say that the refresh token should=
 not
>>>> be narrowed down based on the given scopes?
>>>>
>>>> Thanks & Regards,
>>>> Sachin
>>>>
>>>> On Wed, 21 Feb 2024 at 01:12, Neil Madden <neil.e.madden@gmail.com>
>>>> wrote:
>>>>
>>>>> It sounds like they are violating the spec then. On the other hand,
>>>>> the fact that the scope can be "increased back to the original scope"=
 maybe
>>>>> suggests the effective scope of the refresh token is still the same? =
Either
>>>>> way, the spec is pretty clear, regardless of what some vendor does.
>>>>>
>>>>> -- Neil
>>>>>
>>>>> On 20 Feb 2024, at 19:26, Sachin Mamoru <sachinmamoru@gmail.com>
>>>>> wrote:
>>>>>
>>>>> Hi Neil,
>>>>>
>>>>> Thanks for the clarification.
>>>>> But Curity has a different approach and they implemented it according
>>>>> to the concept of narrowing down the refresh token scopes.
>>>>>
>>>>> "The scope was originally read openid profile and after refresh the
>>>>> access was reduced to read profile (i.e., the access_token now only
>>>>> has read profile scope and any new tokens obtained using the refresh
>>>>> token daa38700-ba96-4ef1-8b30-5cb3527aae19 will have the same,
>>>>> reduced scope). Note that *increasing* the scope of access cannot be
>>>>> done in this way unless first reduced and increased back to the origi=
nal
>>>>> scope."
>>>>>
>>>>> [1]
>>>>> https://curity.io/resources/learn/refresh-tokens/#changing-scope-of-a=
ccess-token-on-refresh
>>>>>
>>>>> Thanks & Regards,
>>>>> Sachin
>>>>>
>>>>> On Tue, 20 Feb 2024 at 21:59, Neil Madden <neil.e.madden@gmail.com>
>>>>> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On 20 Feb 2024, at 11:02, Sachin Mamoru <sachinmamoru@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>> =EF=BB=BF
>>>>>> Hi Neil,
>>>>>>
>>>>>> Does that mean it should be identical to the narrowed scope request
>>>>>> or the original request scope?
>>>>>>
>>>>>>
>>>>>> It says it has to be identical to the scope of the existing refresh
>>>>>> token in the request, not the scope specified in the request. So
>>>>>> effectively you can never downscope a refresh token in this way. Wha=
tever
>>>>>> scope you specify, any RT returned must always retain the original s=
cope.
>>>>>>
>>>>>> (There are other ways to downscope a RT, eg ForgeRock=E2=80=99s maca=
roons
>>>>>> allow you to attenuate the scope if you wish).
>>>>>>
>>>>>> =E2=80=94 Neil
>>>>>>
>>>>>>
>>>>>> On Tue, 20 Feb 2024 at 16:31, Sachin Mamoru <sachinmamoru@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Tue, 20 Feb 2024 at 12:23, Neil Madden <neil.e.madden@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>> On 20 Feb 2024, at 06:44, Sachin Mamoru <sachinmamoru@gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>> =EF=BB=BF
>>>>>>>> Hi All,
>>>>>>>>
>>>>>>>> When we request an access token using 3 scopes (scope1, scope2,
>>>>>>>> scope3).
>>>>>>>> Then will receive a refresh token (refresh_token1) with the access
>>>>>>>> token.
>>>>>>>>
>>>>>>>> After that will request another access token with refresh_token1
>>>>>>>> and provide the scope list as scope1 and scope2 (Narrow down scope=
s).
>>>>>>>> Similarly, get another refresh token (refresh_token2) with the
>>>>>>>> access token.
>>>>>>>>
>>>>>>>> Now if we request another access token with refresh_token2, we
>>>>>>>> cannot request scope3, instead, we can either request both scope1 =
and
>>>>>>>> scope2 or one of them.
>>>>>>>>
>>>>>>>> But in the specification, didn't able to find anything related to
>>>>>>>> narrow-down scopes with refresh token.
>>>>>>>>
>>>>>>>> From Spec
>>>>>>>>
>>>>>>>> 1.5.  Refresh Token - Refresh tokens are issued to the client by
>>>>>>>> the authorization server and are used to obtain a new access token
>>>>>>>> when the current access token becomes invalid or expires or to
>>>>>>>> obtain additional access tokens with identical or narrower scope
>>>>>>>> (access tokens may have a shorter lifetime and fewer permissions
>>>>>>>> than authorized by the resource owner).
>>>>>>>>
>>>>>>>> 6.  Refreshing an Access Token
>>>>>>>> The scope of the access request as described by Section 3.3.  The
>>>>>>>> requested scope MUST NOT include any scope not originally granted
>>>>>>>> by the resource owner, and if omitted is treated as equal to the
>>>>>>>> scope originally granted by the resource owner.
>>>>>>>>
>>>>>>>> https://datatracker.ietf.org/doc/html/rfc6749
>>>>>>>>
>>>>>>>> IMO, from a security aspect, the current behaviour is much more
>>>>>>>> secure because it is designed to maintain the principle of least p=
rivilege,
>>>>>>>> where it updates the refresh token authorised scopes based on the =
requested
>>>>>>>> ones.
>>>>>>>>
>>>>>>>> What should be the correct behaviour?
>>>>>>>> narrow-down scope refresh token should also be able to request
>>>>>>>> access token with original scope list?
>>>>>>>>
>>>>>>>>
>>>>>>>> Also from section 6:
>>>>>>>>
>>>>>>>> If a
>>>>>>>>    new refresh token is issued, the refresh token scope MUST be
>>>>>>>>    identical to that of the refresh token included by the client i=
n the
>>>>>>>>    request.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> =E2=80=94 Neil
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>> Sachin Mamoru
>>>>>>> Software Engineer, WSO2
>>>>>>> +94771292681
>>>>>>> | sachinmamoru.me  <https://sachinmamoru.me/>
>>>>>>> sachinmamoru@gmail.com  <sachinmamoru@gmail.com>
>>>>>>> <https://www.linkedin.com/in/sachin-mamoru/>
>>>>>>> <https://twitter.com/MamoruSachin>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>>> Sachin Mamoru
>>>>>> Software Engineer, WSO2
>>>>>> +94771292681
>>>>>> | sachinmamoru.me  <https://sachinmamoru.me/>
>>>>>> sachinmamoru@gmail.com  <sachinmamoru@gmail.com>
>>>>>> <https://www.linkedin.com/in/sachin-mamoru/>
>>>>>> <https://twitter.com/MamoruSachin>
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> Sachin Mamoru
>>>>> Software Engineer, WSO2
>>>>> +94771292681
>>>>> | sachinmamoru.me  <https://sachinmamoru.me/>
>>>>> sachinmamoru@gmail.com  <sachinmamoru@gmail.com>
>>>>> <https://www.linkedin.com/in/sachin-mamoru/>
>>>>> <https://twitter.com/MamoruSachin>
>>>>>
>>>>>
>>>>>
>>>>
>>>> --
>>>>
>>>> Sachin Mamoru
>>>> Software Engineer, WSO2
>>>> +94771292681
>>>> | sachinmamoru.me  <https://sachinmamoru.me/>
>>>> sachinmamoru@gmail.com  <sachinmamoru@gmail.com>
>>>> <https://www.linkedin.com/in/sachin-mamoru/>
>>>> <https://twitter.com/MamoruSachin>
>>>>
>>>>
>>>
>>> --
>>>
>>> Sachin Mamoru
>>> Software Engineer, WSO2
>>> +94771292681
>>> | sachinmamoru.me  <https://sachinmamoru.me/>
>>> sachinmamoru@gmail.com  <sachinmamoru@gmail.com>
>>> <https://www.linkedin.com/in/sachin-mamoru/>
>>> <https://twitter.com/MamoruSachin>
>>>
>>>
>>>
>>
>> --
>>
>> Sachin Mamoru
>> Software Engineer, WSO2
>> +94771292681
>> | sachinmamoru.me  <https://sachinmamoru.me>
>> sachinmamoru@gmail.com  <sachinmamoru@gmail.com>
>> <https://www.linkedin.com/in/sachin-mamoru/>
>> <https://twitter.com/MamoruSachin>
>>
>>

--=20

Sachin Mamoru
Software Engineer, WSO2
+94771292681
| sachinmamoru.me  <https://sachinmamoru.me>
sachinmamoru@gmail.com  <sachinmamoru@gmail.com>
<https://www.linkedin.com/in/sachin-mamoru/>
<https://twitter.com/MamoruSachin>

--0000000000009750d60611e2390e
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi Warren,<div><br></div><div>Agree with you on the comple=
xity of our scenario. This is one of the parts of a complex issue we are di=
scussing internally. So according to section 6 of the specification, we can=
 conclude that &quot;the refresh token scope MUST be identical to that of t=
he refresh token included by the client in the request&quot;.</div><div>Tha=
nk=C2=A0you, everyone, for the input you have provided regarding the issue.=
</div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_=
attr">On Wed, 21 Feb 2024 at 15:46, Warren Parad &lt;<a href=3D"mailto:wpar=
ad@rhosys.ch">wparad@rhosys.ch</a>&gt; wrote:<br></div><blockquote class=3D=
"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2=
04,204,204);padding-left:1ex"><div dir=3D"ltr">Sachin,<div><br></div><div>C=
an I ask what your goal is here, as in what would you like out of this conv=
ersation,=C2=A0what concrete=C2=A0if anything would like this working group=
 to action? It seems that you have had a question, which has been answered =
multiple times (in multiple different email threads, I might add). The lang=
uage in the RFC is pretty clear, although, in practice I can see that the=
=C2=A0usage might be a bit complex.</div><div><br></div><div>- Warren</div>=
</div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">=
On Wed, Feb 21, 2024 at 10:37=E2=80=AFAM Sachin Mamoru &lt;<a href=3D"mailt=
o:sachinmamoru@gmail.com" target=3D"_blank">sachinmamoru@gmail.com</a>&gt; =
wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0=
px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=
=3D"ltr">Hi=C2=A0Neil,<div><br></div><div>Since Access tokens are bound to =
scopes. These scopes define the permissions granted for accessing resources=
. When an access token is requested, it&#39;s issued with specific scopes b=
ased on the authorization granted by the resource owner.<br><br>On the othe=
r hand, Refresh tokens are used to obtain new access tokens when the curren=
t access token expires or becomes invalid. The critical aspect here is that=
 the refresh token itself is not bound by scopes in the same way access tok=
ens are. Instead, the refresh token carries the potential to issue new acce=
ss tokens with scopes that are the same as or narrower than the original sc=
opes granted during the initial authorization process.<br><br>When you use =
a refresh token to obtain a new access token, you have the option to reques=
t a scope that is narrower than the original scope. <br></div><div><br></di=
v><div>This is quite contradicting=C2=A0to me as the spec says that=C2=A0&q=
uot;refresh token scopes should be identical=C2=A0to that of the refresh to=
ken included by the client in the request&quot;. -=C2=A0When a refresh toke=
n is used to obtain a new access token, and a new refresh token is also iss=
ued in this process, the new refresh token must have the same scope as the =
refresh token that was used in the request.</div><div>On the other hand, it=
 says &quot;Refresh tokens are issued to the client by the authorization se=
rver and are used to obtain a new access token when the current access toke=
n becomes invalid or expires, or to obtain additional access tokens with id=
entical or narrower scope&quot;. -=C2=A0There&#39;s a flexibility in scope =
when using a refresh token to request new access tokens, but this flexibili=
ty might seem counterintuitive at first. Specifically, the idea that the sc=
ope of the new access token can be adjusted (narrowed) without altering the=
 permissions granted by the refresh token itself.</div><div><br></div><div>=
Thanks &amp; Regards,</div><div>Sachin</div></div><br><div class=3D"gmail_q=
uote"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, 21 Feb 2024 at 13:57, N=
eil Madden &lt;<a href=3D"mailto:neil.e.madden@gmail.com" target=3D"_blank"=
>neil.e.madden@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail=
_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex"><div><div>That section quite clearly says &quot;*ac=
cess tokens* with identical or narrower scope&quot;. Not refresh tokens.</d=
iv><div><br></div><div>-- Neil</div><div><br><blockquote type=3D"cite"><div=
>On 21 Feb 2024, at 08:24, Sachin Mamoru &lt;<a href=3D"mailto:sachinmamoru=
@gmail.com" target=3D"_blank">sachinmamoru@gmail.com</a>&gt; wrote:</div><b=
r><div><div dir=3D"ltr"><div>Hi Warren and Neil,<br></div><div><br></div><d=
iv>My basis for asking this is due to the following definition [1],</div><d=
iv><br></div>Refresh tokens are credentials used to obtain access tokens.=
=C2=A0 Refresh<br>=C2=A0 =C2=A0tokens are issued to the client by the autho=
rization server and are<br>=C2=A0 =C2=A0used to obtain a new access token w=
hen the current access token<br>=C2=A0 =C2=A0becomes invalid or expires, or=
 to obtain additional access tokens<br>=C2=A0 =C2=A0with identical or <font=
 color=3D"#ff0000">narrower scope </font>(access tokens may have a shorter<=
br>=C2=A0 =C2=A0lifetime and fewer permissions than authorized by the resou=
rce<br>=C2=A0 =C2=A0owner).=C2=A0 Issuing a refresh token is optional at th=
e discretion of the<br>=C2=A0 =C2=A0authorization server.=C2=A0 If the auth=
orization server issues a refresh<br>=C2=A0 =C2=A0token, it is included whe=
n issuing an access token (i.e., step (D) in<br>=C2=A0 =C2=A0Figure 1).<br>=
<div><br></div><div>[1]=C2=A0<a href=3D"https://datatracker.ietf.org/doc/ht=
ml/rfc6749#section-1.5" target=3D"_blank">https://datatracker.ietf.org/doc/=
html/rfc6749#section-1.5</a></div><div><br></div><div>Thanks &amp; Regards,=
</div><div>Sachin</div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr=
" class=3D"gmail_attr">On Wed, 21 Feb 2024 at 13:36, Sachin Mamoru &lt;<a h=
ref=3D"mailto:sachinmamoru@gmail.com" target=3D"_blank">sachinmamoru@gmail.=
com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"marg=
in:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1e=
x"><div dir=3D"ltr">Hi=C2=A0Warren and Neil,<div><br></div><div>Thanks for =
the valuable input and sorry for mentioning=C2=A0other products, I just wan=
ted to provide an example.=C2=A0</div><div>So Warren according to you follo=
wing is the behaviour that spec suggested.</div><div><font face=3D"arial, s=
ans-serif"><br></font></div><div><span id=3D"m_4377998898076473289m_1617310=
871708240819m_-3937525291925636120m_-8799194716268198968gmail-docs-internal=
-guid-4f39e0eb-7fff-d42a-f780-95f6f69ccd92"><div dir=3D"ltr" style=3D"margi=
n-left:0pt" align=3D"left"><table style=3D"border:none;border-collapse:coll=
apse;table-layout:fixed;width:468pt"><colgroup><col></colgroup><tbody><tr s=
tyle=3D"height:0pt"><td style=3D"border-width:1pt;border-style:solid;border=
-color:rgb(0,0,0);vertical-align:top;padding:5pt;overflow:hidden"><div styl=
e=3D"line-height:1.2;margin-top:0pt;margin-bottom:0pt"><span style=3D"backg=
round-color:transparent;font-variant-numeric:normal;font-variant-east-asian=
:normal;font-variant-alternates:normal;vertical-align:baseline"><font face=
=3D"arial, sans-serif">When we request an access token using 3 scopes (scop=
e1, scope2, scope3).</font></span></div><font face=3D"arial, sans-serif"><b=
r></font><div style=3D"line-height:1.2;margin-top:0pt;margin-bottom:0pt"><s=
pan style=3D"background-color:transparent;font-variant-numeric:normal;font-=
variant-east-asian:normal;font-variant-alternates:normal;vertical-align:bas=
eline"><font face=3D"arial, sans-serif">Then will receive a refresh token (=
refresh_token1) with the access token.</font></span></div><font face=3D"ari=
al, sans-serif"><br></font><div style=3D"line-height:1.2;margin-top:0pt;mar=
gin-bottom:0pt"><span style=3D"background-color:transparent;font-variant-nu=
meric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;=
vertical-align:baseline"><font face=3D"arial, sans-serif">After that will r=
equest another access token with refresh_token1 and provide the scope list =
as scope1 and scope2 (Narrow down scopes).</font></span></div><font face=3D=
"arial, sans-serif"><br></font><div style=3D"line-height:1.2;margin-top:0pt=
;margin-bottom:0pt"><span style=3D"background-color:transparent;font-varian=
t-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:nor=
mal;vertical-align:baseline"><font face=3D"arial, sans-serif">Similarly, ge=
t another refresh token (refresh_token2) with the access token.</font></spa=
n></div><font face=3D"arial, sans-serif"><br></font><div style=3D"line-heig=
ht:1.2;margin-top:0pt;margin-bottom:0pt"><span style=3D"background-color:tr=
ansparent;font-variant-numeric:normal;font-variant-east-asian:normal;font-v=
ariant-alternates:normal;vertical-align:baseline"><font face=3D"arial, sans=
-serif">Now if we request another access token with refresh_token2, we shou=
ld be able to request scope3 also.</font></span></div><div style=3D"line-he=
ight:1.2;margin-top:0pt;margin-bottom:0pt"><span style=3D"background-color:=
transparent;font-variant-numeric:normal;font-variant-east-asian:normal;font=
-variant-alternates:normal;vertical-align:baseline"><font face=3D"arial, sa=
ns-serif">That means the refresh token will not be narrowed down instead on=
ly the access token will get narrowed down.</font></span></div></td></tr></=
tbody></table></div><br></span></div><div>So Warren and Neil, if possible c=
an you pinpoint to me the exact place in the spec where it does explicitly =
say that the refresh token should not be narrowed down based on the given s=
copes?</div><div><br></div><div>Thanks &amp; Regards,</div><div>Sachin</div=
></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr"=
>On Wed, 21 Feb 2024 at 01:12, Neil Madden &lt;<a href=3D"mailto:neil.e.mad=
den@gmail.com" target=3D"_blank">neil.e.madden@gmail.com</a>&gt; wrote:<br>=
</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;b=
order-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div>It sounds=
 like they are violating the spec then. On the other hand, the fact that th=
e scope can be &quot;increased back to the original scope&quot; maybe sugge=
sts the effective scope of the refresh token is still the same? Either way,=
 the spec is pretty clear, regardless of what some vendor does.</div><div><=
br></div><div>-- Neil<br><div><br><blockquote type=3D"cite"><div>On 20 Feb =
2024, at 19:26, Sachin Mamoru &lt;<a href=3D"mailto:sachinmamoru@gmail.com"=
 target=3D"_blank">sachinmamoru@gmail.com</a>&gt; wrote:</div><br><div><div=
 dir=3D"ltr">Hi Neil,<div><br></div><div>Thanks for the clarification.</div=
><div>But Curity has a different approach and they implemented it according=
 to the concept of narrowing down=C2=A0the refresh token scopes.</div><div>=
<br></div><div>&quot;<span style=3D"color:rgb(77,77,77);font-family:Roboto-=
Regular,-apple-system,&quot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Hel=
vetica,Arial,sans-serif;font-size:17.6px">The scope was originally=C2=A0</s=
pan><code style=3D"box-sizing:border-box;font-family:Roboto-Mono,Consolas,M=
onaco,&quot;Andale Mono&quot;,&quot;Ubuntu Mono&quot;,monospace;background-=
color:rgb(247,250,252);border:1px solid rgba(0,0,0,0.05);border-radius:4px;=
font-size:14px;padding:0.15em 0.2em 0.05em;word-break:break-word;color:rgb(=
77,77,77)">read openid profile</code><span style=3D"color:rgb(77,77,77);fon=
t-family:Roboto-Regular,-apple-system,&quot;system-ui&quot;,&quot;Segoe UI&=
quot;,Roboto,Helvetica,Arial,sans-serif;font-size:17.6px">=C2=A0and after r=
efresh the access was reduced to=C2=A0</span><code style=3D"box-sizing:bord=
er-box;font-family:Roboto-Mono,Consolas,Monaco,&quot;Andale Mono&quot;,&quo=
t;Ubuntu Mono&quot;,monospace;background-color:rgb(247,250,252);border:1px =
solid rgba(0,0,0,0.05);border-radius:4px;font-size:14px;padding:0.15em 0.2e=
m 0.05em;word-break:break-word;color:rgb(77,77,77)">read profile</code><spa=
n style=3D"color:rgb(77,77,77);font-family:Roboto-Regular,-apple-system,&qu=
ot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif;f=
ont-size:17.6px">=C2=A0(i.e., the=C2=A0</span><code style=3D"box-sizing:bor=
der-box;font-family:Roboto-Mono,Consolas,Monaco,&quot;Andale Mono&quot;,&qu=
ot;Ubuntu Mono&quot;,monospace;background-color:rgb(247,250,252);border:1px=
 solid rgba(0,0,0,0.05);border-radius:4px;font-size:14px;padding:0.15em 0.2=
em 0.05em;word-break:break-word;color:rgb(77,77,77)">access_token</code><sp=
an style=3D"color:rgb(77,77,77);font-family:Roboto-Regular,-apple-system,&q=
uot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif;=
font-size:17.6px">=C2=A0now only has=C2=A0</span><code style=3D"box-sizing:=
border-box;font-family:Roboto-Mono,Consolas,Monaco,&quot;Andale Mono&quot;,=
&quot;Ubuntu Mono&quot;,monospace;background-color:rgb(247,250,252);border:=
1px solid rgba(0,0,0,0.05);border-radius:4px;font-size:14px;padding:0.15em =
0.2em 0.05em;word-break:break-word;color:rgb(77,77,77)">read profile</code>=
<span style=3D"color:rgb(77,77,77);font-family:Roboto-Regular,-apple-system=
,&quot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-ser=
if;font-size:17.6px">=C2=A0scope and any new tokens obtained using the refr=
esh token=C2=A0</span><code style=3D"box-sizing:border-box;font-family:Robo=
to-Mono,Consolas,Monaco,&quot;Andale Mono&quot;,&quot;Ubuntu Mono&quot;,mon=
ospace;background-color:rgb(247,250,252);border:1px solid rgba(0,0,0,0.05);=
border-radius:4px;font-size:14px;padding:0.15em 0.2em 0.05em;word-break:bre=
ak-word;color:rgb(77,77,77)">daa38700-ba96-4ef1-8b30-5cb3527aae19</code><sp=
an style=3D"color:rgb(77,77,77);font-family:Roboto-Regular,-apple-system,&q=
uot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif;=
font-size:17.6px">=C2=A0will have the same, reduced scope). Note that=C2=A0=
</span><em style=3D"box-sizing:border-box;font-family:Roboto-Regular,-apple=
-system,&quot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,s=
ans-serif;color:rgb(77,77,77);font-size:17.6px">increasing</em><span style=
=3D"color:rgb(77,77,77);font-family:Roboto-Regular,-apple-system,&quot;syst=
em-ui&quot;,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif;font-siz=
e:17.6px">=C2=A0the scope of access cannot be done in this way unless first=
 reduced and increased back to the original scope.</span>&quot;</div><div><=
br></div><div>[1]=C2=A0<a href=3D"https://curity.io/resources/learn/refresh=
-tokens/#changing-scope-of-access-token-on-refresh" target=3D"_blank">https=
://curity.io/resources/learn/refresh-tokens/#changing-scope-of-access-token=
-on-refresh</a></div><div><br></div><div>Thanks &amp; Regards,</div><div>Sa=
chin</div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gm=
ail_attr">On Tue, 20 Feb 2024 at 21:59, Neil Madden &lt;<a href=3D"mailto:n=
eil.e.madden@gmail.com" target=3D"_blank">neil.e.madden@gmail.com</a>&gt; w=
rote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0p=
x 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=
=3D"auto"><div dir=3D"ltr"></div><div dir=3D"ltr"><br></div><div dir=3D"ltr=
"><br><blockquote type=3D"cite">On 20 Feb 2024, at 11:02, Sachin Mamoru &lt=
;<a href=3D"mailto:sachinmamoru@gmail.com" target=3D"_blank">sachinmamoru@g=
mail.com</a>&gt; wrote:<br><br></blockquote></div><blockquote type=3D"cite"=
><div dir=3D"ltr">=EF=BB=BF<div dir=3D"ltr">Hi Neil,<div><br></div><div>Doe=
s that mean it should be identical to the narrowed scope request or the ori=
ginal request scope?</div></div></div></blockquote><div><br></div><div>It s=
ays it has to be identical to the scope of the existing refresh token in th=
e request, not the scope specified in the request. So effectively you can n=
ever downscope a refresh token in this way. Whatever scope you specify, any=
 RT returned must always retain the original scope.=C2=A0</div><div><br></d=
iv><div>(There are other ways to downscope a RT, eg ForgeRock=E2=80=99s mac=
aroons allow you to attenuate the scope if you wish).=C2=A0</div><div><br><=
/div><div>=E2=80=94 Neil</div><br><blockquote type=3D"cite"><div dir=3D"ltr=
"><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On T=
ue, 20 Feb 2024 at 16:31, Sachin Mamoru &lt;<a href=3D"mailto:sachinmamoru@=
gmail.com" target=3D"_blank">sachinmamoru@gmail.com</a>&gt; wrote:<br></div=
><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border=
-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><br></d=
iv><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On =
Tue, 20 Feb 2024 at 12:23, Neil Madden &lt;<a href=3D"mailto:neil.e.madden@=
gmail.com" target=3D"_blank">neil.e.madden@gmail.com</a>&gt; wrote:<br></di=
v><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;borde=
r-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"auto"><div =
dir=3D"ltr"></div><div dir=3D"ltr"><br></div><div dir=3D"ltr"><blockquote t=
ype=3D"cite">On 20 Feb 2024, at 06:44, Sachin Mamoru &lt;<a href=3D"mailto:=
sachinmamoru@gmail.com" target=3D"_blank">sachinmamoru@gmail.com</a>&gt; wr=
ote:<br><br></blockquote></div><blockquote type=3D"cite"><div dir=3D"ltr">=
=EF=BB=BF<div dir=3D"ltr">Hi All,<div><br></div><div><div style=3D"line-hei=
ght:1.2;margin-top:0pt;margin-bottom:0pt"><span style=3D"background-color:t=
ransparent;font-variant-numeric:normal;font-variant-east-asian:normal;font-=
variant-alternates:normal;vertical-align:baseline"><font face=3D"arial, san=
s-serif">When we request an access token using 3 scopes (scope1, scope2, sc=
ope3).</font></span></div><div style=3D"line-height:1.2;margin-top:0pt;marg=
in-bottom:0pt"><span style=3D"background-color:transparent;font-variant-num=
eric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;v=
ertical-align:baseline"><font face=3D"arial, sans-serif">Then will receive =
a refresh token (refresh_token1) with the access token.</font></span></div>=
<font face=3D"arial, sans-serif"><br></font><div style=3D"line-height:1.2;m=
argin-top:0pt;margin-bottom:0pt"><span style=3D"background-color:transparen=
t;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-a=
lternates:normal;vertical-align:baseline"><font face=3D"arial, sans-serif">=
After that will request another access token with refresh_token1 and provid=
e the scope list as scope1 and scope2 (Narrow down scopes).</font></span></=
div><div style=3D"line-height:1.2;margin-top:0pt;margin-bottom:0pt"><span s=
tyle=3D"background-color:transparent;font-variant-numeric:normal;font-varia=
nt-east-asian:normal;font-variant-alternates:normal;vertical-align:baseline=
"><font face=3D"arial, sans-serif">Similarly, get another refresh token (re=
fresh_token2) with the access token.</font></span></div><font face=3D"arial=
, sans-serif"><br></font><div style=3D"line-height:1.2;margin-top:0pt;margi=
n-bottom:0pt"><span style=3D"background-color:transparent;font-variant-nume=
ric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;ve=
rtical-align:baseline"><font face=3D"arial, sans-serif">Now if we request a=
nother access token with refresh_token2, we cannot request scope3, instead,=
 we can either request both scope1 and scope2 or one of them.<br></font></s=
pan></div><font face=3D"arial, sans-serif"><br></font><div style=3D"line-he=
ight:1.2;margin-top:0pt;margin-bottom:0pt"><span style=3D"background-color:=
transparent;font-variant-numeric:normal;font-variant-east-asian:normal;font=
-variant-alternates:normal;vertical-align:baseline"><font face=3D"arial, sa=
ns-serif">But in the specification, didn&#39;t able to find anything relate=
d to narrow-down scopes with refresh token.</font></span></div><font face=
=3D"arial, sans-serif"><br></font><div style=3D"line-height:1.2;margin-top:=
0pt;margin-bottom:0pt"><span style=3D"background-color:transparent;font-var=
iant-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:=
normal;text-decoration-line:underline;vertical-align:baseline"><font face=
=3D"arial, sans-serif">From Spec</font></span></div><font face=3D"arial, sa=
ns-serif"><br></font><div style=3D"line-height:1.2;margin-top:0pt;margin-bo=
ttom:0pt"><font face=3D"arial, sans-serif"><span style=3D"background-color:=
transparent;font-variant-numeric:normal;font-variant-east-asian:normal;font=
-variant-alternates:normal;vertical-align:baseline">1.5.=C2=A0 Refresh Toke=
n -=C2=A0</span><span style=3D"background-color:transparent">Refresh tokens=
 are issued to the client by the authorization server and are=C2=A0</span><=
span style=3D"background-color:transparent">used to obtain a new access tok=
en when the current access token=C2=A0</span><span style=3D"background-colo=
r:transparent">becomes invalid or expires or to obtain additional access to=
kens=C2=A0</span><span style=3D"background-color:transparent">with identica=
l or narrower scope (access tokens may have a shorter=C2=A0</span><span sty=
le=3D"background-color:transparent">lifetime and fewer permissions than aut=
horized by the resource=C2=A0</span><span style=3D"background-color:transpa=
rent">owner).</span></font></div><font face=3D"arial, sans-serif"><br></fon=
t><div style=3D"line-height:1.2;margin-top:0pt;margin-bottom:0pt"><span sty=
le=3D"background-color:transparent;font-variant-numeric:normal;font-variant=
-east-asian:normal;font-variant-alternates:normal;vertical-align:baseline">=
<font face=3D"arial, sans-serif">6.=C2=A0 Refreshing an Access Token</font>=
</span></div><div style=3D"line-height:1.2;margin-top:0pt;margin-bottom:0pt=
"><font face=3D"arial, sans-serif"><span style=3D"background-color:transpar=
ent;font-variant-numeric:normal;font-variant-east-asian:normal;font-variant=
-alternates:normal;vertical-align:baseline">The scope of the access request=
 as described by=C2=A0</span><span style=3D"background-color:transparent">S=
ection 3.3.=C2=A0 The requested scope MUST NOT include any scope=C2=A0</spa=
n><span style=3D"background-color:transparent">not originally granted by th=
e resource owner, and if omitted is=C2=A0</span><span style=3D"background-c=
olor:transparent">treated as equal to the scope originally granted by the=
=C2=A0</span><span style=3D"background-color:transparent">resource owner.</=
span></font></div><font face=3D"arial, sans-serif"><br></font><div style=3D=
"line-height:1.2;margin-top:0pt;margin-bottom:0pt"><a href=3D"https://datat=
racker.ietf.org/doc/html/rfc6749" style=3D"text-decoration-line:none" targe=
t=3D"_blank"><span style=3D"background-color:transparent;font-variant-numer=
ic:normal;font-variant-east-asian:normal;font-variant-alternates:normal;tex=
t-decoration-line:underline;vertical-align:baseline"><font face=3D"arial, s=
ans-serif">https://datatracker.ietf.org/doc/html/rfc6749</font></span></a><=
/div><div style=3D"line-height:1.2;margin-top:0pt;margin-bottom:0pt"><font =
face=3D"arial, sans-serif"><br></font></div><div style=3D"line-height:1.2;m=
argin-top:0pt;margin-bottom:0pt"><font face=3D"arial, sans-serif">IMO, from=
 a security aspect, the current behaviour is much more secure because it is=
 designed to maintain the principle of least privilege, where it updates th=
e refresh token authorised scopes based on the requested ones.</font></div>=
<div style=3D"line-height:1.2;margin-top:0pt;margin-bottom:0pt"><br></div><=
div style=3D"line-height:1.2;margin-top:0pt;margin-bottom:0pt">What should =
be the correct behaviour?<br>narrow-down scope refresh token should also be=
 able to request access token with original scope list?<font face=3D"arial,=
 sans-serif"><br></font></div></div></div></div></blockquote><div><br></div=
><div>Also from section 6:</div><div><br></div><div><pre style=3D"box-sizin=
g:border-box;font-size:11.04px;margin-bottom:0px;overflow:visible;padding:0=
px;width:80ch;color:rgb(32,37,42)">If a
   new refresh token is issued, the refresh token scope MUST be
   identical to that of the refresh token included by the client in the
   request.</pre><pre style=3D"box-sizing:border-box;font-size:11.04px;marg=
in-bottom:0px;overflow:visible;padding:0px;width:80ch;color:rgb(32,37,42)">=
<br></pre><pre style=3D"box-sizing:border-box;font-size:11.04px;margin-bott=
om:0px;overflow:visible;padding:0px;width:80ch;color:rgb(32,37,42)"><br></p=
re><pre style=3D"box-sizing:border-box;font-size:11.04px;margin-bottom:0px;=
overflow:visible;padding:0px;width:80ch;color:rgb(32,37,42)"><br></pre><pre=
 style=3D"box-sizing:border-box;font-size:11.04px;margin-bottom:0px;overflo=
w:visible;padding:0px;width:80ch;color:rgb(32,37,42)"><br></pre><pre style=
=3D"box-sizing:border-box;font-size:11.04px;margin-bottom:0px;overflow:visi=
ble;padding:0px;width:80ch;color:rgb(32,37,42)">=E2=80=94 Neil</pre></div><=
/div></blockquote></div><br clear=3D"all"><div><br></div><span class=3D"gma=
il_signature_prefix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signatur=
e"><div dir=3D"ltr"><div dir=3D"ltr"><table style=3D"direction:ltr;border-c=
ollapse:collapse"><tbody><tr><td style=3D"font-size:0px;height:12px;line-he=
ight:0"></td></tr><tr><td><table cellpadding=3D"0" cellspacing=3D"0" style=
=3D"border-collapse:collapse;font-family:Arial;line-height:1.15"><tbody><tr=
><td style=3D"vertical-align:top;padding:0.01px 14px 0.01px 0.01px"><table =
cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;width=
:65px"><tbody><tr><td style=3D"padding:0.01px 10px 0px 0px"><img height=3D"=
auto" width=3D"65" style=3D"width: 65px; vertical-align: initial; border-ra=
dius: 0px; display: block;"></td></tr></tbody></table></td><td height=3D"1"=
 width=3D"0" style=3D"width:0px;padding:0.01px;border-right:1px solid rgb(1=
89,189,189);height:1px;font-size:1pt">=C2=A0</td><td style=3D"padding:0.01p=
x 0.01px 0.01px 14px;vertical-align:top" valign=3D"top"><table cellpadding=
=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse"><tbody><tr><td =
style=3D"line-height:1.2;padding:0.01px 0.01px 12px"><span style=3D"font-fa=
mily:Arial;text-transform:initial;font-weight:bold"><span style=3D"color:rg=
b(100,100,100);font-size:16px"> Sachin Mamoru </span></span><br><span style=
=3D"font-size:13px;letter-spacing:0px;font-family:Arial;text-transform:init=
ial;font-weight:bold;color:rgb(100,100,100)"> Software Engineer, </span> <s=
pan style=3D"font-size:13px;letter-spacing:0px;font-family:Arial;text-trans=
form:initial;font-weight:bold;color:rgb(100,100,100)"> WSO2</span></td></tr=
><tr><td style=3D"padding:0.01px;line-height:0"><table cellpadding=3D"0" ce=
llspacing=3D"0" style=3D"border-collapse:collapse"><tbody><tr><td style=3D"=
padding:0.01px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-=
collapse:collapse"><tbody><tr><td style=3D"line-height:0;padding:0.01px 0.0=
1px 6px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collaps=
e:collapse;line-height:14px;font-size:12px;font-family:Arial"><tbody><tr><t=
d style=3D"padding:0.01px;font-family:Arial;font-size:12px"><a href=3D"tel:=
+94771292681" style=3D"text-decoration:unset;font-size:12px;font-family:Ari=
al" target=3D"_blank"><span style=3D"line-height:1.2;color:rgb(33,33,33);fo=
nt-family:Arial;white-space:nowrap;font-size:12px"> +94771292681</span></a>=
</td></tr></tbody></table></td><td style=3D"line-height:0;padding:0.01px 0.=
01px 6px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collap=
se:collapse;line-height:14px;font-size:12px;font-family:Arial"><tbody><tr><=
td style=3D"padding:0px 4px"><span style=3D"font-family:Arial;font-weight:b=
old;font-size:12px;color:rgb(33,33,33);vertical-align:2px"> | </span></td><=
td style=3D"padding:0.01px;font-family:Arial;font-size:12px"><a href=3D"htt=
ps://sachinmamoru.me/" style=3D"text-decoration:unset;font-size:12px;font-f=
amily:Arial" target=3D"_blank"><span style=3D"line-height:1.2;color:rgb(33,=
33,33);font-family:Arial;white-space:nowrap;font-size:12px"> sachinmamoru.m=
e=C2=A0</span></a></td></tr></tbody></table></td></tr></tbody></table></td>=
</tr><tr><td style=3D"padding:0.01px"><table cellpadding=3D"0" cellspacing=
=3D"0" style=3D"border-collapse:collapse"><tbody><tr><td style=3D"line-heig=
ht:0;padding:0.01px 0.01px 6px"><table cellpadding=3D"0" cellspacing=3D"0" =
style=3D"border-collapse:collapse;line-height:14px;font-size:12px;font-fami=
ly:Arial"><tbody><tr><td style=3D"padding:0.01px;font-family:Arial;font-siz=
e:12px"><a href=3D"mailto:sachinmamoru@gmail.com" style=3D"text-decoration:=
unset;font-size:12px;font-family:Arial" target=3D"_blank"><span style=3D"li=
ne-height:1.2;color:rgb(33,33,33);font-family:Arial;white-space:nowrap;font=
-size:12px"> sachinmamoru@gmail.com=C2=A0</span></a></td></tr></tbody></tab=
le></td></tr></tbody></table></td></tr></tbody></table></td></tr><tr><td st=
yle=3D"padding:12px 0.01px 0.01px"><table cellpadding=3D"0" cellspacing=3D"=
0" style=3D"border-collapse:collapse;width:100%"><tbody><tr><td style=3D"pa=
dding:0.01px"><table border=3D"0" cellpadding=3D"0" cellspacing=3D"0"><tbod=
y><tr><td align=3D"left" style=3D"padding-right:6px;text-align:center;paddi=
ng-top:0px"><a href=3D"https://www.linkedin.com/in/sachin-mamoru/" target=
=3D"_blank"><img width=3D"25" height=3D"25" style=3D"float: left; border: n=
one;" border=3D"0"></a></td><td align=3D"left" style=3D"padding-right:6px;t=
ext-align:center;padding-top:0px"><a href=3D"https://twitter.com/MamoruSach=
in" target=3D"_blank"><img width=3D"25" height=3D"25" style=3D"float: left;=
 border: none;" border=3D"0"></a></td></tr></tbody></table></td></tr></tbod=
y></table></td></tr></tbody></table></td></tr></tbody></table><table cellpa=
dding=3D"0" cellspacing=3D"0" border=3D"0" style=3D"max-width:600px;width:1=
00%"><tbody><tr><td style=3D"line-height:0"></td></tr></tbody></table></td>=
</tr></tbody></table><br></div><img alt=3D""></div></div>
</blockquote></div><br clear=3D"all"><div><br></div><span class=3D"gmail_si=
gnature_prefix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature"><d=
iv dir=3D"ltr"><div dir=3D"ltr"><table style=3D"direction:ltr;border-collap=
se:collapse"><tbody><tr><td style=3D"font-size:0px;height:12px;line-height:=
0"></td></tr><tr><td><table cellpadding=3D"0" cellspacing=3D"0" style=3D"bo=
rder-collapse:collapse;font-family:Arial;line-height:1.15"><tbody><tr><td s=
tyle=3D"vertical-align:top;padding:0.01px 14px 0.01px 0.01px"><table cellpa=
dding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;width:65px"=
><tbody><tr><td style=3D"padding:0.01px 10px 0px 0px"><img height=3D"auto" =
width=3D"65" style=3D"width: 65px; vertical-align: initial; border-radius: =
0px; display: block;"></td></tr></tbody></table></td><td height=3D"1" width=
=3D"0" style=3D"width:0px;padding:0.01px;border-right:1px solid rgb(189,189=
,189);height:1px;font-size:1pt">=C2=A0</td><td style=3D"padding:0.01px 0.01=
px 0.01px 14px;vertical-align:top" valign=3D"top"><table cellpadding=3D"0" =
cellspacing=3D"0" style=3D"border-collapse:collapse"><tbody><tr><td style=
=3D"line-height:1.2;padding:0.01px 0.01px 12px"><span style=3D"font-family:=
Arial;text-transform:initial;font-weight:bold"><span style=3D"color:rgb(100=
,100,100);font-size:16px"> Sachin Mamoru </span></span><br><span style=3D"f=
ont-size:13px;letter-spacing:0px;font-family:Arial;text-transform:initial;f=
ont-weight:bold;color:rgb(100,100,100)"> Software Engineer, </span> <span s=
tyle=3D"font-size:13px;letter-spacing:0px;font-family:Arial;text-transform:=
initial;font-weight:bold;color:rgb(100,100,100)"> WSO2</span></td></tr><tr>=
<td style=3D"padding:0.01px;line-height:0"><table cellpadding=3D"0" cellspa=
cing=3D"0" style=3D"border-collapse:collapse"><tbody><tr><td style=3D"paddi=
ng:0.01px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-colla=
pse:collapse"><tbody><tr><td style=3D"line-height:0;padding:0.01px 0.01px 6=
px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:col=
lapse;line-height:14px;font-size:12px;font-family:Arial"><tbody><tr><td sty=
le=3D"padding:0.01px;font-family:Arial;font-size:12px"><a href=3D"tel:+9477=
1292681" style=3D"text-decoration:unset;font-size:12px;font-family:Arial" t=
arget=3D"_blank"><span style=3D"line-height:1.2;color:rgb(33,33,33);font-fa=
mily:Arial;white-space:nowrap;font-size:12px"> +94771292681</span></a></td>=
</tr></tbody></table></td><td style=3D"line-height:0;padding:0.01px 0.01px =
6px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:co=
llapse;line-height:14px;font-size:12px;font-family:Arial"><tbody><tr><td st=
yle=3D"padding:0px 4px"><span style=3D"font-family:Arial;font-weight:bold;f=
ont-size:12px;color:rgb(33,33,33);vertical-align:2px"> | </span></td><td st=
yle=3D"padding:0.01px;font-family:Arial;font-size:12px"><a href=3D"https://=
sachinmamoru.me/" style=3D"text-decoration:unset;font-size:12px;font-family=
:Arial" target=3D"_blank"><span style=3D"line-height:1.2;color:rgb(33,33,33=
);font-family:Arial;white-space:nowrap;font-size:12px"> sachinmamoru.me=C2=
=A0</span></a></td></tr></tbody></table></td></tr></tbody></table></td></tr=
><tr><td style=3D"padding:0.01px"><table cellpadding=3D"0" cellspacing=3D"0=
" style=3D"border-collapse:collapse"><tbody><tr><td style=3D"line-height:0;=
padding:0.01px 0.01px 6px"><table cellpadding=3D"0" cellspacing=3D"0" style=
=3D"border-collapse:collapse;line-height:14px;font-size:12px;font-family:Ar=
ial"><tbody><tr><td style=3D"padding:0.01px;font-family:Arial;font-size:12p=
x"><a href=3D"mailto:sachinmamoru@gmail.com" style=3D"text-decoration:unset=
;font-size:12px;font-family:Arial" target=3D"_blank"><span style=3D"line-he=
ight:1.2;color:rgb(33,33,33);font-family:Arial;white-space:nowrap;font-size=
:12px"> sachinmamoru@gmail.com=C2=A0</span></a></td></tr></tbody></table></=
td></tr></tbody></table></td></tr></tbody></table></td></tr><tr><td style=
=3D"padding:12px 0.01px 0.01px"><table cellpadding=3D"0" cellspacing=3D"0" =
style=3D"border-collapse:collapse;width:100%"><tbody><tr><td style=3D"paddi=
ng:0.01px"><table border=3D"0" cellpadding=3D"0" cellspacing=3D"0"><tbody><=
tr><td align=3D"left" style=3D"padding-right:6px;text-align:center;padding-=
top:0px"><a href=3D"https://www.linkedin.com/in/sachin-mamoru/" target=3D"_=
blank"><img width=3D"25" height=3D"25" style=3D"float: left; border: none;"=
 border=3D"0"></a></td><td align=3D"left" style=3D"padding-right:6px;text-a=
lign:center;padding-top:0px"><a href=3D"https://twitter.com/MamoruSachin" t=
arget=3D"_blank"><img width=3D"25" height=3D"25" style=3D"float: left; bord=
er: none;" border=3D"0"></a></td></tr></tbody></table></td></tr></tbody></t=
able></td></tr></tbody></table></td></tr></tbody></table><table cellpadding=
=3D"0" cellspacing=3D"0" border=3D"0" style=3D"max-width:600px;width:100%">=
<tbody><tr><td style=3D"line-height:0"></td></tr></tbody></table></td></tr>=
</tbody></table><br></div><img alt=3D""></div></div>
</div></blockquote></div></blockquote></div><br clear=3D"all"><div><br></di=
v><span class=3D"gmail_signature_prefix">-- </span><br><div dir=3D"ltr" cla=
ss=3D"gmail_signature"><div dir=3D"ltr"><div dir=3D"ltr"><table style=3D"di=
rection:ltr;border-collapse:collapse"><tbody><tr><td style=3D"font-size:0px=
;height:12px;line-height:0"></td></tr><tr><td><table cellpadding=3D"0" cell=
spacing=3D"0" style=3D"border-collapse:collapse;font-family:Arial;line-heig=
ht:1.15"><tbody><tr><td style=3D"vertical-align:top;padding:0.01px 14px 0.0=
1px 0.01px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-coll=
apse:collapse;width:65px"><tbody><tr><td style=3D"padding:0.01px 10px 0px 0=
px"><img height=3D"auto" width=3D"65" style=3D"width: 65px; vertical-align:=
 initial; border-radius: 0px; display: block;"></td></tr></tbody></table></=
td><td height=3D"1" width=3D"0" style=3D"width:0px;padding:0.01px;border-ri=
ght:1px solid rgb(189,189,189);height:1px;font-size:1pt">=C2=A0</td><td sty=
le=3D"padding:0.01px 0.01px 0.01px 14px;vertical-align:top" valign=3D"top">=
<table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collaps=
e"><tbody><tr><td style=3D"line-height:1.2;padding:0.01px 0.01px 12px"><spa=
n style=3D"font-family:Arial;text-transform:initial;font-weight:bold"><span=
 style=3D"color:rgb(100,100,100);font-size:16px"> Sachin Mamoru </span></sp=
an><br><span style=3D"font-size:13px;letter-spacing:0px;font-family:Arial;t=
ext-transform:initial;font-weight:bold;color:rgb(100,100,100)"> Software En=
gineer, </span> <span style=3D"font-size:13px;letter-spacing:0px;font-famil=
y:Arial;text-transform:initial;font-weight:bold;color:rgb(100,100,100)"> WS=
O2</span></td></tr><tr><td style=3D"padding:0.01px;line-height:0"><table ce=
llpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse"><tbody=
><tr><td style=3D"padding:0.01px"><table cellpadding=3D"0" cellspacing=3D"0=
" style=3D"border-collapse:collapse"><tbody><tr><td style=3D"line-height:0;=
padding:0.01px 0.01px 6px"><table cellpadding=3D"0" cellspacing=3D"0" style=
=3D"border-collapse:collapse;line-height:14px;font-size:12px;font-family:Ar=
ial"><tbody><tr><td style=3D"padding:0.01px;font-family:Arial;font-size:12p=
x"><a href=3D"tel:+94771292681" style=3D"text-decoration:unset;font-size:12=
px;font-family:Arial" target=3D"_blank"><span style=3D"line-height:1.2;colo=
r:rgb(33,33,33);font-family:Arial;white-space:nowrap;font-size:12px"> +9477=
1292681</span></a></td></tr></tbody></table></td><td style=3D"line-height:0=
;padding:0.01px 0.01px 6px"><table cellpadding=3D"0" cellspacing=3D"0" styl=
e=3D"border-collapse:collapse;line-height:14px;font-size:12px;font-family:A=
rial"><tbody><tr><td style=3D"padding:0px 4px"><span style=3D"font-family:A=
rial;font-weight:bold;font-size:12px;color:rgb(33,33,33);vertical-align:2px=
"> | </span></td><td style=3D"padding:0.01px;font-family:Arial;font-size:12=
px"><a href=3D"https://sachinmamoru.me/" style=3D"text-decoration:unset;fon=
t-size:12px;font-family:Arial" target=3D"_blank"><span style=3D"line-height=
:1.2;color:rgb(33,33,33);font-family:Arial;white-space:nowrap;font-size:12p=
x"> sachinmamoru.me=C2=A0</span></a></td></tr></tbody></table></td></tr></t=
body></table></td></tr><tr><td style=3D"padding:0.01px"><table cellpadding=
=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse"><tbody><tr><td =
style=3D"line-height:0;padding:0.01px 0.01px 6px"><table cellpadding=3D"0" =
cellspacing=3D"0" style=3D"border-collapse:collapse;line-height:14px;font-s=
ize:12px;font-family:Arial"><tbody><tr><td style=3D"padding:0.01px;font-fam=
ily:Arial;font-size:12px"><a href=3D"mailto:sachinmamoru@gmail.com" style=
=3D"text-decoration:unset;font-size:12px;font-family:Arial" target=3D"_blan=
k"><span style=3D"line-height:1.2;color:rgb(33,33,33);font-family:Arial;whi=
te-space:nowrap;font-size:12px"> sachinmamoru@gmail.com=C2=A0</span></a></t=
d></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table>=
</td></tr><tr><td style=3D"padding:12px 0.01px 0.01px"><table cellpadding=
=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;width:100%"><tbo=
dy><tr><td style=3D"padding:0.01px"><table border=3D"0" cellpadding=3D"0" c=
ellspacing=3D"0"><tbody><tr><td align=3D"left" style=3D"padding-right:6px;t=
ext-align:center;padding-top:0px"><a href=3D"https://www.linkedin.com/in/sa=
chin-mamoru/" target=3D"_blank"><img width=3D"25" height=3D"25" style=3D"fl=
oat: left; border: none;" border=3D"0"></a></td><td align=3D"left" style=3D=
"padding-right:6px;text-align:center;padding-top:0px"><a href=3D"https://tw=
itter.com/MamoruSachin" target=3D"_blank"><img width=3D"25" height=3D"25" s=
tyle=3D"float: left; border: none;" border=3D"0"></a></td></tr></tbody></ta=
ble></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody><=
/table><table cellpadding=3D"0" cellspacing=3D"0" border=3D"0" style=3D"max=
-width:600px;width:100%"><tbody><tr><td style=3D"line-height:0"></td></tr><=
/tbody></table></td></tr></tbody></table><br></div><img alt=3D""></div></di=
v>
</div></blockquote></div><br></div></div></blockquote></div><br clear=3D"al=
l"><div><br></div><span class=3D"gmail_signature_prefix">-- </span><br><div=
 dir=3D"ltr" class=3D"gmail_signature"><div dir=3D"ltr"><div dir=3D"ltr"><t=
able style=3D"direction:ltr;border-collapse:collapse"><tbody><tr><td style=
=3D"font-size:0px;height:12px;line-height:0"></td></tr><tr><td><table cellp=
adding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;font-famil=
y:Arial;line-height:1.15"><tbody><tr><td style=3D"vertical-align:top;paddin=
g:0.01px 14px 0.01px 0.01px"><table cellpadding=3D"0" cellspacing=3D"0" sty=
le=3D"border-collapse:collapse;width:65px"><tbody><tr><td style=3D"padding:=
0.01px 10px 0px 0px"><img height=3D"auto" width=3D"65" style=3D"width: 65px=
; vertical-align: initial; border-radius: 0px; display: block;"></td></tr><=
/tbody></table></td><td height=3D"1" width=3D"0" style=3D"width:0px;padding=
:0.01px;border-right:1px solid rgb(189,189,189);height:1px;font-size:1pt">=
=C2=A0</td><td style=3D"padding:0.01px 0.01px 0.01px 14px;vertical-align:to=
p" valign=3D"top"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"borde=
r-collapse:collapse"><tbody><tr><td style=3D"line-height:1.2;padding:0.01px=
 0.01px 12px"><span style=3D"font-family:Arial;text-transform:initial;font-=
weight:bold"><span style=3D"color:rgb(100,100,100);font-size:16px"> Sachin =
Mamoru </span></span><br><span style=3D"font-size:13px;letter-spacing:0px;f=
ont-family:Arial;text-transform:initial;font-weight:bold;color:rgb(100,100,=
100)"> Software Engineer, </span> <span style=3D"font-size:13px;letter-spac=
ing:0px;font-family:Arial;text-transform:initial;font-weight:bold;color:rgb=
(100,100,100)"> WSO2</span></td></tr><tr><td style=3D"padding:0.01px;line-h=
eight:0"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collaps=
e:collapse"><tbody><tr><td style=3D"padding:0.01px"><table cellpadding=3D"0=
" cellspacing=3D"0" style=3D"border-collapse:collapse"><tbody><tr><td style=
=3D"line-height:0;padding:0.01px 0.01px 6px"><table cellpadding=3D"0" cells=
pacing=3D"0" style=3D"border-collapse:collapse;line-height:14px;font-size:1=
2px;font-family:Arial"><tbody><tr><td style=3D"padding:0.01px;font-family:A=
rial;font-size:12px"><a href=3D"tel:+94771292681" style=3D"text-decoration:=
unset;font-size:12px;font-family:Arial" target=3D"_blank"><span style=3D"li=
ne-height:1.2;color:rgb(33,33,33);font-family:Arial;white-space:nowrap;font=
-size:12px"> +94771292681</span></a></td></tr></tbody></table></td><td styl=
e=3D"line-height:0;padding:0.01px 0.01px 6px"><table cellpadding=3D"0" cell=
spacing=3D"0" style=3D"border-collapse:collapse;line-height:14px;font-size:=
12px;font-family:Arial"><tbody><tr><td style=3D"padding:0px 4px"><span styl=
e=3D"font-family:Arial;font-weight:bold;font-size:12px;color:rgb(33,33,33);=
vertical-align:2px"> | </span></td><td style=3D"padding:0.01px;font-family:=
Arial;font-size:12px"><a href=3D"https://sachinmamoru.me/" style=3D"text-de=
coration:unset;font-size:12px;font-family:Arial" target=3D"_blank"><span st=
yle=3D"line-height:1.2;color:rgb(33,33,33);font-family:Arial;white-space:no=
wrap;font-size:12px"> sachinmamoru.me=C2=A0</span></a></td></tr></tbody></t=
able></td></tr></tbody></table></td></tr><tr><td style=3D"padding:0.01px"><=
table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse=
"><tbody><tr><td style=3D"line-height:0;padding:0.01px 0.01px 6px"><table c=
ellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;line-h=
eight:14px;font-size:12px;font-family:Arial"><tbody><tr><td style=3D"paddin=
g:0.01px;font-family:Arial;font-size:12px"><a href=3D"mailto:sachinmamoru@g=
mail.com" style=3D"text-decoration:unset;font-size:12px;font-family:Arial" =
target=3D"_blank"><span style=3D"line-height:1.2;color:rgb(33,33,33);font-f=
amily:Arial;white-space:nowrap;font-size:12px"> sachinmamoru@gmail.com=C2=
=A0</span></a></td></tr></tbody></table></td></tr></tbody></table></td></tr=
></tbody></table></td></tr><tr><td style=3D"padding:12px 0.01px 0.01px"><ta=
ble cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;w=
idth:100%"><tbody><tr><td style=3D"padding:0.01px"><table border=3D"0" cell=
padding=3D"0" cellspacing=3D"0"><tbody><tr><td align=3D"left" style=3D"padd=
ing-right:6px;text-align:center;padding-top:0px"><a href=3D"https://www.lin=
kedin.com/in/sachin-mamoru/" target=3D"_blank"><img width=3D"25" height=3D"=
25" style=3D"float: left; border: none;" border=3D"0"></a></td><td align=3D=
"left" style=3D"padding-right:6px;text-align:center;padding-top:0px"><a hre=
f=3D"https://twitter.com/MamoruSachin" target=3D"_blank"><img width=3D"25" =
height=3D"25" style=3D"float: left; border: none;" border=3D"0"></a></td></=
tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table></td=
></tr></tbody></table><table cellpadding=3D"0" cellspacing=3D"0" border=3D"=
0" style=3D"max-width:600px;width:100%"><tbody><tr><td style=3D"line-height=
:0"></td></tr></tbody></table></td></tr></tbody></table><br></div><img alt=
=3D""></div></div>
</blockquote></div><br clear=3D"all"><div><br></div><span class=3D"gmail_si=
gnature_prefix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature"><d=
iv dir=3D"ltr"><div dir=3D"ltr"><table style=3D"direction:ltr;border-collap=
se:collapse"><tbody><tr><td style=3D"font-size:0px;height:12px;line-height:=
0"></td></tr><tr><td><table cellpadding=3D"0" cellspacing=3D"0" style=3D"bo=
rder-collapse:collapse;font-family:Arial;line-height:1.15"><tbody><tr><td s=
tyle=3D"vertical-align:top;padding:0.01px 14px 0.01px 0.01px"><table cellpa=
dding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;width:65px"=
><tbody><tr><td style=3D"padding:0.01px 10px 0px 0px"><img height=3D"auto" =
width=3D"65" style=3D"width: 65px; vertical-align: initial; border-radius: =
0px; display: block;"></td></tr></tbody></table></td><td height=3D"1" width=
=3D"0" style=3D"width:0px;padding:0.01px;border-right:1px solid rgb(189,189=
,189);height:1px;font-size:1pt">=C2=A0</td><td style=3D"padding:0.01px 0.01=
px 0.01px 14px;vertical-align:top" valign=3D"top"><table cellpadding=3D"0" =
cellspacing=3D"0" style=3D"border-collapse:collapse"><tbody><tr><td style=
=3D"line-height:1.2;padding:0.01px 0.01px 12px"><span style=3D"font-family:=
Arial;text-transform:initial;font-weight:bold"><span style=3D"color:rgb(100=
,100,100);font-size:16px"> Sachin Mamoru </span></span><br><span style=3D"f=
ont-size:13px;letter-spacing:0px;font-family:Arial;text-transform:initial;f=
ont-weight:bold;color:rgb(100,100,100)"> Software Engineer, </span> <span s=
tyle=3D"font-size:13px;letter-spacing:0px;font-family:Arial;text-transform:=
initial;font-weight:bold;color:rgb(100,100,100)"> WSO2</span></td></tr><tr>=
<td style=3D"padding:0.01px;line-height:0"><table cellpadding=3D"0" cellspa=
cing=3D"0" style=3D"border-collapse:collapse"><tbody><tr><td style=3D"paddi=
ng:0.01px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-colla=
pse:collapse"><tbody><tr><td style=3D"line-height:0;padding:0.01px 0.01px 6=
px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:col=
lapse;line-height:14px;font-size:12px;font-family:Arial"><tbody><tr><td sty=
le=3D"padding:0.01px;font-family:Arial;font-size:12px"><a href=3D"tel:+9477=
1292681" style=3D"text-decoration:unset;font-size:12px;font-family:Arial" t=
arget=3D"_blank"><span style=3D"line-height:1.2;color:rgb(33,33,33);font-fa=
mily:Arial;white-space:nowrap;font-size:12px"> +94771292681</span></a></td>=
</tr></tbody></table></td><td style=3D"line-height:0;padding:0.01px 0.01px =
6px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:co=
llapse;line-height:14px;font-size:12px;font-family:Arial"><tbody><tr><td st=
yle=3D"padding:0px 4px"><span style=3D"font-family:Arial;font-weight:bold;f=
ont-size:12px;color:rgb(33,33,33);vertical-align:2px"> | </span></td><td st=
yle=3D"padding:0.01px;font-family:Arial;font-size:12px"><a href=3D"https://=
sachinmamoru.me/" style=3D"text-decoration:unset;font-size:12px;font-family=
:Arial" target=3D"_blank"><span style=3D"line-height:1.2;color:rgb(33,33,33=
);font-family:Arial;white-space:nowrap;font-size:12px"> sachinmamoru.me=C2=
=A0</span></a></td></tr></tbody></table></td></tr></tbody></table></td></tr=
><tr><td style=3D"padding:0.01px"><table cellpadding=3D"0" cellspacing=3D"0=
" style=3D"border-collapse:collapse"><tbody><tr><td style=3D"line-height:0;=
padding:0.01px 0.01px 6px"><table cellpadding=3D"0" cellspacing=3D"0" style=
=3D"border-collapse:collapse;line-height:14px;font-size:12px;font-family:Ar=
ial"><tbody><tr><td style=3D"padding:0.01px;font-family:Arial;font-size:12p=
x"><a href=3D"mailto:sachinmamoru@gmail.com" style=3D"text-decoration:unset=
;font-size:12px;font-family:Arial" target=3D"_blank"><span style=3D"line-he=
ight:1.2;color:rgb(33,33,33);font-family:Arial;white-space:nowrap;font-size=
:12px"> sachinmamoru@gmail.com=C2=A0</span></a></td></tr></tbody></table></=
td></tr></tbody></table></td></tr></tbody></table></td></tr><tr><td style=
=3D"padding:12px 0.01px 0.01px"><table cellpadding=3D"0" cellspacing=3D"0" =
style=3D"border-collapse:collapse;width:100%"><tbody><tr><td style=3D"paddi=
ng:0.01px"><table border=3D"0" cellpadding=3D"0" cellspacing=3D"0"><tbody><=
tr><td align=3D"left" style=3D"padding-right:6px;text-align:center;padding-=
top:0px"><a href=3D"https://www.linkedin.com/in/sachin-mamoru/" target=3D"_=
blank"><img width=3D"25" height=3D"25" style=3D"float: left; border: none;"=
 border=3D"0"></a></td><td align=3D"left" style=3D"padding-right:6px;text-a=
lign:center;padding-top:0px"><a href=3D"https://twitter.com/MamoruSachin" t=
arget=3D"_blank"><img width=3D"25" height=3D"25" style=3D"float: left; bord=
er: none;" border=3D"0"></a></td></tr></tbody></table></td></tr></tbody></t=
able></td></tr></tbody></table></td></tr></tbody></table><table cellpadding=
=3D"0" cellspacing=3D"0" border=3D"0" style=3D"max-width:600px;width:100%">=
<tbody><tr><td style=3D"line-height:0"></td></tr></tbody></table></td></tr>=
</tbody></table><br></div><img alt=3D""></div></div>
</div></blockquote></div><br></div></blockquote></div><br clear=3D"all"><di=
v><br></div><span class=3D"gmail_signature_prefix">-- </span><br><div dir=
=3D"ltr" class=3D"gmail_signature"><div dir=3D"ltr"><div dir=3D"ltr"><table=
 style=3D"direction:ltr;border-collapse:collapse"><tbody><tr><td style=3D"f=
ont-size:0px;height:12px;line-height:0"></td></tr><tr><td><table cellpaddin=
g=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;font-family:Ari=
al;line-height:1.15;color:rgb(0,0,0)"><tbody><tr><td style=3D"vertical-alig=
n:top;padding:0.01px 14px 0.01px 0.01px"><table cellpadding=3D"0" cellspaci=
ng=3D"0" style=3D"border-collapse:collapse;width:65px"><tbody><tr><td style=
=3D"padding:0.01px 10px 0px 0px"><img height=3D"auto" width=3D"65" style=3D=
"width: 65px; vertical-align: initial; border-radius: 0px; display: block;"=
></td></tr></tbody></table></td><td height=3D"1" width=3D"0" style=3D"width=
:0px;padding:0.01px;border-right:1px solid rgb(189,189,189);height:1px;font=
-size:1pt">=C2=A0</td><td style=3D"padding:0.01px 0.01px 0.01px 14px;vertic=
al-align:top" valign=3D"top"><table cellpadding=3D"0" cellspacing=3D"0" sty=
le=3D"border-collapse:collapse"><tbody><tr><td style=3D"line-height:1.2;pad=
ding:0.01px 0.01px 12px"><span style=3D"font-family:Arial;text-transform:in=
itial;font-weight:bold"><span style=3D"color:rgb(100,100,100);font-size:16p=
x"> Sachin Mamoru </span></span><br><span style=3D"font-size:13px;letter-sp=
acing:0px;font-family:Arial;text-transform:initial;font-weight:bold;color:r=
gb(100,100,100)"> Software Engineer, </span> <span style=3D"font-size:13px;=
letter-spacing:0px;font-family:Arial;text-transform:initial;font-weight:bol=
d;color:rgb(100,100,100)"> WSO2</span></td></tr><tr><td style=3D"padding:0.=
01px;line-height:0"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"bor=
der-collapse:collapse"><tbody><tr><td style=3D"padding:0.01px"><table cellp=
adding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse"><tbody><t=
r><td style=3D"line-height:0;padding:0.01px 0.01px 6px"><table cellpadding=
=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;line-height:14px=
;font-size:12px;font-family:Arial"><tbody><tr><td style=3D"padding:0.01px;f=
ont-family:Arial;font-size:12px"><a href=3D"tel:+94771292681" style=3D"text=
-decoration:unset;font-size:12px;font-family:Arial" target=3D"_blank"><span=
 style=3D"line-height:1.2;color:rgb(33,33,33);font-family:Arial;white-space=
:nowrap;font-size:12px"> +94771292681</span></a></td></tr></tbody></table><=
/td><td style=3D"line-height:0;padding:0.01px 0.01px 6px"><table cellpaddin=
g=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;line-height:14p=
x;font-size:12px;font-family:Arial"><tbody><tr><td style=3D"padding:0px 4px=
"><span style=3D"font-family:Arial;font-weight:bold;font-size:12px;color:rg=
b(33,33,33);vertical-align:2px"> | </span></td><td style=3D"padding:0.01px;=
font-family:Arial;font-size:12px"><a href=3D"https://sachinmamoru.me" style=
=3D"text-decoration:unset;font-size:12px;font-family:Arial" target=3D"_blan=
k"><span style=3D"line-height:1.2;color:rgb(33,33,33);font-family:Arial;whi=
te-space:nowrap;font-size:12px"> sachinmamoru.me=C2=A0</span></a></td></tr>=
</tbody></table></td></tr></tbody></table></td></tr><tr><td style=3D"paddin=
g:0.01px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collap=
se:collapse"><tbody><tr><td style=3D"line-height:0;padding:0.01px 0.01px 6p=
x"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:coll=
apse;line-height:14px;font-size:12px;font-family:Arial"><tbody><tr><td styl=
e=3D"padding:0.01px;font-family:Arial;font-size:12px"><a href=3D"mailto:sac=
hinmamoru@gmail.com" style=3D"text-decoration:unset;font-size:12px;font-fam=
ily:Arial" target=3D"_blank"><span style=3D"line-height:1.2;color:rgb(33,33=
,33);font-family:Arial;white-space:nowrap;font-size:12px"> sachinmamoru@gma=
il.com=C2=A0</span></a></td></tr></tbody></table></td></tr></tbody></table>=
</td></tr></tbody></table></td></tr><tr><td style=3D"padding:12px 0.01px 0.=
01px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:c=
ollapse;width:100%"><tbody><tr><td style=3D"padding:0.01px"><table border=
=3D"0" cellpadding=3D"0" cellspacing=3D"0"><tbody><tr><td align=3D"left" st=
yle=3D"padding-right:6px;text-align:center;padding-top:0px"><a href=3D"http=
s://www.linkedin.com/in/sachin-mamoru/" target=3D"_blank"><img width=3D"25"=
 height=3D"25" style=3D"float: left; border: none;" border=3D"0"></a></td><=
td align=3D"left" style=3D"padding-right:6px;text-align:center;padding-top:=
0px"><a href=3D"https://twitter.com/MamoruSachin" target=3D"_blank"><img wi=
dth=3D"25" height=3D"25" style=3D"float: left; border: none;" border=3D"0">=
</a></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody><=
/table></td></tr></tbody></table><table cellpadding=3D"0" cellspacing=3D"0"=
 border=3D"0" style=3D"max-width:600px;width:100%"><tbody><tr><td style=3D"=
line-height:0"></td></tr></tbody></table></td></tr></tbody></table><br></di=
v><img alt=3D""></div></div>
</blockquote></div>
</blockquote></div><br clear=3D"all"><div><br></div><span class=3D"gmail_si=
gnature_prefix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature"><d=
iv dir=3D"ltr"><div dir=3D"ltr"><table style=3D"direction:ltr;border-collap=
se:collapse"><tbody><tr><td style=3D"font-size:0px;height:12px;line-height:=
0"></td></tr><tr><td><table cellpadding=3D"0" cellspacing=3D"0" style=3D"bo=
rder-collapse:collapse;font-family:Arial;line-height:1.15;color:rgb(0,0,0)"=
><tbody><tr><td style=3D"vertical-align:top;padding:0.01px 14px 0.01px 0.01=
px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:col=
lapse;width:65px"><tbody><tr><td style=3D"padding:0.01px 10px 0px 0px"><img=
 src=3D"https://d36urhup7zbd7q.cloudfront.net/29e6c216-f94e-4bc3-8205-f3ea7=
62db0d5/profile.format_png.resize_200x.jpeg" height=3D"auto" width=3D"65" s=
tyle=3D"width: 65px; vertical-align: initial; border-radius: 0px; display: =
block;"></td></tr></tbody></table></td><td height=3D"1" width=3D"0" style=
=3D"width:0px;padding:0.01px;border-right:1px solid rgb(189,189,189);height=
:1px;font-size:1pt">=C2=A0</td><td style=3D"padding:0.01px 0.01px 0.01px 14=
px;vertical-align:top" valign=3D"top"><table cellpadding=3D"0" cellspacing=
=3D"0" style=3D"border-collapse:collapse"><tbody><tr><td style=3D"line-heig=
ht:1.2;padding:0.01px 0.01px 12px"><span style=3D"font-family:Arial;text-tr=
ansform:initial;font-weight:bold"><span style=3D"color:rgb(100,100,100);fon=
t-size:16px"> Sachin Mamoru </span></span><br><span style=3D"font-size:13px=
;letter-spacing:0px;font-family:Arial;text-transform:initial;font-weight:bo=
ld;color:rgb(100,100,100)"> Software Engineer, </span> <span style=3D"font-=
size:13px;letter-spacing:0px;font-family:Arial;text-transform:initial;font-=
weight:bold;color:rgb(100,100,100)"> WSO2</span></td></tr><tr><td style=3D"=
padding:0.01px;line-height:0"><table cellpadding=3D"0" cellspacing=3D"0" st=
yle=3D"border-collapse:collapse"><tbody><tr><td style=3D"padding:0.01px"><t=
able cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse"=
><tbody><tr><td style=3D"line-height:0;padding:0.01px 0.01px 6px"><table ce=
llpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;line-he=
ight:14px;font-size:12px;font-family:Arial"><tbody><tr><td style=3D"padding=
:0.01px;font-family:Arial;font-size:12px"><a href=3D"tel:+94771292681" styl=
e=3D"text-decoration:unset;font-size:12px;font-family:Arial" target=3D"_bla=
nk"><span style=3D"line-height:1.2;color:rgb(33,33,33);font-family:Arial;wh=
ite-space:nowrap;font-size:12px"> +94771292681</span></a></td></tr></tbody>=
</table></td><td style=3D"line-height:0;padding:0.01px 0.01px 6px"><table c=
ellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;line-h=
eight:14px;font-size:12px;font-family:Arial"><tbody><tr><td style=3D"paddin=
g:0px 4px"><span style=3D"font-family:Arial;font-weight:bold;font-size:12px=
;color:rgb(33,33,33);vertical-align:2px"> | </span></td><td style=3D"paddin=
g:0.01px;font-family:Arial;font-size:12px"><a href=3D"https://sachinmamoru.=
me" style=3D"text-decoration:unset;font-size:12px;font-family:Arial" target=
=3D"_blank"><span style=3D"line-height:1.2;color:rgb(33,33,33);font-family:=
Arial;white-space:nowrap;font-size:12px"> sachinmamoru.me=C2=A0</span></a><=
/td></tr></tbody></table></td></tr></tbody></table></td></tr><tr><td style=
=3D"padding:0.01px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"bor=
der-collapse:collapse"><tbody><tr><td style=3D"line-height:0;padding:0.01px=
 0.01px 6px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-col=
lapse:collapse;line-height:14px;font-size:12px;font-family:Arial"><tbody><t=
r><td style=3D"padding:0.01px;font-family:Arial;font-size:12px"><a href=3D"=
mailto:sachinmamoru@gmail.com" style=3D"text-decoration:unset;font-size:12p=
x;font-family:Arial" target=3D"_blank"><span style=3D"line-height:1.2;color=
:rgb(33,33,33);font-family:Arial;white-space:nowrap;font-size:12px"> sachin=
mamoru@gmail.com=C2=A0</span></a></td></tr></tbody></table></td></tr></tbod=
y></table></td></tr></tbody></table></td></tr><tr><td style=3D"padding:12px=
 0.01px 0.01px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-=
collapse:collapse;width:100%"><tbody><tr><td style=3D"padding:0.01px"><tabl=
e border=3D"0" cellpadding=3D"0" cellspacing=3D"0"><tbody><tr><td align=3D"=
left" style=3D"padding-right:6px;text-align:center;padding-top:0px"><a href=
=3D"https://www.linkedin.com/in/sachin-mamoru/" target=3D"_blank"><img widt=
h=3D"25" height=3D"25" src=3D"https://cdn.gifo.wisestamp.com/s/ld/0077b5/50=
/0/background.png" style=3D"float: left; border: none;" border=3D"0"></a></=
td><td align=3D"left" style=3D"padding-right:6px;text-align:center;padding-=
top:0px"><a href=3D"https://twitter.com/MamoruSachin" target=3D"_blank"><im=
g width=3D"25" height=3D"25" src=3D"https://cdn.gifo.wisestamp.com/s/tw/55a=
cee/50/0/background.png" style=3D"float: left; border: none;" border=3D"0">=
</a></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody><=
/table></td></tr></tbody></table><table cellpadding=3D"0" cellspacing=3D"0"=
 border=3D"0" style=3D"max-width:600px;width:100%"><tbody><tr><td style=3D"=
line-height:0"></td></tr></tbody></table></td></tr></tbody></table><br></di=
v><img src=3D"https://tracy.srv.wisestamp.com/px/5434123278745600.png" alt=
=3D""></div></div>

--0000000000009750d60611e2390e--

