Re: [OAUTH-WG] [Openid-specs-ab] OAuth Security Topics -- Recommend authorization code instead of implicit

William Denniss <wdenniss@google.com> Tue, 27 November 2018 20:54 UTC

Return-Path: <wdenniss@google.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 9D40F130DC9 for <oauth@ietfa.amsl.com>; Tue, 27 Nov 2018 12:54:34 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -18.959
X-Spam-Level:
X-Spam-Status: No, score=-18.959 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-1.459, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5, USER_IN_DEF_SPF_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.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 LlsZvYjwYwmz for <oauth@ietfa.amsl.com>; Tue, 27 Nov 2018 12:54:30 -0800 (PST)
Received: from mail-it1-x134.google.com (mail-it1-x134.google.com [IPv6:2607:f8b0:4864:20::134]) (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 5B07A130934 for <oauth@ietf.org>; Tue, 27 Nov 2018 12:54:30 -0800 (PST)
Received: by mail-it1-x134.google.com with SMTP id h193so737746ita.5 for <oauth@ietf.org>; Tue, 27 Nov 2018 12:54:30 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=M+9S2E0aPpbTTsG0W8I2YPQ+TilDV0y/mzsH6d5YjzQ=; b=prG06/2h5VK80mKhcvNuvX3zbrYITxOVXln5rTtoZNdZsnlCozb9kGkXtv760u/cmS fSPBK/WfT1fkUf1EJlvAnktPHiSOFH5vctT/OMsQP1h1fSfxJn+lGiAK59M/fdh/YKjW hICZBFFl/1dWCkXfibRzQnev97aIvvPQ9z7bfPVpkIdFVdRxJ3xmAX0MJCua/NPj56Oc ThZ5X8eaaFS2e0r3XkdfwCr7D4uZdGDKIvZqBU6f65m5QecKaGohwGoAYtMzkD5vShPB 8b6NPBU8AdZjpdmNmzQm8teA0yBgWUHPTKzPsrAqeuvvvYl43kFXo/O+VbYAxMUu4Iid y3Wg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=M+9S2E0aPpbTTsG0W8I2YPQ+TilDV0y/mzsH6d5YjzQ=; b=Ejs5Z2ddPTqfr0bBkww5a80DQqlSWO5+Yz9V1/SsezGP3AtCTOXE9IVPDg7HWD5Ujg ODZbGjwqHZFMGYTxmLC8eUNlDcWA+WnyU/UCl2DmnZdMnjEDolGSQIY8viQ8UsbhHcNC 2HgYOxQeMKN5dOh/5FNIwBZm+ATQN+xb6ZGYKrrXicSkzuiPeShx9WMYE9FoQUWNSwdv OU75I0Kk2bJv2sP/SjwZh+qdmbA9v193SP0M0Rkf634+x/hVT75a6PvkE4+ncRH/iKKX Y/lR7JWFzA8J+7tQt8ExdksGjgoBCZo4+jd9HN1xQywS6udduAj4RW/ieW6I9JD7Xcpu YQIQ==
X-Gm-Message-State: AA+aEWaNmBl64K2ts+837i+uUN698l9zT//Y2JAZMHiY9AcxMTLewUCi s33/EQ1pz/h0rR84FBKgs6XkMSEdknODMoobsae4wA==
X-Google-Smtp-Source: AFSGD/V6kXV6Jc2POPJj1yG8+rNI/yjRwj9DBHDq/GOZvQTRDcuHhXin07S/kgHQdsJrPEDq/29O5xfzX18OxlX10HQ=
X-Received: by 2002:a24:6254:: with SMTP id d81mr511115itc.162.1543352069112; Tue, 27 Nov 2018 12:54:29 -0800 (PST)
MIME-Version: 1.0
Received: by 2002:a6b:5102:0:0:0:0:0 with HTTP; Tue, 27 Nov 2018 12:54:07 -0800 (PST)
In-Reply-To: <99e3a87e-1904-b756-d3c2-936ea5bb5b6e@ve7jtb.com>
References: <VI1PR0801MB211266BA6F6E06FFB3081425FAD80@VI1PR0801MB2112.eurprd08.prod.outlook.com> <5494f764-2d14-089a-8fe8-132a65e32d5e@manicode.com> <8935ff0f-aeab-c773-5e2d-6fedcc29119d@connect2id.com> <CABzCy2D0JAr-C1-jTcodpBdoUNx1We3JDg-PMcsOBL1Ga_m-Hw@mail.gmail.com> <2297d085-28f2-15dd-6dba-937dce9f2122@manicode.com> <CABzCy2AW0dvmEqfHgd=-ULdYSxnUXwrz6jiCBpKw7MQSu-YFbA@mail.gmail.com> <327B68FD-9449-4809-A3B8-BC79C5B1D42C@lodderstedt.net> <CAANoGhK9cYS8NFrpwczVsifz7pdraqOZpBoDHFZkg_qKdj4Vqg@mail.gmail.com> <E7BA53F0-B925-4C47-9C41-CFBC0EB36D18@lodderstedt.net> <99e3a87e-1904-b756-d3c2-936ea5bb5b6e@ve7jtb.com>
From: William Denniss <wdenniss@google.com>
Date: Tue, 27 Nov 2018 12:54:07 -0800
Message-ID: <CAAP42hBf3DK6Qshg8OffsZnQYjwWwjXAPFptEiikY7YTiWwAFw@mail.gmail.com>
To: Artifact Binding/Connect Working Group <openid-specs-ab@lists.openid.net>
Cc: Torsten Lodderstedt <torsten@lodderstedt.net>, John Bradley <ve7jtb@ve7jtb.com>, oauth <oauth@ietf.org>, Jim Manico <jim@manicode.com>
Content-Type: multipart/alternative; boundary="000000000000d84dad057baba74e"
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/yOMXtQY0p_DY96pdyroxADn5g_w>
Subject: Re: [OAUTH-WG] [Openid-specs-ab] OAuth Security Topics -- Recommend authorization code instead of implicit
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.29
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: Tue, 27 Nov 2018 20:54:39 -0000

In BCP 212 we currently recommend against using implicit flow for native
apps (Section 8.2), due to the inability to protect against interception
with PKCE. AppAuth iOS & Android don't implement it, and the JS version
didn't initially although it was requested by users who needed to do
implicit auth and was eventually supported.

To me the usefulness of implicit on the web is limited, as the code flow
can be used for public clients anyway. The one place I've seen implicit
come up in discussions was for situations where reducing complexity for
third-party developers who needed to implement an OAuth server was a high
priority (one less endpoint to implement).

+1 to have language recommending against the use in most cases (without
needing to exclude Nat's use-case). The code flow has better security
properties, and reducing optionality in the spec reduces the surface area
and simplifies implementations.


On Tue, Nov 27, 2018 at 12:36 PM, John Bradley via Openid-specs-ab <
openid-specs-ab@lists.openid.net> wrote:

> I understand that, but hat is Nat's concern as I understand it.
>
> When we say no implicit people, have a problem because implicit is
> imprecise.
>
> We are saying no AT returned in the response from the authorization
> endpoint.
>
> Nat points out that id_token may contain AT for the self issued client.
>
> So unless we say that is OK if the AT are sender constrained we wind up
> implying that a OpenID profile of OAuth is in violation of the BCP.
>
> I am just trying to make sure everyone is on the same page with why Nat
> was -1.
>
> It really has nothing to do with the SPA use case.
>
> John B.
>
>
> On 11/27/2018 5:28 PM, Torsten Lodderstedt wrote:
>
>> Hi John,
>>
>> as you said, self issued IDPs (https://openid.net/specs/open
>> id-connect-core-1_0.html#SelfIssued) are supposed to provide the
>> response type „id_token“ only. I don’t think the proposal being discussed
>> here is related to this OIDC mode.
>>
>> best regards,
>> Torsten.
>>
>> Am 27.11.2018 um 20:54 schrieb John Bradley <ve7jtb@ve7jtb.com>:
>>>
>>> I talked to Nat about this a bit today.
>>>
>>> The thing he is concerned about is mostly around the self issued IDP
>>> that doesn't have a token endpoint(atleast not easaly).
>>>
>>> The main use case for that is the id_token response type where claims
>>> are retuned in the id_token.
>>>
>>> Because it is fragment encoded some people call that implicit.   That is
>>> not what we are trying to stop.
>>>
>>> In some cases in that flow there may be distributed claims returned with
>>> access Token inside the id_token.    I think most people would agree that
>>> those should be pop or sender constrained tokens.
>>>
>>> In the case of self issued the RP would be a server and could do sender
>>> constrained via some mechinisim that is yet to be defined.
>>>
>>> So if someone wanted to return a access token in a id_token to do
>>> distributed claims I don't think we have a problem with that as long as the
>>> token is protected by being sender constrained in some reasonable way.
>>>
>>> This is a touch hypothetical from the basic OAuth perspective, so I
>>> don't know how deep we want to go into it.
>>>
>>> I think the point is not to accidently prohibit something that could be
>>> done in future.
>>>
>>> I also think we should not conflate confidential clients that can
>>> authenticate to the token endpoint with sender constrained/PoP clients that
>>> can deal with bound tokens.   Yes both have keys but it is better to
>>> describe them separately.
>>>
>>> John B.
>>>
>>> On Tue, Nov 27, 2018, 4:30 PM Torsten Lodderstedt via Openid-specs-ab <
>>> openid-specs-ab@lists.openid.net wrote:
>>> Hi Nat,
>>>
>>> I understand you are saying your draft could provide clients with an
>>> application level mechanism to sender constrain access tokens. That’s great!
>>>
>>> But I don’t see a binding to response type „token id_token“. Why do you
>>> want to expose the tokens via the URL to attackers?
>>>
>>> You could easily use your mechanism with code. That would also give you
>>> the chance to really authenticate the confidential client before you issue
>>> the token.
>>>
>>> kind regards,
>>> Torsten.
>>>
>>> Am 27.11.2018 um 16:57 schrieb Nat Sakimura <sakimura@gmail.com>:
>>>>
>>>> I am not talking about SPA.
>>>> The client is a regular confidential client that is running on a server.
>>>>
>>>> Best,
>>>>
>>>> Nat Sakimura
>>>>
>>>>
>>>> 2018年11月27日(火) 16:55 Jim Manico <jim@manicode.com>:
>>>> Nat,
>>>>
>>>> How is proof of possession established in a modern web browser in the
>>>> implicit flow?
>>>>
>>>> My understanding is that token binding was removed from Chrome recently
>>>> effectively killing browser-based PoP tokens.
>>>>
>>>> https://identiverse.com/2018/10/31/chrome-puts-token-binding-in-a-bind/
>>>>
>>>> Am I missing something?
>>>>
>>>> Aloha, Jim
>>>>
>>>>
>>>>
>>>> On 11/27/18 9:00 PM, Nat Sakimura wrote:
>>>>
>>>>> I am actually -1.
>>>>>
>>>>> +1 for public client and the tokens that are not sender/key
>>>>> constrained.
>>>>>
>>>>> Just not being used right now does not mean that it is not useful.. In
>>>>> fact, I see it coming.
>>>>> Implicit (well, Hybrid “token id_token” really) is very useful in
>>>>> certain cases.
>>>>> Specifically, when the client is confidential (based on public key
>>>>> pair), and uses sender constrained (key-constrained) token such as the one
>>>>> explained in https://tools.ietf.org/html/dr
>>>>> aft-sakimura-oauth-jpop-04#section-5, it is very useful.
>>>>> (Key-constrained token is the remaining portion of this draft that did
>>>>> not get incorporated in the MTLS draft. )
>>>>> In fact it is the only viable method for Self-Issued OpenID Provider.
>>>>>
>>>>> So, the text is generally good but it needs to be constrained like
>>>>> “Unless the client is confidential and the access token issued is key
>>>>> constrained, ... “
>>>>>
>>>>> Best,
>>>>>
>>>>> Nat Sakimura
>>>>>
>>>>>
>>>>> 2018年11月27日(火) 16:01 Vladimir Dzhuvinov <vladimir@connect2id.com>:
>>>>> +1 to recommend the deprecation of implicit.
>>>>>
>>>>> I don't see a compelling reason to keep implicit when there is an
>>>>> established alternative that is more secure.
>>>>>
>>>>> Our duty as WG is to give developers the best and most sensible
>>>>> practice.
>>>>>
>>>>> CORS adoption is currently at 94% according to
>>>>> https://caniuse.com/#feat=cors
>>>>>
>>>>> Vladimir
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> OAuth mailing list
>>>>> OAuth@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>> --
>>>>> Nat Sakimura (=nat)
>>>>> Chairman, OpenID Foundation
>>>>> http://nat..sakimura.org/
>>>>> @_nat_en
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> OAuth mailing list
>>>>>
>>>>> OAuth@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>>
>>>> --
>>>> Jim Manico
>>>> Manicode Security
>>>>
>>>> https://www.manicode.com
>>>> --
>>>> Nat Sakimura (=nat)
>>>> Chairman, OpenID Foundation
>>>> http://nat.sakimura.org/
>>>> @_nat_en
>>>> _______________________________________________
>>>> OAuth mailing list
>>>> OAuth@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>
>>> _______________________________________________
>>> Openid-specs-ab mailing list
>>> Openid-specs-ab@lists.openid.net
>>> http://lists.openid.net/mailman/listinfo/openid-specs-ab
>>>
>> _______________________________________________
> Openid-specs-ab mailing list
> Openid-specs-ab@lists.openid.net
> http://lists.openid.net/mailman/listinfo/openid-specs-ab
>