Return-Path: <jim@manicode.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 B794B1320DC
 for <oauth@ietfa.amsl.com>; Tue, 19 Sep 2017 18:32:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.898
X-Spam-Level: 
X-Spam-Status: No, score=-1.898 tagged_above=-999 required=5
 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1,
 HTML_MESSAGE=0.001, MIME_QP_LONG_LINE=0.001,
 RCVD_IN_DNSWL_NONE=-0.0001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key)
 header.d=manicode-com.20150623.gappssmtp.com
Received: from mail.ietf.org ([4.31.198.44])
 by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id ZcP4YZoFZXHc for <oauth@ietfa.amsl.com>;
 Tue, 19 Sep 2017 18:31:58 -0700 (PDT)
Received: from mail-pg0-x234.google.com (mail-pg0-x234.google.com
 [IPv6:2607:f8b0:400e:c05::234])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by ietfa.amsl.com (Postfix) with ESMTPS id 1D5161321AC
 for <oauth@ietf.org>; Tue, 19 Sep 2017 18:31:58 -0700 (PDT)
Received: by mail-pg0-x234.google.com with SMTP id p5so821546pgn.7
 for <oauth@ietf.org>; Tue, 19 Sep 2017 18:31:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=manicode-com.20150623.gappssmtp.com; s=20150623;
 h=mime-version:subject:from:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=sRN9VgI19d/moiEgqjIoVgMh1F6k+bS2t7JCZedAlew=;
 b=paRlqQJtMV2E/6/cdfC7L4GoptL+KUqqs3orWTvkRLdGpNhzyY9q458PCykYxrRWN2
 fJ6mct3nnx3iW6STLtZhSo0YaZeM/TKv5WqTmWTpR+MmO2ZKzOaJmIKsFGFFhPYHUxVz
 b0JZTnSUK7vtEKwrv+oc3aYrv5AEu98mtG16A/8wBdRZS9i7LwDpsCxLGG2s1kE5ym0F
 eY3c6FfIJd8/CXN45tbMhv5f1XWSytF8mRGVzO0qOutAWYgOm/gLyOJ827M13uGNH+KQ
 hHpi7zDCkVpkyrYrWUV+K7BFdeXOrzNSrLuQF00YJ0Z0IegurM0dPjKnCDS5JEJtnc/r
 EPUQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=sRN9VgI19d/moiEgqjIoVgMh1F6k+bS2t7JCZedAlew=;
 b=K5N2FUdFVTkaXefrhqThMsHkyUwy12vsgEGHz8qCaTMnUB4tlCmYf5X8tY+nV13iBQ
 idcqqNgFePejnHI46je4lNRVhWpYTYEQvYYJXRepnyPTMHuQJSJxcIbJXUQsXEbz8F2f
 PNzArmS0lmzKH8vUslYeki2QeA5ZgiqQyXCOyG0+GGyU0TINX8DosUoam3m8pjtovy8g
 TAhOT0C06/Vvp0BfMNjfA+0gnxe4S1esADN1PQl6qycHNhZx1EPUitiUxrAGgUu8rf+x
 ap/9HZvcswNG3Jc4bzCWcjvykSc1yVA1wD0czefdSDPOAPgEI/F95zoVQ06BXEJzwcWk
 wsxQ==
X-Gm-Message-State: AHPjjUg0Yovb8Z748gRXnxKcOzrhd4QMbtKbvR3gB1I0DKsIMHsg4L9y
 HohA6Iv3ZVGt/UwdvWrN5ZgX8o8/Kdc=
X-Google-Smtp-Source: AOwi7QD6dIYC515eEUO07kyCuncktPgZKI4FhnF6k5igOuy0VhzJL2m4LJy+nhlBwcShSeK/1RntQg==
X-Received: by 10.98.178.133 with SMTP id z5mr499154pfl.312.1505871117156;
 Tue, 19 Sep 2017 18:31:57 -0700 (PDT)
