Re: [OAUTH-WG] We appear to still be litigating OAuth, oops

Aaron Parecki <aaron@parecki.com> Fri, 26 February 2021 16:33 UTC

Return-Path: <aaron@parecki.com>
X-Original-To: ietf@ietfa.amsl.com
Delivered-To: ietf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1F9F53A126C for <ietf@ietfa.amsl.com>; Fri, 26 Feb 2021 08:33:15 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.088
X-Spam-Level:
X-Spam-Status: No, score=-2.088 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, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=parecki.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 dUzLSDJMkFSl for <ietf@ietfa.amsl.com>; Fri, 26 Feb 2021 08:33:11 -0800 (PST)
Received: from mail-io1-xd2b.google.com (mail-io1-xd2b.google.com [IPv6:2607:f8b0:4864:20::d2b]) (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 40FB03A124F for <ietf@ietf.org>; Fri, 26 Feb 2021 08:33:05 -0800 (PST)
Received: by mail-io1-xd2b.google.com with SMTP id u8so10183227ior.13 for <ietf@ietf.org>; Fri, 26 Feb 2021 08:33:05 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=parecki.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=5lG4VH5IQIXDYRIlPnfjVvrFDfUuFmq+Up73Oz2NhIs=; b=GAMZlId9lPPKufv6WIQNcYuQHJtRA0JCfRadodDjReBHTgcUHJnsecKMsXq6adqVGP ic+4kM00H8Ne22LEEq9cgiMnPUfei3iV5mrj+lh9Ap00Gmzmj8a9+tY7sNhtmlCTm2Mu r8s5xE2C4POVUkk9kSyduvhyUXPZJ48IFfhvDLaMqP2XsyEQywioJFi6uMNMn9dxbKTW VdnZjlSEHkQ9RJ0if9jrgZcU8kWEMTSA3mWi9i1FWsnl59/cl7QxzbKUb79dSagvZuy8 2AMOHWl7S+8fakfSlX/euPLU5ezSZBDuVPAR8h1q8XhGCN+YDMXvnKvt1rvyGXga+iaY pbkQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=5lG4VH5IQIXDYRIlPnfjVvrFDfUuFmq+Up73Oz2NhIs=; b=d8TIO5IW6m4fPnuKNrO4n50CSpNxOoyIgGX35wVStbOJw6owbChKSEG045YLLdrupW fl2+nUTahQ8bKFhpSFE4VlAZN0SkGtytg/pQuBAaiZsAVHdldlDPmWgPyxXUaX7ShBey NkgLCrxQS1AJZ4WRN5v5oZHUoIV7bEXOwDsvN5m0wY8mOAG2RyB/wi+dCtgHU2Hl7W6O 7dKSnsSMFWksH7vHxpFSWmU7fqn5YYQEnjHjNvUMSPi5oIYamrHzAiPz5qoiTM7g+wp/ I0gq+wE8BSOIR2CCTZhzKhCLYCCIeZ6/aAPxZtmbsV4nhkuHcZtYKJwkIMHyOJajHyAz OX6A==
X-Gm-Message-State: AOAM533RTAHQm20WSGMGwCAGgUcyVbUeXOAZzQnVMSrK/62G/pXU+qBV l3wC3xHwHenlir5yzfXj1Y9e/qHj+SM9aw==
X-Google-Smtp-Source: ABdhPJwJNyRLe0TSMFl1U4uTimg37B6V6gbAxOo4jn4ceU8rM+u7at7g+XndRSa/kUE0O1rKVd+FYg==
X-Received: by 2002:a02:3541:: with SMTP id y1mr3704775jae.66.1614357183627; Fri, 26 Feb 2021 08:33:03 -0800 (PST)
Received: from mail-io1-f52.google.com (mail-io1-f52.google.com. [209.85.166.52]) by smtp.gmail.com with ESMTPSA id m19sm4950967ila.81.2021.02.26.08.33.02 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 26 Feb 2021 08:33:03 -0800 (PST)
Received: by mail-io1-f52.google.com with SMTP id n14so10230559iog.3; Fri, 26 Feb 2021 08:33:02 -0800 (PST)
X-Received: by 2002:a6b:7e02:: with SMTP id i2mr3387744iom.120.1614357182437; Fri, 26 Feb 2021 08:33:02 -0800 (PST)
MIME-Version: 1.0
References: <CAMm+LwgbK3HYDjSHnTN3f6hWSQCQrEjHLNn6z0JpfY7hdxaQpg@mail.gmail.com> <A8128346-B557-472F-B94F-8F624F955FCE@manicode.com> <eb2eaaa7-7f7e-4170-ab87-1cc1fdd3359b@www.fastmail.com> <CAJot-L0PS_3LxEkC-jd1aqXDdYF+z8BajSs4Rhx3LgRPn6wkdQ@mail.gmail.com> <DAB127D7-809F-4EC2-A043-9B15E2DB8E07@tzi.org> <CAJot-L1e8GegjXjADRQ87tGqnSREoO4bEKLX+kPkZFsQpevGQA@mail.gmail.com> <66be0ffe-a638-45a0-ba05-1585ea02e6bf@www.fastmail.com> <CAJot-L2KO2dOzZQJJeB1kbk6_KTQwUYUsoJOoRt=9maynS1jZg@mail.gmail.com> <121f52be-4747-45f3-ad75-79fa2f693d75@beta.fastmail.com> <E84B4446-5F74-402B-8071-A1164EF0B02C@mit.edu> <6b5d0e34-340f-4f93-83ef-817d4624ec7d@dogfood.fastmail.com> <CAPLh0AMfncjJ0iaZ5gmzrh1D0Z7WCOtG-+6GZkmzfQuAttsBtw@mail.gmail.com> <CAPLh0AMEnbak8=6boESQCgTd=Au4V9O=wCqGCz5qEU-d3y0g5g@mail.gmail.com> <6E2CD5EE-55D9-403A-835D-032ECA39CBFB@mit.edu> <CAJot-L1x_AxjQAH7uJ+GsW1jcc93b8ijJ7uyiVRRDZtZf=NXCw@mail.gmail.com>
In-Reply-To: <CAJot-L1x_AxjQAH7uJ+GsW1jcc93b8ijJ7uyiVRRDZtZf=NXCw@mail.gmail.com>
From: Aaron Parecki <aaron@parecki.com>
Date: Fri, 26 Feb 2021 08:32:51 -0800
X-Gmail-Original-Message-ID: <CAGBSGjqE4XKQmx2B8Lvh4faazfZPYqAYBy2NhSrewaBmEEBzpw@mail.gmail.com>
Message-ID: <CAGBSGjqE4XKQmx2B8Lvh4faazfZPYqAYBy2NhSrewaBmEEBzpw@mail.gmail.com>
Subject: Re: [OAUTH-WG] We appear to still be litigating OAuth, oops
To: Warren Parad <wparad=40rhosys.ch@dmarc.ietf.org>
Cc: Justin Richer <jricher@mit.edu>, Phillip Hallam-Baker <phill@hallambaker.com>, IETF-Discussion Discussion <ietf@ietf.org>, "oauth@ietf.org" <oauth@ietf.org>, Bron Gondwana <brong@fastmailteam.com>
Content-Type: multipart/alternative; boundary="00000000000066639105bc3fd2be"
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf/waHsgjJSrlnh_6NeU-GsQrVtRuk>
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: IETF-Discussion <ietf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf>, <mailto:ietf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf/>
List-Post: <mailto:ietf@ietf.org>
List-Help: <mailto:ietf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf>, <mailto:ietf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 26 Feb 2021 16:33:21 -0000

Dynamic client registration does exist in OAuth:
https://tools.ietf.org/html/rfc7591

The point is that basically nobody uses it because they don't want to allow
arbitrary client registration at their ASs. That's likely due to a
combination of pre-registration being the default model in OAuth for so
long (the Dynamic Client Registration draft was published several years
after OAuth 2.0), as well as how large corporations have decided to run
their ASs where they want to have (what feels like) more control over the
things talking to their servers.

On Fri, Feb 26, 2021 at 8:22 AM Warren Parad <wparad=
40rhosys.ch@dmarc.ietf.org> wrote:

> A) I don't think it is helpful to talk about what other WGs are doing, or
> how GNAP attempts to fix or not fix these problems.
> B) Sharing statements like this:
>
>> Right, it’s possible to patch OAuth to do this, but the whole
>> “registration equals trust” mindset is baked into OAuth at a really core
>> level. That’s one of the main reasons there’s been hesitance at deploying
>> dynamic registration
>
> Don't help everyone come to the same conclusion, Who is "we" here, it begs
> the question "is there a mindset baked into OAuth", I think to work
> effectively we need to be talking about how to best to tackle challenges
> everyone and anyone brings up and not fallback on arbitrary statements. It
> would be one thing to point to a document which outlines the exact issues
> with dynamic registration and then we could potentially have a valuable
> conversation about "are those reasons still relevant or do we need to
> revisit."
>
> Right now it seems there is "Someone in the past decided this was a bad
> idea, so we can't do it", rather than actually having the conversation
> about it.
>
> Just based on the conversation, it seems like the obvious right thing to
> do is provide dynamic registration in OAuth. Will client developers do the
> wrong thing, sure. Might it be challenging to support in a simple way,
> maybe. But having the addition to OAuth to solve the problem is better than
> nothing, and further it starts to change the mindset that dynamic
> registration is and should be provided when appropriate.
>
> Warren Parad
>
> Founder, CTO
> Secure your user data with IAM authorization as a service. Implement
> Authress <https://authress.io/>.
>
>
> On Fri, Feb 26, 2021 at 5:11 PM Justin Richer <jricher@mit.edu> wrote:
>
>> Right, it’s possible to patch OAuth to do this, but the whole
>> “registration equals trust” mindset is baked into OAuth at a really core
>> level. That’s one of the main reasons there’s been hesitance at deploying
>> dynamic registration. It’s an extension that changes your trust model’s
>> assumptions, and does so in a way that is challenging for a lot of large
>> scale providers.
>>
>> That’s why I personally think it’s really important that we get away from
>> that registration model in GNAP, so we don’t repeat that same problem in
>> the same way. Some people will still deploy GNAP with static registration,
>> but this model becomes more exceptional than baseline. The philosophy of
>> what’s considered an extension vs. default is important.
>>
>>  — Justin
>>
>> On Feb 25, 2021, at 3:41 AM, Seán Kelleher <sean@trustap.com> wrote:
>>
>> Yep, this is the big point - OAuth is designed to require the the third
>>> leg of trust that creates the NxM problem.
>>
>>
>> I believe the snippet of Justin's that you quoted actually shows you how
>> you can forgo the trust element using dynamic client registration. It still
>> allows a "server" to identify requests and impose security policies via the
>> client ID, but without requiring the client author to manually register the
>> client in advance of using it (e.g. in the case where the client author
>> doesn't even know what servers the client is going to be connecting to).
>> You still need the client ID, but anyone can get one whenever they need it.
>>
>> I'm also feeling a bit of confusion arising from a conflation of terms
>> between the regular client/server model and the terminology used in OAuth.
>> To be clear, in OAuth, the level of trust between the client and authZ
>> server only really depends on policy; as mentioned, dynamic client
>> registration can be used if you don't need any trust between the client and
>> AS.
>>
>> On Thu, 25 Feb 2021 at 08:22, Seán Kelleher <sean@trustap.com> wrote:
>>
>>> Just to clarify, I assume in this discourse that the "server" in this
>>> client and server relationship refers to an AS/RS pair in OAuth
>>> terminology? Based on this, one big sticking point for me on the
>>> applicability of NxM, or even 1xM, is that all of the "M" RSs need to
>>> publish the same interface for any meaningful implementation in the first
>>> place.
>>>
>>> It probably makes more sense with email clients, since as Bron said,
>>> there is the common standard of POP. If we assume that all the email
>>> services that we want to connect to publish the same POP interface, and
>>> would accept tokens in the same way, then the way the authZ is handled is
>>> indeed the point of divergence that needs to be resolved.
>>>
>>> However, we're talking about NxM in the general case here. I feel like
>>> using the likes of discovery and dynamic registration, etc. that's already
>>> supported by OAuth, the "N" part of this equation is surmountable. But each
>>> of the "M" servers also need to export the same interface, otherwise a
>>> client is going to have to write custom code to deal with talking to the
>>> service after the authZ step anyway, reintroducing the "problem" part of
>>> the NxM problem.
>>>
>>> As such, I would actually suggest constraining this discussion to just
>>> the POP NxM problem rather than NxM in general because, for me at least,
>>> the authZ part of the general case is the most "solved" part of the
>>> problem, and the outstanding work lies more in consolidating the "M" RS
>>> interfaces.
>>>
>>> On Wed, 24 Feb 2021 at 22:32, Bron Gondwana <brong@fastmailteam.com>
>>> wrote:
>>>
>>>> On Thu, Feb 25, 2021, at 02:18, Justin Richer wrote:
>>>>
>>>> I agree that the NxM problem is the purview of the whole IETF, but it’s
>>>> something that we’re particularly interested in over in GNAP. As the editor
>>>> of OAuth’s dynamic registration extension and the GNAP core protocol, I
>>>> hope I can add to this conversation.
>>>>
>>>> From a technical standpoint, OAuth’s dynamic client registration lets
>>>> arbitrary clients talk to an AS, but the trust isn’t there in practice. On
>>>> top of that I think this problem is exacerbated by a fundamental protocol
>>>> design element of OAuth: the client_id that’s required. That field means
>>>> there’s an assumption that a relationship was set up between the pieces of
>>>> software, implied to be trusted by admins at the AS. Sure you can get that
>>>> client_id under special circumstances, but there’s still a special weight
>>>> handed to that and the dynamic stuff feels like you’re giving up control as
>>>> an AS. In GNAP, the relationship is inverted, and it’s designed as
>>>> “dynamic-first”, with pre-registered clients being an optimization on top
>>>> of that.
>>>>
>>>>
>>>> Yep, this is the big point - OAuth is designed to require the the third
>>>> leg of trust that creates the NxM problem.
>>>>
>>>>
>>>> <image.png>
>>>>
>>>> If that dotted line between client and server requires a pre-existing
>>>> trust relationship rather than the trust being entirely mediated by the
>>>> user choosing to connect client A with server B, then you have the NxM
>>>> problem.  This is the "you can only have your John Deere tractor serviced
>>>> by an approved John Deere service centre" problem.  You can only use this
>>>> client with servers who have pre-approved it.  Or fall back to the "cash of
>>>> the internet" - plain text passwords.
>>>>
>>>> Does this solve the NxM problem? No, because companies are still going
>>>> to decide that they only talk to keys or identifiers that they know ahead
>>>> of time. But the protocol puts the dynamic case forward as baseline and
>>>> fits in much better with the likes of JMAP than OAuth ever could:
>>>>
>>>> - {The Bat} creates a key pair.
>>>> - {User} enters their email address into {Bat}, {Bat} does discovery
>>>> (maybe that’s a JMAP thing? Webfinger?) and finds the JMAP server and the
>>>> GNAP endpoint for authentication as an option.
>>>> - {Bat} talks to the GNAP AS at {ISP} and presents the key it just made
>>>> up. {ISP} has never seen this key, but knows how to talk GNAP and get the
>>>> user to authorize {Bat} to access email.
>>>> - {User} does this using GNAP and gets back an access token that’s tied
>>>> to the key {Bat} made back at the beginning. That token is tied (at the
>>>> {ISP}) to the user’s account.
>>>>
>>>> Yes, you can do all of this today with OAuth (and people have done so),
>>>> but OAuth’s basic model of “go do discovery and registration first and THEN
>>>> talk to me” is a trust impediment more than it is a technical impediment.
>>>> The “negotiation” part of the GNAP name comes from the philosophy of “start
>>>> talking first and figure out what you need as you go”. Instead of jumping
>>>> through hoops to get something you can trust, you just start in and then
>>>> decide how much you trust it. A corporate rollout could use its own key
>>>> distribution mechanism and static registration to limit which client
>>>> instances talk back to the company server, regardless of which accounts
>>>> would authorize access on top of that. An internet-facing service is going
>>>> to be more likely to take a TLS approach, of “I’ll talk to you in a secure
>>>> fashion without caring who you are right now”.
>>>>
>>>> We really are trying to make GNAP a consistent protocol at its core and
>>>> learn from problems with OAuth in the wild, all while letting GNAP address
>>>> a wider variety of use cases. I agree that GNAP could be clearer about
>>>> specific use cases, and we’re working on the spec still so any help here is
>>>> appreciated.
>>>>
>>>>
>>>> Excellent.  This is precisely what I've been waiting for for these very
>>>> many years as a viable replacement for storing a password locally on disk.
>>>> Just having the server able to distinguish between different client
>>>> instances for the same user is a big start, because you can de-authorise
>>>> one without having to lock out every connection - even if the user is still
>>>> entering their password during the setup phase each time.
>>>>
>>>> This is what Fastmail already do with our own app, creating a
>>>> long-lived access token and storing that on the device rather than storing
>>>> the password itself - and you can log out any one client from your security
>>>> settings page.  What's missing is a standard way to do that with any IMAP
>>>> client.  The initial JMAP authentication proposal was a very simple case of
>>>> pretty much this, build into to the protocol so everyone would do it.
>>>>
>>>> Making it easy to connect up arbitrary clients with per-client tokens
>>>> the default, and easy rather than almost impossible to do in practice is
>>>> where the big difference comes in.
>>>>
>>>> Bron.
>>>>
>>>> --
>>>>   Bron Gondwana, CEO, Fastmail Pty Ltd
>>>>   brong@fastmailteam.com
>>>>
>>>>
>>>> _______________________________________________
>>>> OAuth mailing list
>>>> OAuth@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>
>>>
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org
>> https://www.ietf.org/mailman/listinfo/oauth
>>
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth
>