[OAUTH-WG] Clarification on Nested act Claim Semantics in RFC 8693 Token Exchange

"Thilakasiri H.A.B.D" <habdthilakasiri2002@gmail.com> Fri, 16 January 2026 03:37 UTC

Return-Path: <habdthilakasiri2002@gmail.com>
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 713EEA865EC2 for <oauth@mail2.ietf.org>; Thu, 15 Jan 2026 19:37:30 -0800 (PST)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: 0.862
X-Spam-Level:
X-Spam-Status: No, score=0.862 tagged_above=-999 required=5 tests=[BAYES_50=0.8, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 2NAS9x0HTvnt for <oauth@mail2.ietf.org>; Thu, 15 Jan 2026 19:37:29 -0800 (PST)
Received: from mail-yx1-xb133.google.com (mail-yx1-xb133.google.com [IPv6:2607:f8b0:4864:20::b133]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id E6835A865EB5 for <oauth@ietf.org>; Thu, 15 Jan 2026 19:37:29 -0800 (PST)
Received: by mail-yx1-xb133.google.com with SMTP id 956f58d0204a3-649166a96a9so721865d50.3 for <oauth@ietf.org>; Thu, 15 Jan 2026 19:37:29 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768534649; x=1769139449; darn=ietf.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=nckV14F1tW+Fbly9bwJ80QUxrf9pOhIXtsi9QimhYt4=; b=HX8Lvcyd/e0efKoNlclJBN9kLVISz6DJnfrfMIgMNPZPFi3AY5YzLRzC/+GuRV625G uU0aIYCd7pih0Fxli4H8gmPpNJvZ54rqrlIOTX2CPT89cr7JoXkzh8Xua4ucRZFfSssK 2Qyic9oOTNMegJwicfG4sUDIb6K4mkrmjxyYe05Lg+vdbxRewyybe18KlXyRcAIOGs2h GrgPqjqebvvTFMhAQtlWS+OF/PJ5+gYmHkcTirPlfqRelctylviOims4NH3zOeC+rWix wRmMS909kPxG1YG3UXPqayyqPUh/bf/CWFQ/Fj1V64kKVw1Vkr/B5ae9CR/p7EE7/HeN 3B/g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768534649; x=1769139449; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=nckV14F1tW+Fbly9bwJ80QUxrf9pOhIXtsi9QimhYt4=; b=cXE6QNfKpDk7FQAOkiKDHNboZn3B1zroj0q6ahqViLbTx4xVoh/upmDRhnP7ZvtMdp mTuJwnGDMomSRLC29vGYoJsrqF4xN3InCbYSbh8nFKQ6JiiU7JYgZ/xIbbTAzQK4VjJ1 MGGbwio/8ZjBoFsYkHWisWS2sOmIhf0Ksmf7pLjiOyc2YehYrzyVdVJt9E7nVXC+y0r1 R21XTdPtbyOaMHMZF4iIgnmo8bhxWShKCGtOdlYtPrtIesZ5l2YPr+bBKKsJALoUDsQH AcuHJ/X/0/oJszyBKYqlgr8/xQUxxiuQ9uwe56Q5qNdiFEAJXOyqzlrCyGuzGN8oQM84 Y5Zw==
X-Gm-Message-State: AOJu0YzvzDYeE2SiaK2kLqPn69jkjNaBJAUPeb8usMc7LC5yJE1fIxg8 gWOVZQmF77/GTUABwWNqWSJckHwi2+M25IFb5SIk2G+OHSTxKiJA2b4ZCQ5QXEaLtnotwXWwffH bB3ydpqSduwB5qQVZnb1qfcKdb1+RoFZovidY
X-Gm-Gg: AY/fxX5WKjVCbco+AjKhD6ByB2yM1oYyxuD8+Pf4aGyxNFYhF0/Kjz38h3ZpVd3Zto9 nQOX1hDHZ6EPM/HPgXuayjgUBTMsKHh7FIeaBrk2RB6F+vx0joc6XozJej/NMsd0cbaMSKdTc26 B9K+z/CW6N2pTREIhKINa/349UKtbfjiuHrq6BVuuvEzLgro+UL1PnD36m18VBO3qOPmZHMfhi2 A6SDKvoWfQl3p+tWlHdZ5eDgBPe37KaeCRYh+/CwW1vrIRvjiavU+K3GGv2EmnbuJ/bWWAi2J99 e0ZqOxSAyX+wAqKauqwCyrmFqwVIUw==
X-Received: by 2002:a05:690e:120d:b0:644:5bb4:7b02 with SMTP id 956f58d0204a3-649164856d3mr1845363d50.29.1768534649154; Thu, 15 Jan 2026 19:37:29 -0800 (PST)
MIME-Version: 1.0
From: "Thilakasiri H.A.B.D" <habdthilakasiri2002@gmail.com>
Date: Fri, 16 Jan 2026 09:07:17 +0530
X-Gm-Features: AZwV_QgX7lLGEviU1TVJQCe_Tr5qsrF8KeDJoWqcnWtRNg-LWBtLlLAW_YBkdg4
Message-ID: <CAPZLFzzGOjbbCaV7_c+wss1qLeEEDgHa0+4d_VH4JJ8WeOujmQ@mail.gmail.com>
To: oauth@ietf.org
Content-Type: multipart/alternative; boundary="000000000000892e5c0648790fed"
Message-ID-Hash: SIZAJZDCB7VO3X5GJEDFYVO2CWQB27R7
X-Message-ID-Hash: SIZAJZDCB7VO3X5GJEDFYVO2CWQB27R7
X-MailFrom: habdthilakasiri2002@gmail.com
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
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [OAUTH-WG] Clarification on Nested act Claim Semantics in RFC 8693 Token Exchange
List-Id: OAUTH WG <oauth.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/iC1vO30o6crSI0rlLiFgrmIdZOI>
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>

Hi all,

I am writing to seek clarification regarding the semantics and expected
behavior of the act (actor) claim in OAuth 2.0 Token Exchange as defined in
RFC 8693, particularly in relation to nested delegation chains.

I am implementing OAuth 2.0 Token Exchange (RFC 8693) and have observed
that the act claim becomes nested when the same actor performs multiple
sequential token exchanges. In our scenario, an actor receives an exchanged
token and then the same actor exchanges that same token again (for example,
to change the audience or downscope for a downstream service). This results
in the same actor identifier appearing multiple times within the nested act
claim structure.

Observed Behavior

Original Access Token (subject token received from initial token exchange):

{

  "sub": "37371c22-dc65-47e8-8714-a8d4b54d9fda",

  "client_id": "client-A",

  "act": {

    "sub": "6982ffbf-1ab2-460d-a49f-58a62b03fd80"

  }

}

After Subsequent Token Exchange (the same actor exchanges the token again):

{

  "sub": "37371c22-dc65-47e8-8714-a8d4b54d9fda",

  "client_id": "client-B",

  "act": {

    "sub": "6982ffbf-1ab2-460d-a49f-58a62b03fd80",

    "act": {

      "sub": "6982ffbf-1ab2-460d-a49f-58a62b03fd80"

    }

  }

}

This results in the same actor identifier appearing multiple times in the
nested act claim, because each token exchange adds a new layer to the act
structure, even though it's the same actor performing the exchanges.

Section 4.1 of RFC 8693 states that "a chain of delegation can be expressed
by nesting one act claim within another," but does not explicitly address:

(1) repeated actors in the delegation chain

(2) whether duplicate actors should be preserved or consolidated. Is the
intent that authorization servers always preserve the full delegation
history, even if redundant and the same actor appears multiple times?

I would like to ensure that my implementation is fully compliant with RFC
8693, interoperable with other OAuth implementations, and aligned with
security best practices. Any clarification, guidance, or references to
existing implementation notes or discussions would be greatly appreciated.
If this area is considered underspecified and could benefit from further
clarification in future revisions, I would be happy to contribute to that
discussion.

Thank you for your time and for your continued work on OAuth standards.

Kind regards,

Binula

habdthilakasiri2002@gmail.com