Received: from [10.3.48.101] (mobile-166-170-38-115.mycingular.net.
 [166.170.38.115])
 by smtp.gmail.com with ESMTPSA id n10sm5883209pfh.121.2017.09.19.18.31.52
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 19 Sep 2017 18:31:54 -0700 (PDT)
Content-Type: multipart/alternative;
 boundary=Apple-Mail-3FF7B216-0132-4FF0-B3F0-1EC887A08862
Mime-Version: 1.0 (1.0)
From: Jim Manico <jim@manicode.com>
X-Mailer: iPhone Mail (14G60)
In-Reply-To: <CABRXCmwDQ_uZXDaaX6gxn_J_FnaCDucA-5uZwF6K1uHMQs6nzw@mail.gmail.com>
Date: Wed, 20 Sep 2017 09:31:48 +0800
Cc: nov matake <matake@gmail.com>, OAuth WG <oauth@ietf.org>
Content-Transfer-Encoding: 7bit
Message-Id: <1A823C26-FC05-48C1-A2E1-7B2B6A2607BB@manicode.com>
References: <CAKAMr-Dws2RVRLv+xTa7j2zk+yhpCpYN-jUgxFos+j--Abv4uQ@mail.gmail.com>
 <CABRXCmwKDOSQQrDdCVBkDWSi85A7FL_R9d9sNzgdBTE_HyKDMw@mail.gmail.com>
 <14E11D6D-3CA4-4945-93B5-96F40D17463E@oracle.com>
 <CAOahYUwYT-mFrdN-FvZArNCmVMn8G6X8504Z9EFY_rZ7A328qA@mail.gmail.com>
 <7630385B-8366-4B11-A5CA-BEE18F96AB8B@ve7jtb.com>
 <5C40C2B2-A673-4940-8376-55D448271A4C@gmail.com>
 <CABRXCmwDQ_uZXDaaX6gxn_J_FnaCDucA-5uZwF6K1uHMQs6nzw@mail.gmail.com>
To: Bill Burke <bburke@redhat.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/PyxPjqnBvuqa0opuoDtMnfNBdtA>
Subject: Re: [OAUTH-WG] Recommendations for browser-based apps
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.22
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, 20 Sep 2017 01:32:02 -0000


--Apple-Mail-3FF7B216-0132-4FF0-B3F0-1EC887A08862
Content-Type: text/plain;
	charset=utf-8
Content-Transfer-Encoding: quoted-printable

Not always, Bill. There is a new standard called "same site cookies" or "fir=
st party cookies" that allows you to programmatically remove this risk in so=
me modern browsers, it's worth reviewing.=20

https://tools.ietf.org/html/draft-west-first-party-cookies-07

It's live in Chrome and Opera and will only grow in support. http://caniuse.=
com/#search=3Dsamesite

Jim


