[OAUTH-WG] Re: New I-D: draft-carleton-workload-authz-grant (Workload Authorization Grant)

Aaron Parecki <aaron@parecki.com> Wed, 05 August 2026 01:06 UTC

Return-Path: <aaron@parecki.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 F30DD123C9A66 for <oauth@mail2.ietf.org>; Tue, 4 Aug 2026 18:06:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1785891982; bh=WDDBjLacJc33vx+ZGNs9o92mXTN1v0MWMs4n9VjZyZg=; h=References:In-Reply-To:From:Date:Subject:To:Cc; b=QMP6daFJwwpnn5Wwo03N+JLxld5oMi0m1K1a9N4rz0RKW65BVWCk4b8fipojEjKZF kSLW1PavNSirl/DsIHP5tNU7SCZ7qEh+xBCwoycOtfCjOMKx5ilpJFiQafiVhzp3fm u8uC/JLuGT0NliPPHRu6kUvUxm29169RuOISucS4=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.089
X-Spam-Level:
X-Spam-Status: No, score=-2.089 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, 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=parecki.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 3JEbtRMyvLkZ for <oauth@mail2.ietf.org>; Tue, 4 Aug 2026 18:06:22 -0700 (PDT)
Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com [IPv6:2a00:1450:4864:20::233]) (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 CE3CA123C9A59 for <oauth@ietf.org>; Tue, 4 Aug 2026 18:06:21 -0700 (PDT)
Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-39dbe684115so14746941fa.1 for <oauth@ietf.org>; Tue, 04 Aug 2026 18:06:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=parecki.com; s=google; t=1785891980; x=1786496780; darn=ietf.org; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=7slgjKqQk5gE/k73a74stM1rwiukDHx88ZoL1DSdxrQ=; b=FSmkum/gPscSrq5o2gdimCkzdPL5M7hwdNWPo86R3db0UbIXjcwS5MjnA/MYUfzS77 XTD62Kdop3LkWTrhgeORJUd49MtRZTub2AmSSabXnwf0q1B/qPIBw+7AQ7SH2RFVtRBK GfTEu/xKxs6ZU7Rh76Z1cuRZv4l7gQ6sbLOBBN1ipXy4NGm0Hbc4bYImMYEyuzdvU2WW SLUPgpiM9UNkUsNHMwlwVqtxz/TZ1nBBLRl+l2nB8r1yxBtY5gM4RGV5uV0JCaxv8PK2 A8hnZjAodChyFNQmAwW8J9g5cOe7wz4ZQa/k8Reg9UEgWIUAqhiONiPxahzXa7YMW//R Q9ag==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785891980; x=1786496780; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=7slgjKqQk5gE/k73a74stM1rwiukDHx88ZoL1DSdxrQ=; b=bhnzzJRFYG+jP9py5TXC/gNswUT4Axw3EyUMKcJW0jP45VgDK2XPtc/sQaRQ8PzBbi 6ONjN1pknfQKRbFOXFSdDNaUT8XTSdqssjw8YuZgWN7tvESHBRD6zz/+sjnURmFZlFG6 dHDxyrHvN+36kLTruIZ9a4yOZCnHqBPuaeCJynwL/Dpq+yshbmOjiLWesf1o9IRg1jvz 6z5QeEI41Edd7aX4TYvW7XvJThcCZ7SvUXn790SLHhB578WzUWFdoKW1AEDoyM/J98gV mXKz9txsyY9BXwHewmb+sw3UKLFmVex2FzBL6Ik8cdVzv/mrQZtZl1EYnSA+6WYpk80J rnfw==
X-Forwarded-Encrypted: i=1; AHgh+RpV8ls/shK9RyUyIRS/eaYKol9gC0vNavqHcol1LqnUMp3JQxdB8s9orYS2V/CIANz2nKV0VQ==@ietf.org
X-Gm-Message-State: AOJu0YxUi2h3WHLmSJKgpajbRpl9XqoWuGGiNsLiLl/Ymt9gWe8OwowS HPJF0/yIzKvn+K/ungzmrYss1Zy4Trhx5+syAnf0UlA/wGpgyMHKFjgOqACuP/Ro27p+09R2s1p 3WM5qUA==
X-Gm-Gg: AR+sD13iPwHWiLGvzHdLs/Eq2cucRhxCm2/GysfeTw2TJ9n3/meJ9CmS9Rj/+Z09XHP X8PtTUzZFhnGY4e2T9uVO+vMupkOZ+oK1C4JJ1S03ItpqrHuDJ3gFrDdhkQQtrNhiQ6TNUkZhS8 waJwD0fPm4cmYHgKY0o8qoL63cev1+JR7vtUgOzBqZm2pus/RYAphml67CtBWehCnl3fSh8pa6f QiIfYe6O8aY27vjJ5V5x9CJt8SLfMdA6yoqbY/sqQdxp19bPp54/v6mnOFJ+/SYtZe65/RodpJ+ hJqiHYo5mLcCVad1xEBMiFYchkxpK46fODYGhnEeDg0jkwBdgJK96JGuHQskGaxmS8praqE0b4U BwHwV5gZ5CRmGPjjZvGVqDTppFJL0SO+fb0OrWO4oYJ+wdlJeG5gmwHmW70QgqkoCtXtzz9Q2iU qP8kYYV/NrB8Z91qHG6hevABdUnTfwYyzGsqkLUCL0ERGpYRAGejOhLti1CAWdBENZLSBI4GYNi znN4PtqtwTslJ7wB0O7uklyHQ==
X-Received: by 2002:a05:651c:a110:10b0:393:a68e:fd3e with SMTP id 38308e7fff4ca-39fae80c7a3mr13001551fa.12.1785891980315; Tue, 04 Aug 2026 18:06:20 -0700 (PDT)
Received: from mail-lj1-f182.google.com (mail-lj1-f182.google.com. [209.85.208.182]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-39fb98d87c4sm3583211fa.10.2026.08.04.18.06.19 for <oauth@ietf.org> (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 Aug 2026 18:06:19 -0700 (PDT)
Received: by mail-lj1-f182.google.com with SMTP id 38308e7fff4ca-39c74722e27so6487021fa.0 for <oauth@ietf.org>; Tue, 04 Aug 2026 18:06:19 -0700 (PDT)
X-Forwarded-Encrypted: i=1; AHgh+RqNwiAjvTrc7aTcbvH/7DGCthDQeox6s3diUXgxKpn8kj43QYSUvmOikkq17Vb/p3GOAgFzOA==@ietf.org
X-Received: by 2002:a05:651c:2227:b0:39f:af21:75d7 with SMTP id 38308e7fff4ca-39faf217819mr19172841fa.2.1785891979185; Tue, 04 Aug 2026 18:06:19 -0700 (PDT)
MIME-Version: 1.0
References: <CABfBPV=+-6JVw=EG-smbm1egLGweFuNq-KBFQ07hbuHZe20wgg@mail.gmail.com> <CAPVrLW0867Qz-hjsDB-c+Y0DadrP8=AUZZ8bGEkTz_HT+8eBzw@mail.gmail.com> <CAGBSGjqtLUktpR4+vMXGP13omsbN+YZ=m0u7MyAOsVC0SVX7Kw@mail.gmail.com> <CAPVrLW2nsKuALYnEOPXdbmbn7mnThEVz8Ag18vnQkusyeYL-YA@mail.gmail.com> <VI0PR04MB1184180BC17F1F2ED1476984993D52@VI0PR04MB11841.eurprd04.prod.outlook.com> <CABfBPVk43tf_C25ZVaUTv5oEYDahTVFz5KB7-7uPoh1XSmbf7Q@mail.gmail.com>
In-Reply-To: <CABfBPVk43tf_C25ZVaUTv5oEYDahTVFz5KB7-7uPoh1XSmbf7Q@mail.gmail.com>
From: Aaron Parecki <aaron@parecki.com>
Date: Tue, 04 Aug 2026 18:06:07 -0700
X-Gmail-Original-Message-ID: <CAGBSGjpucV83DCaBqKUQZ9UTM0QH70C2BSkh=rM8t843-zPoPg@mail.gmail.com>
X-Gm-Features: AUfX_myHzSiVTxgM0CCRqJ6SqGFj9AIsv1vk3K4_ZgqoIYPFmvJguLEUB5C5wpA
Message-ID: <CAGBSGjpucV83DCaBqKUQZ9UTM0QH70C2BSkh=rM8t843-zPoPg@mail.gmail.com>
To: Paul Carleton <paulc@anthropic.com>
Content-Type: multipart/alternative; boundary="00000000000006d41e065842610f"
Message-ID-Hash: 2CUWNJFBOWNENJM6UCDLT2FNNG62WLZW
X-Message-ID-Hash: 2CUWNJFBOWNENJM6UCDLT2FNNG62WLZW
X-MailFrom: aaron@parecki.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
CC: Yaron ZEHAVI <yaron.zehavi=40rbinternational.com@dmarc.ietf.org>, Karl McGuinness <me@karlmcguinness.com>, "oauth@ietf.org" <oauth@ietf.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [OAUTH-WG] Re: New I-D: draft-carleton-workload-authz-grant (Workload Authorization Grant)
List-Id: OAUTH WG <oauth.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/8gyMuk9PBctSDYuX39CfK29y_qo>
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>

fwiw a deployment option for ID-JAG could be a consumer platform issuing
ID-JAGs itself. This is outlined in appendix A.2
https://www.ietf.org/archive/id/draft-ietf-oauth-identity-assertion-authz-grant-04.html#appendix-A.2
but imagine the case where the "CIAM Platform" in that example is actually
the same platform as where the client is running. The key thing is the
relationship between the Resource AS and the ID-JAG issuer. The "IdP" role
in ID-JAG is not limited to being what you typically think of as an
enterprise IdP.


On Tue, Aug 4, 2026 at 5:57 PM Paul Carleton <paulc@anthropic.com> wrote:

>
> Karl, I agree that shape sounds a lot like the "BYO-IdP" model listed in
> the open issue. A few things I want to be true:
>
>    - An RS adopting ID-JAG has an easy time adapting to accept WAG (i.e.
>    same / similar token shape + similar JIT semantics)
>    - An RS adopting WAG has an easy time adapting to accept ID-JAG
>    - An RS adopting WAG does not necessarily need to integrate with an IdP
>
> This last bullet point pushes me toward making this a separate draft. The
> initial and simplest deployment shape I am thinking of is similar to a
> kubernetes cluster's OIDC provider being used in a workload identity
> federation flow.  In that deployment, the kubernetes cluster is not a
> full-blown IdP, it is just trusted to issue identities to its pods. There
> is no expectation that Kubernetes clusters register their pod identities
> with an IdP.
>
> Similarly the agent platform is not a full IdP, it is just responsible for
> giving identities to the agents in its domain.  I agree that there are
> benefits to the IdP-integrated deployment model, but I want to allow for
> the simpler model initially.
>
> ID-JAG could also allow for platform's issuing their own non-IdP tokens,
> but that feels like bypassing the IdP when it is human-based access.  With
> workloads, it feels more natural to have a deployment model with the
> platform being directly responsible for issuing tokens (similar to k8s oidc
> providers).
>
> That being said, the token shape, etc., should be similar regardless of
> which draft its specified in, so it seems worth aligning regardless of
> where it ends up. The claims I want to align on here would also be relevant
> to ID-JAG JIT provisioning.
>
> Yaron -- thanks for this. I agree we want PoP constraining. Re: OAuth
> SPIFFE Client Authentication
> <https://www.ietf.org/archive/id/draft-ietf-oauth-spiffe-client-auth-02.html>,
> I have sketched out the shapes here
> <https://pcarleton.github.io/draft-carleton-workload-authz-grant/request-shapes.html>.
> I think it solves a slightly different problem in that it relies on the RS
> understanding the SPIFFE credential, where in this case I want the WAG to
> be compatible with SPIFFE but not require SPIFFE. I would lean more towards
> CIMD + private_key_jwt for this particular pattern.
>
> On Mon, Aug 3, 2026 at 5:20 PM Yaron ZEHAVI <yaron.zehavi=
> 40rbinternational.com@dmarc.ietf.org> wrote:
>
>> Hello everyone,
>>
>>
>>
>> This looks like a useful addition to OAuth SPIFFE Client Authentication
>> <https://www.ietf.org/archive/id/draft-ietf-oauth-spiffe-client-auth-02.html>,
>> which also uses workload identity as RFC7521/3 assertion JWTs, but stops
>> short of using them as JAGs, rather focuses on client authentication for
>> other grants.
>>
>>
>>
>> A couple remarks:
>>
>>    - This draft feels more naturally positioned as another profile of identity
>>    chaining
>>    <https://www.ietf.org/archive/id/draft-ietf-oauth-identity-chaining-17.html>,
>>    alongside ID JAG
>>    <https://www.ietf.org/archive/id/draft-parecki-oauth-identity-assertion-authz-grant-05.html>.
>>    The latter originates from challenges of streamlining cross-domain SSO for
>>    humans by removing friction, and now tackles further aspects in this space
>>    such as required claims for JIT user provisioning, deferred responses etc.
>>    - The JAG should be PoP constrained, which is easily achievable by
>>    including the agent’s cnf claim in it. This mechanism is proposed by OAuth
>>    2.0 JWT Authorization Grant with DPoP Binding
>>    <https://www.ietf.org/archive/id/draft-parecki-oauth-jwt-dpop-grant-01.html>
>>    and we use it with good results in applicable JAG flows in our company.
>>
>>
>>
>> Yaron
>>
>>
>>
>>
>>
>> Classification: GENERAL
>>
>> *From:* Karl McGuinness <me@karlmcguinness.com>
>> *Sent:* Monday, August 3, 2026 9:47 PM
>> *To:* Aaron Parecki <aaron@parecki.com>
>> *Cc:* Paul Carleton <paulc=40anthropic.com@dmarc.ietf.org>;
>> oauth@ietf.org
>> *Subject:* [OAUTH-WG] Re: New I-D: draft-carleton-workload-authz-grant
>> (Workload Authorization Grant)
>>
>>
>>
>> This message is from an external sender - be cautious, particularly with
>> links and attachments.
>>
>>
>>
>> I didn't see it as out of scope for ID-JAG because it's still acting as a
>> principal managed by the IdP across domains which could have RAS specific
>> subject identifiers and authorization claims. IdPs already need to solve
>> the challenge of managing different principal types, lifecycle,
>> entitlements, provisioning, etc.  Its reduces a lot of cognitive overhead
>> for the developer to just think of ID-JAG as SSO where the upstream IdP
>> manages all the identity complexity as I just need issuer scoped `sub` I
>> can use for subject resolution.  I acknowledge that my take my not be
>> shared which is why I was hoping to get more attention on the issue.
>>
>>
>>
>> On Mon, Aug 3, 2026 at 12:36 PM Aaron Parecki <aaron@parecki.com> wrote:
>>
>> That's basically how we were thinking of it. I just felt like it was
>> something a bit out of scope of the ID-JAG spec. But the idea is very much
>> to reuse the existing relationship established between the Resource AS and
>> IdP for ID-JAGs, and reuse it for workloads as well.
>>
>>
>>
>>
>>
>>
>>
>> On Mon, Aug 3, 2026 at 12:33 PM Karl McGuinness <me@karlmcguinness.com>
>> wrote:
>>
>> Paul,
>>
>> Interesting draft. I'll have to dive in deeper. My initial reaction is
>> that this draft lines up with something I raised in ID-JAG issue #73 (
>> https://github.com/oauth-wg/oauth-identity-assertion-authz-grant/issues/73)
>> whether ID-JAG should also cover workloads acting as themselves. The issue
>> sketches Workload and Agent Identity SSO modes where the assertion's sub is
>> the workload or agent itself rather than a chained user identity, which is
>> the same shape as your grant. The appeal of reusing ID-JAG was one simple
>> SSO model for agents, workloads, and clients, whether acting on behalf of a
>> user or as themselves, and it stays aligned with the standard identity and
>> authorization claims (which also bears on your question 2).
>>
>> The deployment I was picturing looks a lot like the Enterprise IdP
>> variant in your issuer-placement open issue: the workload brings its
>> credential to the IdP (a WIMSE WIT, say), the IdP issues the grant, and the
>> platform picks it up by token exchange. If the resource AS is already
>> integrated with the IdP, things get simpler, since the IdP is already
>> handling agent lifecycle, entitlements, and governance through SCIM or JIT.
>> The resource AS ends up with one federation relationship instead of an
>> allowlist entry per platform.
>>
>> Would love to hear your thoughts, as there was some initial positive
>> signal on #73 but I was hoping for a larger discussion on the topic.
>>
>> Karl
>>
>>
>>
>> On Mon, Aug 3, 2026 at 11:06 AM Paul Carleton <paulc=
>> 40anthropic.com@dmarc.ietf.org> wrote:
>>
>> Hi all,
>>
>> Good to meet many of you in Vienna!
>>
>> I've posted an early individual draft based on some discussions had over
>> that week. The draft profiles RFC 7523 for agent platforms: an agent
>> obtains access tokens by presenting a platform-signed JWT authorization
>> grant at the resource's authorization server. I've also posted this to
>> wimse@, since the identity in the grant is a WIMSE workload identity
>> produced by ordinary WIMSE issuance and cross-domain federation; this draft
>> covers the OAuth-facing hop where an existing AS consumes it.
>>
>> This defines no new grant type, no new token format, and no change to
>> RS-to-AS trust. A service with an existing OAuth deployment changes only
>> its token endpoint. Trust is one admin-level entry per customer tenancy
>> with keys resolved by reference, and the AS accepts previously-unseen
>> subjects under a trusted issuer just in time; there is no client
>> registration step.
>>
>> Relative to adjacent work: same JWT-authorization-grant shape as ID-JAG
>> and draft-ietf-oauth-identity-chaining, but the subject is the agent
>> workload itself rather than a chained user identity. The agent-as-client
>> alternative (spiffe-client-auth, attestation-based-client-auth, CIMD) is
>> addressed in question 1 below.
>>
>> Datatracker:
>> https://datatracker.ietf.org/doc/draft-carleton-workload-authz-grant/
>> Editor's copy:
>> https://pcarleton.github.io/draft-carleton-workload-authz-grant/draft-carleton-workload-authz-grant.html
>> Repo: https://github.com/pcarleton/draft-carleton-workload-authz-grant
>>
>> Feedback I'm most looking for:
>>
>> 1. The draft treats the agent as the grant subject, not a new client ID
>> per-instance, and I think that's the right shape; thank you Brian Campbell
>> for nudging me in that direction. It's one concrete stance in the ongoing
>> client-instance discussion: consistent with the adopted stack (ATTEST,
>> spiffe-client-auth, and the McGuinness drafts all keep one logical
>> client_id and surface the instance elsewhere), and it keeps the adoption
>> floor at "jwt-bearer, which already ships everywhere." Additional support
>> for that framing would be helpful, or for concrete scenarios where
>> subject-not-client breaks down.
>>
>> 2. Claim naming for platform-asserted attributes: reuse the RFC 9068
>> roles/groups/entitlements registrations, or register new names? (Related
>> question posed to wimse@ about whether the AIMS work wants to own this
>> vocabulary.)
>>
>> 3. Input on Audience handling relative to rfc7523bis.
>>
>> Requested cluster: Cross-Domain Chaining. Related: Client Authentication.
>>
>> Most sections are deliberately TODO. Feedback here or on the repo is
>> welcome.
>>
>> Paul
>>
>> _______________________________________________
>> OAuth mailing list -- oauth@ietf.org
>> To unsubscribe send an email to oauth-leave@ietf.org
>>
>> _______________________________________________
>> OAuth mailing list -- oauth@ietf.org
>> To unsubscribe send an email to oauth-leave@ietf.org
>>
>> This message and any attachment ("the Message") are confidential. If you
>> have received the Message in error, please notify the sender immediately
>> and delete the Message from your system, any use of the Message is
>> forbidden. Correspondence via e-mail is primarily for information purposes.
>> RBI neither makes nor accepts legally binding statements via e-mail unless
>> explicitly agreed otherwise. Information pursuant to § 14 Austrian
>> Companies Code: Raiffeisen Bank International AG; Registered Office: Am
>> Stadtpark 9, 1030 Vienna, Austria; Company Register Number: FN 122119m at
>> the Commercial Court of Vienna (Handelsgericht Wien).
>>
>