[OAUTH-WG] Re: Deferred Key Binding / TMB

Justin Richer <jricher@MIT.EDU> Wed, 11 June 2025 11:49 UTC

Return-Path: <jricher@MIT.EDU>
X-Original-To: oauth@mail2.ietf.org
Delivered-To: oauth@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 848D633A1AC6 for <oauth@mail2.ietf.org>; Wed, 11 Jun 2025 04:49:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.095
X-Spam-Level:
X-Spam-Status: No, score=-2.095 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, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_NONE=0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (1024-bit key) header.d=mit.edu
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uUXr2jVwDk8n for <oauth@mail2.ietf.org>; Wed, 11 Jun 2025 04:49:09 -0700 (PDT)
Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2062.outbound.protection.outlook.com [40.107.223.62]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id A873E33A1ABF for <oauth@ietf.org>; Wed, 11 Jun 2025 04:49:09 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EaogmEIynxkUG7dyl5w1bMVegnYOcX0jpsvAQol6jNgipeGc2ZQmmFepcmIZWCvr4D7O6eVXko/rPJRsVAjTTQt4k6WMTeyWt5KPcHcnIklS0HHmI2WjVncsPp1B59XeohuVNMfqWWE/JDvnScjlFhpjIqNqY6mwGusjDJyToaW6Q0AHJgCLHOcUBKgXv/WzgK+PpHrXmhk6bc8CIyVh7oJ77YOC8OkOISLf0IbV8EFeYnltge27r0Z/QdiEkRaAENHcCqwoue17fuEIAEZJGD83flct+jNoQMqAeUzBRqAMH9ag/vsSwhJM+3GvN9FMUY+kfPzx9gHknUQODzz9RA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=i23oobtGdRBmlzFmAyjvRz+EoEY0GKDJTsDgui/C2hk=; b=AXMhYKGtChrZvbA/JyDG0gKq2S2scu4Aufa9zcF83/0IuBXMRVxDwQozupL4eCblvrqvKmrWOUsiIehpx0BzMI73i6u1DH+2jGDEe6XgTHAg70ugvvYZA9PaLWcIrMukHRe4wGScFxkvTY5P0Bbvekn7O/rcUYBePvgsid8ez70b8bJ/z0ChRLU+2bxdUoOodsWPRumUqzgSRqz4EZkP5AbJ2xrld2r6E896Ud3EeHEd5MqHS89O9JvYttWOAeGQRM9XFN//iVTpVJBgdbiqeIDpF2vEGnbHoFQrIHyZrntinX5hB3AsV7N718zWTeM4u9Y2YdnH10W7COt6vNa/Cw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mit.edu; dmarc=pass action=none header.from=mit.edu; dkim=pass header.d=mit.edu; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mit.edu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=i23oobtGdRBmlzFmAyjvRz+EoEY0GKDJTsDgui/C2hk=; b=o6ienymHpJIMyW4hMieCxmRys97Isn65VKeuzdv+HYXMBoHtroGww1KpeV1Nzw6pK8dzuObmsRJixGYMybAnqJax0PiFZArHGvmmnc+9xuU/2Du3fx4kGn6DFYldwZpWqloL85QStVPJeqGf+eq8IacV1z11W9X8Oe3dRvMefZ0=
Received: from LV8PR01MB8677.prod.exchangelabs.com (2603:10b6:408:1e8::20) by PH0PR01MB6761.prod.exchangelabs.com (2603:10b6:510:76::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.18; Wed, 11 Jun 2025 11:49:07 +0000
Received: from LV8PR01MB8677.prod.exchangelabs.com ([fe80::e7d6:999:270f:a820]) by LV8PR01MB8677.prod.exchangelabs.com ([fe80::e7d6:999:270f:a820%3]) with mapi id 15.20.8813.024; Wed, 11 Jun 2025 11:49:07 +0000
From: Justin Richer <jricher@MIT.EDU>
To: Filip Skokan <panva.ip@gmail.com>
Thread-Topic: [OAUTH-WG] Deferred Key Binding / TMB
Thread-Index: AQHb2sbW0+PW+pRJJUm5Whglxs2Rlw==
Date: Wed, 11 Jun 2025 11:49:07 +0000
Message-ID: <881B8C9E-9C0E-4600-ACE5-63B7644A0217@mit.edu>
References: <E40270D7-F032-49B1-9B10-87167331EA3C@mit.edu> <fdcb60f9-3bc6-4aff-8c2e-3cf74d17f90d@gmail.com> <46381B94-84FB-49D3-9C71-2FE4F5A97256@mit.edu> <CALAqi_9f4SVzwbcib4pPWz4j6njRZiDXAkFcuEA8dB1ZO=kbSA@mail.gmail.com>
In-Reply-To: <CALAqi_9f4SVzwbcib4pPWz4j6njRZiDXAkFcuEA8dB1ZO=kbSA@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=MIT.EDU;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: LV8PR01MB8677:EE_|PH0PR01MB6761:EE_
x-ms-office365-filtering-correlation-id: b85e5b80-39d4-4bd9-bb64-08dda8ddf8fa
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|366016|4022899009|376014|1800799024|8096899003|7053199007|13003099007|38070700018;
x-microsoft-antispam-message-info: +JrNZ+LDuWxJWDA8s/dq93s0WOftOq6J4Yn4t8+R4rgurxaaPls6+Bto1KSkf7IbxCr5yYreX+CB2m+0QjwtSzUmMNOEIVsqgBROZnz99JAOuKlROvg0kwzzGUI6XwSY2yUVpk+42BMskM8dGBAnI4ryNmhqgUQ25ubQcOMSNIiQQEhlmkyvqrSFUTNi32T/cfwZk9X+q2CZB4X5ozfQtbW46OJK4UmI/N4nQYpszZRk/ZAX1yDoNrA3ysfC2QLM4DNNU6XKN6u7eNXe1ePbYkQaOl3VkV2+JGfuOeeGfTlNd/tXcMPk7iUCBlYbgpLBpELD3QVWYejlcb8yfDUS4GToqGN+8qPrCvzmgxFRcfC4BMIIKXZlittpjNDbM7U8NaxkRwhidMpVDPyBYl4ZyqwoVs0VVJTPwvK21S7P+3HC1O7AklJsm0PUezGWEY/lks8gyj8NjiZnM3aObsNKlMrAp7lCaczv+MdoAyR6+NKrmb1s4L0M+xndDHZ6tE6FFHkxHrtwU5OmztuF1zzZ5tVF1MU2NwSYYxzFdlulJx2Usm418DqPYGTjv7oaL/s1M5dWiZArnZIilPmyjLpCKjUzAB8VSeEbVsyYaVmYSWgAj2xmIdS/pWSZeWV8bdEQX778kVysjfofvl5m1gdy9zJF5nmbL/otFun7mWPFpRWe7HolLbXukIIdaBIwXOB8mMnYqyRW4Mh+unKRJGRRzoin/JVnIGXTxB8uqLoQNpE0rPBfdf0YDWG6bIURoi39Qm3ui3deOexC9TmEYci98ZKC/SY9XlXAnnj58PuxjpPEmrSb85cxPmbu0K613VuFuqHAeXScwi53vwcWI8GYY6Bi0ExDzrrXlvNXj8EOMUCgsZiEFshiZyAV0sDfkRLuuXouSz0wyVbPL4USLs+gSiAShmsF4fOjEoza2QOecogUdAUds+jZ+pADjXE3mu8MrM7SE2yDtsXIHQkIQiBqxcQ/avy608FtNboEwjZUGIN0tZHQLpsgrLzgeJpcrhsifcq+nH3Spk4qh9XgEQlp/E8PVpbAkV/OhH0YpPwiux/6/wG4TAqfbTHkN2qK5K5XP1WaFrgrzZGm2SBhou+1jHGqI2p3O1VIZ85VU0bVy+MYxK/sJ7kxVv8kkJ9kM0C9fW56X7Pxn/fj8uZGekcAO/hqda6F1WYmYE8vUgakEuC6JVgLG6wQmKlVqXJVhO+4QrWuo02ZkkZah4/v80bleX/imjHfbUSPz6uLSpD56+ZseoaPWZ6A04VJd1LC0bOd2mOlVivueJBZOvHSgLQg5D5+Y+Hs6SrPbUjN1rV9KLWccsEgoUn/4ijuznsAP96m7WP+h+eetMzB5h4C7i2SaZ+IlVhoW+tC2iKXryoAPB2ypHKw81UdfCZb0t5rJ1Xg1tHnswnARf2aJG+5/nnLYwe7xfsUdPdXJEsStONXD0g=
x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV8PR01MB8677.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(4022899009)(376014)(1800799024)(8096899003)(7053199007)(13003099007)(38070700018);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: PgV2lNPPVEhcXvdbWFyWTlAvnj3byLV4QHi+3VsFZ2KidfCoglveJyWwlrdmQWPGGoGSC7qt2M7X7YlSGFuebUzH9HTktRci+b0qTICAHbO2W5JuUntFzmJabBJ+E9RpsvnKnjLVPUIwdDlFv2IQ+paPBT73daqSXd1D3qEcDyuA75duo9E/EtcmTppsGtYy/0RRK1Y1kEqSzU5vTSKSnv9JxPGFGDVeKOzDInAx9niYkw57hKmzUeckbCycINvnyMU/Ak1jji8fSNvd+a7G9RWPgMsWFWI09/8A11bB5eWUXlgdI6v1t2+akUNLqQs+yygdPKnMeSCSs0wCXqs0o+qHD/EU2xs/0fHBzBPfh4y3S/91AUtr/r74Fw/FvHgvcGIFvWJjluRWlfzELI/vML5rNumY6YJDzduiYOxOkFd5+XRFSKnYGiYsW47CdbwpBXtv4vc3HutkVOfJGKGMhV50Sq0bZdbeHDJBeiBBnuH+MuIUy/DwXWzYEOsaHL5SdTsu0umThV+S6WO9rEVvIl61xU4MUlhv0tZ8sIxTYVFXQ9S54CJ1viunY4sEVv+YZjfmVW5QeohYs+I62nAXEBKqZ1TFfEWhFF6ARcL4rYMvVBw2sGUssWPoDHrdtObOdeqwBllEDBzzTn/43J/pdK134UUKZEqaDha+JGIRkxkjeOiLZgPU5awaFe3572C56oQnmplCFz1ha1iz59rc1OU6r2gzysRBLO/7S7/xZOrJDPvynI3eSu7ZXh8q27sdmWSYhaL8QSVDK28wyVhpU/LgFDVRP0RC41BI10wUwylXtQ/7T6JpbUT9YQOSuDalHiahkYdNBlvUUouuLnL2T12F4/Dxmkou361SEUOMCET+RxWhPhqGp3B0UHyKBSo0JYx+rMzGp9qRSE7UadGX/aMCleLnHxGT9cf1LkcxH2Nr5sYrEcHqVpUywZDqR6Ra9Wa/ffOLc5Q9McnaNOjUkX/QSq0gMm41WfCNkv06yVVzy3v5t56q0p89BPpptipgyEGng/oodu/gMWWgdI7BiRPsr+mgZIwhKrwmtXaZanRSarvhUgGFAW/bIk/TH1AaShUyLRq+6STzkLqbbbht4jvDyEXJ97Lh4j3WMyRPqlR+jhY/Kc4nNhKPsISvJMvN3BIfQKspAxqdxs0+vejtSQvz5eaJVE/BdHLl5t5biHhhbNPmGMcBSeyyvAJcCAmFyde1uqprep1q00zg5xSg1WcXtSYegUBo1l89dE0Q9UB7KBuO1oDr+RT5eXR+88KbA0HVNMlZIhlCTJIUSMH2GaRh2bIFqKcYEpOGlyS0lnA5Jetb1Bfh9T28osIXobCsN/O+Q/kdxag1OI7AQwyT2trZySyP9fxG98KOvDVWA2VuisLHltZQscTsqkMcgKhKhxez4Rja5KDLgWwasxLr/AWUl34YE1Qy6dHCw9zTp00Ik0RvIadl5l/rReW8PJUoGUfop04N3R7/iMQy5MDWWU9bGzXsYGfgHflapsh9YJ40DBAQgAEFDwUpDBgHIDhhDY+kw2fQixiPKYCzgvyCSGl2gSnf/7QvCmPBZOZ5vFVU+UXYdm8PoLr5v8w1O+ah
Content-Type: multipart/alternative; boundary="_000_881B8C9E9C0E4600ACE563B7644A0217mitedu_"
MIME-Version: 1.0
X-OriginatorOrg: mit.edu
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: LV8PR01MB8677.prod.exchangelabs.com
X-MS-Exchange-CrossTenant-Network-Message-Id: b85e5b80-39d4-4bd9-bb64-08dda8ddf8fa
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jun 2025 11:49:07.4376 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 64afd9ba-0ecf-4acf-bc36-935f6235ba8b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: FHe1wzwuBsmDVbq561GP2H89QKACo3wsLFJ6IbL6RH2DOrH7OX4D+u7G3n5uD6EU
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR01MB6761
Message-ID-Hash: CPGTQBAQWK7XE67QBUNARJABMITINARQ
X-Message-ID-Hash: CPGTQBAQWK7XE67QBUNARJABMITINARQ
X-MailFrom: jricher@MIT.EDU
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-oauth.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: oauth <oauth@ietf.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [OAUTH-WG] Re: Deferred Key Binding / TMB
List-Id: OAUTH WG <oauth.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/oqOgTuuFv2USEChecbj_KiZX38c>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Owner: <mailto:oauth-owner@ietf.org>
List-Post: <mailto:oauth@ietf.org>
List-Subscribe: <mailto:oauth-join@ietf.org>
List-Unsubscribe: <mailto:oauth-leave@ietf.org>

Yup, that’s one of the patterns - it hands the public key to the backend over some channel and then gets the bound token back in exchange for that. Whoever presents the token gets to keep the private key.

 — Justin

On Jun 10, 2025, at 3:40 PM, Filip Skokan <panva.ip@gmail.com> wrote:

> It’s not a bearer token because the resulting token IS bound to a key, just not a key held by the requesting software. Think of it this way: if you logically split the OAuth “Client” into two parts, you can have one part that can ask for a new token and one that can present that new token but with a key binding of some kind (DPoP, MTLS, HTTPSig, the mechanism doesn’t matter here I believe).

So like the Token-Mediating Backend pattern from https://datatracker.ietf.org/doc/html/draft-ietf-oauth-browser-based-apps#section-6.2, today that pattern can't use DPoP unless the Browser hands off the Proof JWT for the token endpoint request to be made to its backend. Using TMB it could still have a non-extractable CryptoKeyPair stored in the frontend's IndexedDB and just hand off the jkt to use for binding to its backend.

Do I get that right Justin?

S pozdravem,
Filip Skokan


On Tue, 10 Jun 2025 at 21:27, Justin Richer <jricher@mit.edu<mailto:jricher@mit.edu>> wrote:
“Deferred” is maybe not the most accurate term, I wrote the draft itself VERY quickly — but it was meant to convey that you don’t bind the token to the key being presented but defer that to another party.

I’d be happy to list out possible mechanisms for establishing trust beyond configured policy (which is the only thing I’ve seen in the wild) — that’s one of the things I’m hoping to gather in the conversation about this!

It’s not a bearer token because the resulting token IS bound to a key, just not a key held by the requesting software. Think of it this way: if you logically split the OAuth “Client” into two parts, you can have one part that can ask for a new token and one that can present that new token but with a key binding of some kind (DPoP, MTLS, HTTPSig, the mechanism doesn’t matter here I believe). The part that gets the token can’t use it at an RS, but it can hand it over to someone who CAN use it, and use it with a specific key. The part that can use the token (with the key) doesn’t have a means of getting a new token from the AS (either through architectural decisions or through performance concerns or just not mapping to the OAuth view of a monolithic client), but it can talk to the other part that’s able to get the token on its behalf.

So the token does need a key to be used at the RS, and it’s the second part of the client that holds the key.

 — Justin

> On Jun 7, 2025, at 9:51 AM, John Kemp <stable.pseudonym@gmail.com<mailto:stable.pseudonym@gmail.com>> wrote:
>
> Some initial feedback upon a quick read (with no background context for this issue):
>
> [...]
>
>> that up again and see if that interim can get scheduled soon. I’d
>> also like to encourage people to read through the draft and open the
>> discussion here on the list more.
>
> * What is the point of using the word "deferred" in this case? Is the "key binding" made at some future time? Why? What value does that bring? Until when is it deferred?
>
> * Might we enumerate the mechanisms by which you might "trust me, bruh" if not by PoP?
>
> * How is this _not_ just effectively a bearer token then?
>
> - johnk
>
> El 06/05/25 a las 12:45, Justin Richer escribió:
>> Hi Chairs and WG,
>> Back in Bangkok, we presented the draft https://datatracker.ietf.org/
>> doc/draft-richer-oauth-tmb-claim/ that introduces, in a concrete
>> way, the notion of getting a token bound to a key that you don’t
>> possess. As we discussed, this is a topic that keeps coming up in
>> the OAuth space and is usually dutifully pushed aside for the sake
>> of simplicity (and some would argue sanity).
>> The chairs mentioned pulling together an interim meeting for the
>> OAuth WG for us to discuss this topic ahead of Madrid, to see if
>> there was anything more we as a community want to do with it. As
>> we’re now more than halfway between the meetings, we wanted to bring
>> that up again and see if that interim can get scheduled soon. I’d
>> also like to encourage people to read through the draft and open the
>> discussion here on the list more.
>> — Justin _______________________________________________ OAuth
>> mailing list -- oauth@ietf.org<mailto:oauth@ietf.org> To unsubscribe send an email to oauth-
>> leave@ietf.org<mailto:leave@ietf.org>
>
> --
> Independent Security Architect
> t: +1.413.645.4169
> e: stable.pseudonym@gmail.com<mailto:stable.pseudonym@gmail.com>
>
> https://www.linkedin.com/in/johnk-am9obmsk/
> https://github.com/frumioj
>

_______________________________________________
OAuth mailing list -- oauth@ietf.org<mailto:oauth@ietf.org>
To unsubscribe send an email to oauth-leave@ietf.org<mailto:oauth-leave@ietf.org>