> On Sep 20, 2017, at 8:44 AM, Bill Burke <bburke@redhat.com> wrote:
>=20
> Cookies are vulnerable to CXRF.
>=20
>> On Tue, Sep 19, 2017 at 7:48 PM, nov matake <matake@gmail.com> wrote:
>> Why not using http-only cookies instead of refresh tokens?
>> If the app can interact with AuthZ server through a hidden iframe with
>> prompt=3Dnone param, you shouldn=E2=80=99t need refresh tokens.
>>=20
>> If your SAP is running on a different domain with the backend server,
>> Safari=E2=80=99s Intelligent Tracking Prevention will break the hidden if=
rame way
>> though.
>>=20
>> On Sep 20, 2017, at 7:32, John Bradley <ve7jtb@ve7jtb.com> wrote:
>>=20
>> Right,  Refresh token is bearer for native apps, that is why we came up w=
ith
>> PKCE to protect code.
>>=20
>> For Angular the code flow with PKCE is probably better than the token
>> response type.
>>=20
>> However with bearer tokens it is still riskier than code with a confident=
ial
>> client so the AS should take that into account and not allow refresh toke=
ns
>> to live forever.
>>=20
>> One future way to protect refresh tokens and perhaps Access tokens is to u=
se
>> token binding to bind the tokens to the user agent.   You could do that n=
ow
>> for refresh tokens in Edge (Chrome has TB off by default still).
>>=20
>> I think more work needs to be done to come up with a best practice for SP=
A.
>>=20
>> John B.
>>=20
>> On Sep 19, 2017, at 7:02 PM, Adam Lewis <adam.lewis@motorolasolutions.com=
>
>> wrote:
>>=20
>> Only for confidential clients.  No authentication is required for public
>> clients.
>>=20
>> On Tue, Sep 19, 2017 at 4:47 PM, Phil Hunt (IDM) <phil.hunt@oracle.com>
>> wrote:
>>>=20
>>> Except a refresh token is not purely bearer. The client is required to
>>> authenticate to use it.
>>>=20
>>> Phil
>>>=20
>>>> On Sep 19, 2017, at 2:33 PM, Bill Burke <bburke@redhat.com> wrote:
>>>>=20
>>>> I'd be curious to the response to this too.
>>>>=20
>>>> Seems to me that refresh token has the same possible security risks in
>>>> an Angular app as an access token, except the refresh token is valid
>>>> longer....Still, if you did the implicit flow, you'd have to have
>>>> longer access token timeouts as it would be really annoying for the
>>>> user to have to login again and again in a long session with your
>>>> Angular app.
>>>>=20
>>>> We have a javascript adapter that does Authz Code Flow with PKCE for
>>>> our Angular app.  It also does CORS checks on the code to token XHR
>>>> request just in case on the IDP side.
>>>>=20
>>>>> On Tue, Sep 19, 2017 at 9:27 AM, Stefan B=C3=BCringer <sbueringer@gmai=
l.com>
>>>>> wrote:
>>>>> Hi,
>>>>>=20
>>>>> there were some discussions in January regarding recommendations for
>>>>> browser-based apps
>>>>> (https://www.ietf.org/mail-archive/web/oauth/current/msg16874.html).
>>>>>=20
>>>>> I'd just like to ask if the Authorization Code Flow with PKCE is a
>>>>> valid
>>>>> option for Single-Page-Applications (in our case Angular), because
>>>>> Implicit
>>>>> Flow cannot be used in our scenario.
>>>>>=20
>>>>> Authorization Code Flow with PKCE eliminates the necessity for client
>>>>> secrets, but our concern is that exposing the refresh token to the SPA=

>>>>> might
>>>>> be a security risk, compared to the Implicit Flow were no refresh toke=
n
>>>>> is
>>>>> exposed.
>>>>>=20
>>>>> What's your take on this?
>>>>>=20
>>>>> Kind regards,
>>>>> Stefan B=C3=BCringer
>>>>>=20
>>>>> P.S. I couldn't find that much on the internet regarding Authorization=

>>>>> Code
>>>>> Flow with PKCE in SPAs, if you have some recommendations for good blog=

>>>>> posts
>>>>> I would be grateful.
>>>>>=20
>>>>> _______________________________________________
>>>>> OAuth mailing list
>>>>> OAuth@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>>=20
>>>>=20
>>>>=20
>>>>=20
>>>> --
>>>> Bill Burke
>>>> Red Hat
>>>>=20
>>>> _______________________________________________
>>>> OAuth mailing list
>>>> OAuth@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>=20
>>> _______________________________________________
>>> OAuth mailing list
>>> OAuth@ietf.org
>>> https://www.ietf.org/mailman/listinfo/oauth
>>=20
>>=20
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org
>> https://www.ietf.org/mailman/listinfo/oauth
>>=20
>>=20
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org
>> https://www.ietf.org/mailman/listinfo/oauth
>>=20
>>=20
>>=20
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org
>> https://www.ietf.org/mailman/listinfo/oauth
>>=20
>=20
>=20
>=20
> --=20
> Bill Burke
> Red Hat
>=20
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth

--Apple-Mail-3FF7B216-0132-4FF0-B3F0-1EC887A08862
Content-Type: text/html;
	charset=utf-8
Content-Transfer-Encoding: quoted-printable

<html><head><meta http-equiv=3D"content-type" content=3D"text/html; charset=3D=
utf-8"></head><body dir=3D"auto"><div>Not always, Bill. There is a new stand=
ard called "same site cookies" or "first party cookies" that allows you to p=
rogrammatically remove this risk in some modern browsers, it's worth reviewi=
ng.&nbsp;</div><div><br></div><div><a href=3D"https://tools.ietf.org/html/dr=
aft-west-first-party-cookies-07">https://tools.ietf.org/html/draft-west-firs=
t-party-cookies-07</a></div><div><br></div><div><span style=3D"background-co=
lor: rgba(255, 255, 255, 0);">It's live in Chrome and Opera and will only gr=
ow in support.&nbsp;<a href=3D"http://caniuse.com/#search=3Dsamesite">http:/=
/caniuse.com/#search=3Dsamesite</a></span><br><br><div>Jim</div></div><div><=
br></div><div><br></div><div><div></div>On Sep 20, 2017, at 8:44 AM, Bill Bu=
rke &lt;<a href=3D"mailto:bburke@redhat.com">bburke@redhat.com</a>&gt; wrote=
:<br><br></div><blockquote type=3D"cite"><div><span>Cookies are vulnerable t=
o CXRF.</span><br><span></span><br><span>On Tue, Sep 19, 2017 at 7:48 PM, no=
v matake &lt;<a href=3D"mailto:matake@gmail.com">matake@gmail.com</a>&gt; wr=
ote:</span><br><blockquote type=3D"cite"><span>Why not using http-only cooki=
es instead of refresh tokens?</span><br></blockquote><blockquote type=3D"cit=
e"><span>If the app can interact with AuthZ server through a hidden iframe w=
ith</span><br></blockquote><blockquote type=3D"cite"><span>prompt=3Dnone par=
am, you shouldn=E2=80=99t need refresh tokens.</span><br></blockquote><block=
quote type=3D"cite"><span></span><br></blockquote><blockquote type=3D"cite">=
<span>If your SAP is running on a different domain with the backend server,<=
/span><br></blockquote><blockquote type=3D"cite"><span>Safari=E2=80=99s Inte=
lligent Tracking Prevention will break the hidden iframe way</span><br></blo=
ckquote><blockquote type=3D"cite"><span>though.</span><br></blockquote><bloc=
kquote type=3D"cite"><span></span><br></blockquote><blockquote type=3D"cite"=
><span>On Sep 20, 2017, at 7:32, John Bradley &lt;<a href=3D"mailto:ve7jtb@v=
e7jtb.com">ve7jtb@ve7jtb.com</a>&gt; wrote:</span><br></blockquote><blockquo=
te type=3D"cite"><span></span><br></blockquote><blockquote type=3D"cite"><sp=
an>Right, &nbsp;Refresh token is bearer for native apps, that is why we came=
 up with</span><br></blockquote><blockquote type=3D"cite"><span>PKCE to prot=
ect code.</span><br></blockquote><blockquote type=3D"cite"><span></span><br>=
</blockquote><blockquote type=3D"cite"><span>For Angular the code flow with P=
KCE is probably better than the token</span><br></blockquote><blockquote typ=
e=3D"cite"><span>response type.</span><br></blockquote><blockquote type=3D"c=
ite"><span></span><br></blockquote><blockquote type=3D"cite"><span>However w=
ith bearer tokens it is still riskier than code with a confidential</span><b=
r></blockquote><blockquote type=3D"cite"><span>client so the AS should take t=
hat into account and not allow refresh tokens</span><br></blockquote><blockq=
uote type=3D"cite"><span>to live forever.</span><br></blockquote><blockquote=
 type=3D"cite"><span></span><br></blockquote><blockquote type=3D"cite"><span=
>One future way to protect refresh tokens and perhaps Access tokens is to us=
e</span><br></blockquote><blockquote type=3D"cite"><span>token binding to bi=
nd the tokens to the user agent. &nbsp;&nbsp;You could do that now</span><br=
></blockquote><blockquote type=3D"cite"><span>for refresh tokens in Edge (Ch=
rome has TB off by default still).</span><br></blockquote><blockquote type=3D=
"cite"><span></span><br></blockquote><blockquote type=3D"cite"><span>I think=
 more work needs to be done to come up with a best practice for SPA.</span><=
br></blockquote><blockquote type=3D"cite"><span></span><br></blockquote><blo=
ckquote type=3D"cite"><span>John B.</span><br></blockquote><blockquote type=3D=
"cite"><span></span><br></blockquote><blockquote type=3D"cite"><span>On Sep 1=
9, 2017, at 7:02 PM, Adam Lewis &lt;<a href=3D"mailto:adam.lewis@motorolasol=
utions.com">adam.lewis@motorolasolutions.com</a>&gt;</span><br></blockquote>=
<blockquote type=3D"cite"><span>wrote:</span><br></blockquote><blockquote ty=
pe=3D"cite"><span></span><br></blockquote><blockquote type=3D"cite"><span>On=
ly for confidential clients. &nbsp;No authentication is required for public<=
/span><br></blockquote><blockquote type=3D"cite"><span>clients.</span><br></=
blockquote><blockquote type=3D"cite"><span></span><br></blockquote><blockquo=
te type=3D"cite"><span>On Tue, Sep 19, 2017 at 4:47 PM, Phil Hunt (IDM) &lt;=
<a href=3D"mailto:phil.hunt@oracle.com">phil.hunt@oracle.com</a>&gt;</span><=
br></blockquote><blockquote type=3D"cite"><span>wrote:</span><br></blockquot=
e><blockquote type=3D"cite"><blockquote type=3D"cite"><span></span><br></blo=
ckquote></blockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><sp=
an>Except a refresh token is not purely bearer. The client is required to</s=
pan><br></blockquote></blockquote><blockquote type=3D"cite"><blockquote type=
=3D"cite"><span>authenticate to use it.</span><br></blockquote></blockquote>=
<blockquote type=3D"cite"><blockquote type=3D"cite"><span></span><br></block=
quote></blockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><span=
>Phil</span><br></blockquote></blockquote><blockquote type=3D"cite"><blockqu=
ote type=3D"cite"><span></span><br></blockquote></blockquote><blockquote typ=
e=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><span>On Sep 1=
9, 2017, at 2:33 PM, Bill Burke &lt;<a href=3D"mailto:bburke@redhat.com">bbu=
rke@redhat.com</a>&gt; wrote:</span><br></blockquote></blockquote></blockquo=
te><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"c=
ite"><span></span><br></blockquote></blockquote></blockquote><blockquote typ=
e=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><span>I'd be c=
urious to the response to this too.</span><br></blockquote></blockquote></bl=
ockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote typ=
e=3D"cite"><span></span><br></blockquote></blockquote></blockquote><blockquo=
te type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><span>S=
eems to me that refresh token has the same possible security risks in</span>=
<br></blockquote></blockquote></blockquote><blockquote type=3D"cite"><blockq=
uote type=3D"cite"><blockquote type=3D"cite"><span>an Angular app as an acce=
ss token, except the refresh token is valid</span><br></blockquote></blockqu=
ote></blockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockq=
uote type=3D"cite"><span>longer....Still, if you did the implicit flow, you'=
d have to have</span><br></blockquote></blockquote></blockquote><blockquote t=
ype=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><span>longe=
r access token timeouts as it would be really annoying for the</span><br></b=
lockquote></blockquote></blockquote><blockquote type=3D"cite"><blockquote ty=
pe=3D"cite"><blockquote type=3D"cite"><span>user to have to login again and a=
gain in a long session with your</span><br></blockquote></blockquote></block=
quote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D=
"cite"><span>Angular app.</span><br></blockquote></blockquote></blockquote><=
blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"=
><span></span><br></blockquote></blockquote></blockquote><blockquote type=3D=
"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><span>We have a j=
avascript adapter that does Authz Code Flow with PKCE for</span><br></blockq=
uote></blockquote></blockquote><blockquote type=3D"cite"><blockquote type=3D=
"cite"><blockquote type=3D"cite"><span>our Angular app. &nbsp;It also does C=
ORS checks on the code to token XHR</span><br></blockquote></blockquote></bl=
ockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote typ=
e=3D"cite"><span>request just in case on the IDP side.</span><br></blockquot=
e></blockquote></blockquote><blockquote type=3D"cite"><blockquote type=3D"ci=
te"><blockquote type=3D"cite"><span></span><br></blockquote></blockquote></b=
lockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote ty=
pe=3D"cite"><blockquote type=3D"cite"><span>On Tue, Sep 19, 2017 at 9:27 AM,=
 Stefan B=C3=BCringer &lt;<a href=3D"mailto:sbueringer@gmail.com">sbueringer=
@gmail.com</a>&gt;</span><br></blockquote></blockquote></blockquote></blockq=
uote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D=
"cite"><blockquote type=3D"cite"><span>wrote:</span><br></blockquote></block=
quote></blockquote></blockquote><blockquote type=3D"cite"><blockquote type=3D=
"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><span>Hi,</span><=
br></blockquote></blockquote></blockquote></blockquote><blockquote type=3D"c=
ite"><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D=
"cite"><span></span><br></blockquote></blockquote></blockquote></blockquote>=
<blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite=
"><blockquote type=3D"cite"><span>there were some discussions in January reg=
arding recommendations for</span><br></blockquote></blockquote></blockquote>=
</blockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote=
 type=3D"cite"><blockquote type=3D"cite"><span>browser-based apps</span><br>=
</blockquote></blockquote></blockquote></blockquote><blockquote type=3D"cite=
"><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"ci=
te"><span>(<a href=3D"https://www.ietf.org/mail-archive/web/oauth/current/ms=
g16874.html">https://www.ietf.org/mail-archive/web/oauth/current/msg16874.ht=
ml</a>).</span><br></blockquote></blockquote></blockquote></blockquote><bloc=
kquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><bl=
ockquote type=3D"cite"><span></span><br></blockquote></blockquote></blockquo=
te></blockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockqu=
ote type=3D"cite"><blockquote type=3D"cite"><span>I'd just like to ask if th=
e Authorization Code Flow with PKCE is a</span><br></blockquote></blockquote=
></blockquote></blockquote><blockquote type=3D"cite"><blockquote type=3D"cit=
e"><blockquote type=3D"cite"><blockquote type=3D"cite"><span>valid</span><br=
></blockquote></blockquote></blockquote></blockquote><blockquote type=3D"cit=
e"><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"c=
ite"><span>option for Single-Page-Applications (in our case Angular), becaus=
e</span><br></blockquote></blockquote></blockquote></blockquote><blockquote t=
ype=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote=
 type=3D"cite"><span>Implicit</span><br></blockquote></blockquote></blockquo=
