Re: [Txauth] The client is identified by its key.
Tom Jones <thomasclinganjones@gmail.com> Tue, 09 June 2020 17:52 UTC
Return-Path: <thomasclinganjones@gmail.com>
X-Original-To: txauth@ietfa.amsl.com
Delivered-To: txauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3394B3A0C79 for <txauth@ietfa.amsl.com>; Tue, 9 Jun 2020 10:52:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=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 ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6BzchbqmDo7X for <txauth@ietfa.amsl.com>; Tue, 9 Jun 2020 10:52:13 -0700 (PDT)
Received: from mail-oi1-x230.google.com (mail-oi1-x230.google.com [IPv6:2607:f8b0:4864:20::230]) (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 19EF43A0C6F for <txauth@ietf.org>; Tue, 9 Jun 2020 10:52:13 -0700 (PDT)
Received: by mail-oi1-x230.google.com with SMTP id 25so18642758oiy.13 for <txauth@ietf.org>; Tue, 09 Jun 2020 10:52:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=5GRvfJHVe8P5ilpFrMGfjThmb3PuN25iTMJCF0OgqYM=; b=sC0LrDfBmA2/DbqikxaLIEz5sgkzpQ9ppBQZwBajszJ8bSmnxGeuQK8R3Fj9slb1BY OL6OE3NAnLMRn/Z7hfP7qFjkEhGB1MkcRwHx3yGjEX1wcrkzUYCxHrifQjQ1sYCI17jV VbXXwNMCNS9FAKiByIyZn7aY1uvGXpY1j231CzVzcqCQBWVDVz6Bc8VGw9GeTZKY0AnE mXz0kwJMGnLYofwket9h/XkRvwQ9EzF0xE1Nzgq8w+AzO+qGLlhVc28MW4vpj4z9Pwdh eY2BBkmO1YbGA66fxAqZxd6C5DMWAaIvDre+qeRq5+r9wgjHwNLEjTrstQL7wb9RkS9B yJoQ==
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=5GRvfJHVe8P5ilpFrMGfjThmb3PuN25iTMJCF0OgqYM=; b=fyMM6WAi80wnzrDVtAXTlqgUiQQXIq6l+QRYIDrnNazBd4x3LaBhk4ajIdWpy5lEmL +lQ9c0Xr1Rs2os5/6SvhY658aSt5DaQx9FbBIntzcy63NL+EkEyTetNZjR49daom1zyS ZhSnquuvdmfdd7pzjupxM1MM9YqzCEelXb/bKUKyRgGKJAtkAfzuKYkUhBH8SSZu2uXP +VOalsdAIXwrPhPdLQxphUb+A9S+1toHY3XKXe6MDvXZjCphkxx8QqTvwT6ySy/+N5XH LjuZflK9br374WR5d8WF4Umntu+V8NlagMqJB9Z3Jf9CCuzoBEZvUAC9P1foqujEbGsP r3oA==
X-Gm-Message-State: AOAM532yGhXQlXQZ06yBCC+Zt4IiJz2rn4+Xx+Q66XK/TeI0rHJE/vJr GgV7lzwsXaPKzn4NJKEMm+bDDnbt6TETsKWUYmY=
X-Google-Smtp-Source: ABdhPJzpjw6qMd/CNrFU5PrXpps03vw8LRZcRznPmQfp/7l2Ex7IcQTx724Qu5cUPDZhCj646+JxVQ2kytddo3rP5V0=
X-Received: by 2002:aca:554c:: with SMTP id j73mr4677246oib.172.1591725132219; Tue, 09 Jun 2020 10:52:12 -0700 (PDT)
MIME-Version: 1.0
References: <CAK2Cwb4vue-VRhC7x+DTM2UFrrLM3qdYXHfYJnV71Tqx6Wqm8w@mail.gmail.com> <41E7211B-6599-463F-896C-A88EFF904921@mit.edu>
In-Reply-To: <41E7211B-6599-463F-896C-A88EFF904921@mit.edu>
From: Tom Jones <thomasclinganjones@gmail.com>
Date: Tue, 09 Jun 2020 10:51:59 -0700
Message-ID: <CAK2Cwb7qoQfJXy460vgUMw37z1t6=W+iy56pC68s9BJo2h_mzg@mail.gmail.com>
To: Justin Richer <jricher@mit.edu>
Cc: txauth@ietf.org
Content-Type: multipart/alternative; boundary="000000000000160a1705a7aa6303"
Archived-At: <https://mailarchive.ietf.org/arch/msg/txauth/xRwKLlZ5Q-xzEvL8shcqNG8w9qI>
Subject: Re: [Txauth] The client is identified by its key.
X-BeenThere: txauth@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <txauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/txauth>, <mailto:txauth-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/txauth/>
List-Post: <mailto:txauth@ietf.org>
List-Help: <mailto:txauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/txauth>, <mailto:txauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 09 Jun 2020 17:52:15 -0000
That is feel good description. I am skeptical until a full description of the protocol exists. Even then i don't believe it works until i see it work for myself. If the roll-over is to be in the IETF spec then it requires two implementations. If it is not in the spec, then I would oppose adoption of the spec. Until i see some evidence that it works, I would not like to see it adopted. Otherwise we will get deployments that work fine for a year and then all start to fai. I've been there, that is not fun. Peace ..tom On Tue, Jun 9, 2020 at 10:38 AM Justin Richer <jricher@mit.edu> wrote: > Key rollover is really important. When I say that the client is identified > by the key, I do not mean that a client is DEFINED by its key. And with > that, it is important to know that it’s the AS that decides what any > particular key represents at any time. So long as the AS knows which key to > map to which set of policies that govern the actions of a client, > everything is fine. That mapping can change and the AS can keep the new key > tied to the same internal entity. The AS could even have multiple keys tied > to that entity, and accept any of those keys during a request. > > It’s exactly the same as changing a deployed OAuth 2 client’s > client_secret today. You change the secret on the AS and change it in the > client and it just keeps working like you’d expect. > > Oh, but you might be thinking — there we have the client ID to tie it all > together! Don’t we need that! Well, we actually don’t. The AS can keep > whatever internal identifier it wants to during a client rollover. The > protocol, and importantly the client itself, need never be aware of that > identifier. It might still be there but you are no longer forced to expose > it. > > Removing an external and explicit client identifier enables this kind of > deployment behavior, it doesn’t hamper it. > > — Justin > > On Jun 9, 2020, at 12:38 PM, Tom Jones <thomasclinganjones@gmail.com> > wrote: > > *This needs to be its own thread. I see the same trend in OpenID for > self-issued subject identification. I cannot imagine how key roll-over > could possibly work without major disruption to ongoing activity. Someone > must show that key rollover in a fully functioning system is possible > before it is even considered.* > > *from justin* > > *The client is identified by its key.* There is no external client > identifier. I think you’re confused because you’re still thinking in terms > of OAuth 2’s client ID based model and I am trying to move us past that. It > took me time to realize that we really can let it go, so hopefully this is > helpful in explaining why. > > When a credential is cryptographically random enough to be unique, it can > be used as its own identifier, particularly when you don’t need to identify > the entity outside of the context that it can present and prove its > credential. To stretch a metaphor, passwords don’t always need usernames. > This is, after all, the driving design pattern behind OAuth access tokens. > An access token doesn’t have a “username” portion to it, even though it > would have been trivial to require the client to send its client ID > alongside the access token. Why does that work? Because our model of what > the RS does with the access token is built around it answering the > questions: is this token valid and does it allow what’s being requested? If > the RS needs to know which client was issued the token, it can discover > that information without being told separately from the token -- perhaps > it’s in the token itself or it’s in an introspection response. And in a lot > of cases, the RS doesn’t care about the client software, it just wants to > know if the token’s any good. Even in constrained tokens such as MTLS, PoP, > and DPoP, we aren’t really authenticating the client at the RS so much as > making sure the right key is presented alongside the right token. > > XYZ takes that same approach with the client talking to the AS and uses > the credential (key) to identify the client as well as authenticate and > protect the request. We can’t just say “OAuth 2 had client IDs and people > are used to it so it must be good and we have to keep using it”. We need to > ask WHY OAuth 2 needs client IDs and if that still makes sense. I argue > that it doesn’t make sense anymore and we need to step back and look at a > better model. OAuth 2 needs a client ID because it gets passed in the front > channel and the client’s credentials can’t be used there. The access token > doesn’t need an equivalent because it’s passed in the back channel and can > be used directly. Now that the client no longer needs to be identified, but > not authenticated, through untrusted third parties (such as the browser), > we don’t need to have a separate identifier as part of the protocol. With > an intent-based protocol, that starts in the back channel, you don’t need a > client identifier anymore. Once the AS finds that key, the AS can then > figure out what policies, rights, and restrictions are attached to that > key. In many implementations, there’s going to be some kind of “registered > client” object in a database somewhere that drives those policies. That’s > the classical OAuth model, and it works in many cases. But in other cases, > the key is going to just be a value used to protect the request chain (and > possibly the token itself), and the policy is going to be built up by other > things like a device posture or signature on the calling software or > verified user information. It’s not just about client authentication, even > though it can be used for it. DPoP, PKCE, and DynReg have shown us the > value in dynamic systems, in different ways. > > On top of that, PAR is showing us that a lot of the constraints that we > have in OAuth 2 don’t really apply anymore. For instance, Redirect URI > restrictions can be relaxed because now you CAN identify and authenticate > the software sending it, which isn’t true with a front-channel-first > approach. All of the things that are required in OAuth 2 start to become > redundant, and it leads to things like requiring that “client_id” still > always be passed in the front channel even though the information could be > looked up from an internal request_uri reference using PAR and JAR together. > > That’s why a key handle isn’t exactly the same as a client ID and I did > not call it a client ID in the XYZ protocol. It’s a shortcut to refer to > the key material for certain optimized cases, but ultimately it’s pointing > to a key. This has an interesting and beneficial side effect — if you HAVE > a client ID as part of your internal data model, it can FUNCTION as a key > handle because it’s a unique value the AS can use to look up key > information. It’s not “authenticating the client”, it’s pointing to a key > which in turn identifies and authenticates the software making the call. > The fact that it’s a “client ID” is an artifact of the implementation, > which in this case has an OAuth 2 legacy to work with. > > If we’re going to move past the constraints of OAuth 2 we need to stop > thinking so strictly in its terms and models. There are better ways to > approach this now and client IDs are not required by this protocol model. > Peace ..tom > -- > Txauth mailing list > Txauth@ietf.org > https://www.ietf.org/mailman/listinfo/txauth > > >
- [Txauth] The client is identified by its key. Tom Jones
- Re: [Txauth] The client is identified by its key. Justin Richer
- Re: [Txauth] The client is identified by its key. Tom Jones
- Re: [Txauth] The client is identified by its key. Justin Richer