te></blockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockqu=
ote type=3D"cite"><blockquote type=3D"cite"><span>Flow cannot be used in our=
 scenario.</span><br></blockquote></blockquote></blockquote></blockquote><bl=
ockquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><=
blockquote type=3D"cite"><span></span><br></blockquote></blockquote></blockq=
uote></blockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><block=
quote type=3D"cite"><blockquote type=3D"cite"><span>Authorization Code Flow w=
ith PKCE eliminates the necessity for client</span><br></blockquote></blockq=
uote></blockquote></blockquote><blockquote type=3D"cite"><blockquote type=3D=
"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><span>secrets, bu=
t our concern is that exposing the refresh token to the SPA</span><br></bloc=
kquote></blockquote></blockquote></blockquote><blockquote type=3D"cite"><blo=
ckquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><s=
pan>might</span><br></blockquote></blockquote></blockquote></blockquote><blo=
ckquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><b=
lockquote type=3D"cite"><span>be a security risk, compared to the Implicit Fl=
ow were no refresh token</span><br></blockquote></blockquote></blockquote></=
blockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote t=
ype=3D"cite"><blockquote type=3D"cite"><span>is</span><br></blockquote></blo=
ckquote></blockquote></blockquote><blockquote type=3D"cite"><blockquote type=
=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><span>exposed.=
</span><br></blockquote></blockquote></blockquote></blockquote><blockquote t=
ype=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote=
 type=3D"cite"><span></span><br></blockquote></blockquote></blockquote></blo=
ckquote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=
=3D"cite"><blockquote type=3D"cite"><span>What's your take on this?</span><b=
r></blockquote></blockquote></blockquote></blockquote><blockquote type=3D"ci=
te"><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"=
cite"><span></span><br></blockquote></blockquote></blockquote></blockquote><=
blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"=
><blockquote type=3D"cite"><span>Kind regards,</span><br></blockquote></bloc=
kquote></blockquote></blockquote><blockquote type=3D"cite"><blockquote type=3D=
"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><span>Stefan B=C3=
=BCringer</span><br></blockquote></blockquote></blockquote></blockquote><blo=
ckquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><b=
lockquote type=3D"cite"><span></span><br></blockquote></blockquote></blockqu=
ote></blockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockq=
uote type=3D"cite"><blockquote type=3D"cite"><span>P.S. I couldn't find that=
 much on the internet regarding Authorization</span><br></blockquote></block=
quote></blockquote></blockquote><blockquote type=3D"cite"><blockquote type=3D=
"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><span>Code</span>=
<br></blockquote></blockquote></blockquote></blockquote><blockquote type=3D"=
cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D=
"cite"><span>Flow with PKCE in SPAs, if you have some recommendations for go=
od blog</span><br></blockquote></blockquote></blockquote></blockquote><block=
quote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><blo=
ckquote type=3D"cite"><span>posts</span><br></blockquote></blockquote></bloc=
kquote></blockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><blo=
ckquote type=3D"cite"><blockquote type=3D"cite"><span>I would be grateful.</=
span><br></blockquote></blockquote></blockquote></blockquote><blockquote typ=
e=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote t=
ype=3D"cite"><span></span><br></blockquote></blockquote></blockquote></block=
quote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D=
"cite"><blockquote type=3D"cite"><span>_____________________________________=
__________</span><br></blockquote></blockquote></blockquote></blockquote><bl=
ockquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><=
blockquote type=3D"cite"><span>OAuth mailing list</span><br></blockquote></b=
lockquote></blockquote></blockquote><blockquote type=3D"cite"><blockquote ty=
pe=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><span><a hre=
f=3D"mailto:OAuth@ietf.org">OAuth@ietf.org</a></span><br></blockquote></bloc=
kquote></blockquote></blockquote><blockquote type=3D"cite"><blockquote type=3D=
"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><span><a href=3D"=
https://www.ietf.org/mailman/listinfo/oauth">https://www.ietf.org/mailman/li=
stinfo/oauth</a></span><br></blockquote></blockquote></blockquote></blockquo=
te><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"c=
ite"><blockquote type=3D"cite"><span></span><br></blockquote></blockquote></=
blockquote></blockquote><blockquote type=3D"cite"><blockquote type=3D"cite">=
<blockquote type=3D"cite"><span></span><br></blockquote></blockquote></block=
quote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D=
"cite"><span></span><br></blockquote></blockquote></blockquote><blockquote t=
ype=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><span></spa=
n><br></blockquote></blockquote></blockquote><blockquote type=3D"cite"><bloc=
kquote type=3D"cite"><blockquote type=3D"cite"><span>--</span><br></blockquo=
te></blockquote></blockquote><blockquote type=3D"cite"><blockquote type=3D"c=
ite"><blockquote type=3D"cite"><span>Bill Burke</span><br></blockquote></blo=
ckquote></blockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><bl=
ockquote type=3D"cite"><span>Red Hat</span><br></blockquote></blockquote></b=
lockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><blockquote ty=
pe=3D"cite"><span></span><br></blockquote></blockquote></blockquote><blockqu=
ote type=3D"cite"><blockquote type=3D"cite"><blockquote type=3D"cite"><span>=
_______________________________________________</span><br></blockquote></blo=
ckquote></blockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><bl=
ockquote type=3D"cite"><span>OAuth mailing list</span><br></blockquote></blo=
ckquote></blockquote><blockquote type=3D"cite"><blockquote type=3D"cite"><bl=
ockquote type=3D"cite"><span><a href=3D"mailto:OAuth@ietf.org">OAuth@ietf.or=
g</a></span><br></blockquote></blockquote></blockquote><blockquote type=3D"c=
ite"><blockquote type=3D"cite"><blockquote type=3D"cite"><span><a href=3D"ht=
tps://www.ietf.org/mailman/listinfo/oauth">https://www.ietf.org/mailman/list=
info/oauth</a></span><br></blockquote></blockquote></blockquote><blockquote t=
ype=3D"cite"><blockquote type=3D"cite"><span></span><br></blockquote></block=
quote><blockquote type=3D"cite"><blockquote type=3D"cite"><span>____________=
___________________________________</span><br></blockquote></blockquote><blo=
ckquote type=3D"cite"><blockquote type=3D"cite"><span>OAuth mailing list</sp=
an><br></blockquote></blockquote><blockquote type=3D"cite"><blockquote type=3D=
"cite"><span><a href=3D"mailto:OAuth@ietf.org">OAuth@ietf.org</a></span><br>=
</blockquote></blockquote><blockquote type=3D"cite"><blockquote type=3D"cite=
"><span><a href=3D"https://www.ietf.org/mailman/listinfo/oauth">https://www.=
ietf.org/mailman/listinfo/oauth</a></span><br></blockquote></blockquote><blo=
ckquote type=3D"cite"><span></span><br></blockquote><blockquote type=3D"cite=
"><span></span><br></blockquote><blockquote type=3D"cite"><span>____________=
___________________________________</span><br></blockquote><blockquote type=3D=
"cite"><span>OAuth mailing list</span><br></blockquote><blockquote type=3D"c=
ite"><span><a href=3D"mailto:OAuth@ietf.org">OAuth@ietf.org</a></span><br></=
blockquote><blockquote type=3D"cite"><span><a href=3D"https://www.ietf.org/m=
ailman/listinfo/oauth">https://www.ietf.org/mailman/listinfo/oauth</a></span=
><br></blockquote><blockquote type=3D"cite"><span></span><br></blockquote><b=
lockquote type=3D"cite"><span></span><br></blockquote><blockquote type=3D"ci=
te"><span>_______________________________________________</span><br></blockq=
uote><blockquote type=3D"cite"><span>OAuth mailing list</span><br></blockquo=
te><blockquote type=3D"cite"><span><a href=3D"mailto:OAuth@ietf.org">OAuth@i=
etf.org</a></span><br></blockquote><blockquote type=3D"cite"><span><a href=3D=
"https://www.ietf.org/mailman/listinfo/oauth">https://www.ietf.org/mailman/l=
istinfo/oauth</a></span><br></blockquote><blockquote type=3D"cite"><span></s=
pan><br></blockquote><blockquote type=3D"cite"><span></span><br></blockquote=
><blockquote type=3D"cite"><span></span><br></blockquote><blockquote type=3D=
"cite"><span>_______________________________________________</span><br></blo=
ckquote><blockquote type=3D"cite"><span>OAuth mailing list</span><br></block=
quote><blockquote type=3D"cite"><span><a href=3D"mailto:OAuth@ietf.org">OAut=
h@ietf.org</a></span><br></blockquote><blockquote type=3D"cite"><span><a hre=
f=3D"https://www.ietf.org/mailman/listinfo/oauth">https://www.ietf.org/mailm=
an/listinfo/oauth</a></span><br></blockquote><blockquote type=3D"cite"><span=
></span><br></blockquote><span></span><br><span></span><br><span></span><br>=
<span>-- </span><br><span>Bill Burke</span><br><span>Red Hat</span><br><span=
></span><br><span>_______________________________________________</span><br>=
<span>OAuth mailing list</span><br><span><a href=3D"mailto:OAuth@ietf.org">O=
Auth@ietf.org</a></span><br><span><a href=3D"https://www.ietf.org/mailman/li=
stinfo/oauth">https://www.ietf.org/mailman/listinfo/oauth</a></span><br></di=
v></blockquote></body></html>=

--Apple-Mail-3FF7B216-0132-4FF0-B3F0-1EC887A08862--

