[OAUTH-WG] For review/discussion: where an AS gets the authorization claims RFC 9068 recommends

Omri Gazitt <ogazitt@gmail.com> Fri, 14 August 2026 19:15 UTC

Return-Path: <ogazitt@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 9341212A00E80 for <oauth@mail2.ietf.org>; Fri, 14 Aug 2026 12:15:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1786734934; bh=oDiCGEnNK/xuuHfshnETDXoOH/Bu+YWsF1LS7fC+I/o=; h=References:In-Reply-To:From:Date:Subject:To; b=D5yCu9FrICF7lIb1OJtwf/UuCmKQG4QyXhiKRMtKxts0CcigHSfO13od5NfmuUQ9M fTyc8og0F433p/QXzFUiB4tZNLKT0nxB3bdzaQAmmbPs/FaB7UJdTmM/F0wkVaH0WY RkW4yWuCdTjH8aPA6XrAx/BNKVTBYuGPdY3+ieoA=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] 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 n6Y97pkvpvUG for <oauth@mail2.ietf.org>; Fri, 14 Aug 2026 12:15:33 -0700 (PDT)
Received: from mail-qk1-x729.google.com (mail-qk1-x729.google.com [IPv6:2607:f8b0:4864:20::729]) (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 DD6E512A00E77 for <oauth@ietf.org>; Fri, 14 Aug 2026 12:15:33 -0700 (PDT)
Received: by mail-qk1-x729.google.com with SMTP id af79cd13be357-930f618435cso79701785a.3 for <oauth@ietf.org>; Fri, 14 Aug 2026 12:15:33 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1786734927; cv=none; d=google.com; s=arc-20260327; b=A0oCmQk473+yozImpqepFmWfnKpvtQa6jo3bMSRj1IeUr1d7RsR/V3X59F0c6R5K6A 4huSupAnaLPlg4czmfZEy76JX4K+pXZULubYiDWvOpVZubPHBQqviQ8oHxz4XOMu0QAT ma29tkDizplC68wcK/AWlYkAzwZHLkBufszh/SJlcDwG7ROPHA4wqxe8dSh1E5TyGwmg Mpe1eqZhHutQxcFPVx9vM9jH74aWxWEsO47l1NAYSa/WSpra3pMn7r3UXdr1stg+UFaL bKHYA5kd8wW0DYbdy4hjLbaKi05lX9/l3JoTXzmF4pWfZR3GK5V0HKBfpO4jtXMy+zke 0CLA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=+Xj/oTp8tM6hAhOrGQSeoB/Cv0358ds6ktW3vokY1FA=; fh=4hvm/odsAU8m+5w3Y68HR6FKRzlFMwEVjOTXR/i1AsA=; b=LKfFap+TIYOyhxiwAyevKFTSEESN58MqVezjziKIARL/WlXfHtKY8PmscLBusjYOEd GoeZs4CnuTNnGqqbuScqxXKTqfggyv35cj/jpaoWfGgtPNBKiEnr5VxCsOEwp51kyQIs N07KzCbJfD0VM+vHysBLOW2qHxIg9yAU5roBGu92uogskkIVrZVJEFlsi/pvz+cY/3NW 4Ogw7n2wLtQWJxIdx3lGxiu1z/ozILeeJsi/Pq/xSX0xedksa75S2/c9LiS35LQJQde1 VDYZCLPcaQ/f18z+bjF9Up5roJUVcKlAdz8ayDfPr46IJflawQT+OC7DludIRnfyuoza KY+w==; darn=ietf.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786734927; x=1787339727; darn=ietf.org; h=content-type:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=+Xj/oTp8tM6hAhOrGQSeoB/Cv0358ds6ktW3vokY1FA=; b=UMU3ExkaO1ITLagd3vfe3AKwnMi2MiA4E3OuTrV6pQKWlIm361ZpG6NNK47yOSp1D9 DeCKZzSWxNM/gpx55Y0hHvvsvpG+KsM/9mu3tburRqnNJjhwkB7ay1XMjhJCM3JlUCOZ aFP5p2sSessONMUWafVewUU0JuTXf5JJUvbQBdnRzMYTTjI5HQaBTN42SpDpq/tBLOsy 9+V5mql6nd9CY1zcgdbOIVKqN/mB7sRBcSxodk5tyA+ASFhEnT2FYi59GZd6H/eK42Vm 0tEmWTK1TFyuufUWrGeIZSUpPVBuS6xdY7NAfVEMwThYQYM1cEfif2AvmPIHsFc6ELf6 vuMg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786734927; x=1787339727; h=content-type: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=+Xj/oTp8tM6hAhOrGQSeoB/Cv0358ds6ktW3vokY1FA=; b=gZStxkPpTww/aEr10FMzTpHPIBJR4K9auwnQF549zxJWQZ/23hfDjo+9LjrznZ9McH gHiGG5ssWUMEfP0JXPJ6gZ8tLtdYLsjHjKxxeubxCsE5TOGC/jRje1+q8Yza4WnNIs25 CjNN+M1ly7XXLy3ROqRMrMRP9gxZtaNtB3+EUS8lnkhornYtiLAAQv3R+x2abtlSogaJ SjgjPpBHfzdoV1ZI2C4438Mpb4KQlvkXPJ3TLsxwwfxTTyVieSi7WujmFWgz9uyzw/L2 F4ZXzo71tBuUaFOaIrUXufO0DsvjWcfhj/Rkoa7+OzzORNQC2AOwN5lX+C2csAOgcLCY wkCw==
X-Gm-Message-State: AOJu0YzQVWjGBiXSu1t7dSkW27fys6pa4xafhB7ePIcFhEZX+lza6X/i ubgKODSMrrZre2HJC69PRCfvau+UcqlullgX2CmGzkBH88ykE+ctZIm5Iogj8ImRrZDfwrsO6u2 4T9RPuyKhmkFfvLQJGjHwCQa07txyQBGz9HnE
X-Gm-Gg: AR+sD125YJnAT3qVm4KdTz0F1OJ/iRq+JluS8HyCPjq0G9OoD8mpZBqL7Ry92AfVT9C pOm+hVgpINnYq1KrRXQyS8Pc5eo5i5tBwnOo4cUVtfcwcQrLNq5AAAVO7bSq4DM/rfzqZnQdt9t /8RRFWejh82WZquYBOLfUvCcuBn2DG9qQGpmfakqdUhaGekjpR3jrG01DzaMnuodD5Cio35nQFZ wwqLnMmrEHoeCWk/jsYQZRsjASaMZ3wgkdVMPPBQ2KLzv7t2Bc/tpchqfBT7wZGVK74SJltGGsZ DnEg4KYxTS+CaLndHh/qjvybxPm2NxO74KjRlChilj/nUvLw/QGAzF8q8C3lkdxJsyxD4BdQG1R WyjHqxbK0EffPWT+hzeyxZBSk53DiTN4mA+fbT1LG9KpLuf/4oNTPV8+ZEvk=
X-Received: by 2002:a05:620a:211a:b0:936:af32:aea8 with SMTP id af79cd13be357-936d22cf7d2mr760095085a.31.1786734926667; Fri, 14 Aug 2026 12:15:26 -0700 (PDT)
MIME-Version: 1.0
References: <178673402378.97581.9115037488034740847@dt-datatracker-7c6ddbc678-lb5nk>
In-Reply-To: <178673402378.97581.9115037488034740847@dt-datatracker-7c6ddbc678-lb5nk>
From: Omri Gazitt <ogazitt@gmail.com>
Date: Fri, 14 Aug 2026 12:15:15 -0700
X-Gm-Features: AUfX_my9Fa72SumScZzA28NcKUjTVyTuPz1nNbOr7_N8M76i-ORgUZP-zOgCSXk
Message-ID: <CAHG5M7AybGNmEw23y-0uUvvzeUt6w0=xoBBL_zXuZX4V67_Tww@mail.gmail.com>
To: oauth <oauth@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000009ca3fb065906a451"
Message-ID-Hash: FK24AIPG3ZAM72GYQPEHP5MCXPQAPRTY
X-Message-ID-Hash: FK24AIPG3ZAM72GYQPEHP5MCXPQAPRTY
X-MailFrom: ogazitt@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] For review/discussion: where an AS gets the authorization claims RFC 9068 recommends
List-Id: OAUTH WG <oauth.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/_sUY_MHercuhMUTyo9OU5Sg292o>
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 folks,

RFC 9068 Section 2.2.3.1
<https://www.rfc-editor.org/info/rfc9068/#section-2.2.3.1> recommends that
an authorization server placing group memberships, roles or entitlements in
a JWT access token draw them from the SCIM user schema, and registers groups,
roles and entitlements as JWT claims. It says what they're called and how
they're encoded. It doesn't say where the authorization server gets them.

In deployments today, they come from a directory, a database or a
vendor-specific hook. What each of them answers is an authorization
question, but there isn't a standard way to ask it.

I've posted a draft
<https://datatracker.ietf.org/doc/draft-gazitt-oauth-authzen-claims/> that
profiles the Resource Search
<https://openid.net/specs/authorization-api-1_0-final.html#name-resource-search-api>
API of OpenID AuthZEN for that step. It binds each claim to a search,
defines how a result set becomes a claim value, and registers the three
bindings RFC 9068 already names.

It's a companion to the two drafts I posted
<https://mailarchive.ietf.org/arch/msg/oauth/O0DUaMCsgRzFRkieDrUez1p7M_4/>
here on August 4, and it doesn't depend on them. Enrichment is a different
decision from issuance, and the draft is strict about keeping them apart: a
search result may populate a claim, and may never influence whether a token
is issued or what authority it conveys. An AS that wants to externalize
claim enrichment and nothing else can apply this on its own.

Two things I'd like feedback on:

   1. *That separation.* A failed or empty search changes which claims
   appear in the token, never whether the token is issued. If there's a
   legitimate case for an enrichment result feeding back into the issuance
   decision, the layering is wrong and I'd rather hear it now.
   2. *Whether the bindings deserve an IANA registry.* The draft asks for
   one recording, per claim, the resource type and action name of the search
   that enumerates it. The alternative is to leave that to deployment
   configuration. The registry exists so an unconfigured authorization server
   and policy decision point interoperate on the three claims RFC 9068 already
   names, and I'm not certain that's worth a registry.

[As in my earlier post: in full disclosure, I am a former co-chair of the
OpenID AuthZEN working group and an editor of the Authorization API, and
have been thinking about how to align the AuthZEN and OAuth ecosystems.]

Thanks in advance for your feedback!

Omri.
--
Omri Gazitt

---------- Forwarded message ---------
From: <internet-drafts@ietf.org>
Date: Fri, Aug 14, 2026 at 12:00 PM
Subject: New Version Notification for
draft-gazitt-oauth-authzen-claims-00.txt
To: Omri Gazitt <ogazitt@gmail.com>


A new version of Internet-Draft draft-gazitt-oauth-authzen-claims-00.txt has
been successfully submitted by Omri Gazitt and posted to the
IETF repository.

Name:     draft-gazitt-oauth-authzen-claims
Revision: 00
Title:    AuthZEN Profile for Authorization Claims in JWT Access Tokens
Date:     2026-08-14
Group:    Individual Submission
Pages:    23
URL:
https://www.ietf.org/archive/id/draft-gazitt-oauth-authzen-claims-00.txt
Status:
https://datatracker.ietf.org/doc/draft-gazitt-oauth-authzen-claims/
HTML:
https://www.ietf.org/archive/id/draft-gazitt-oauth-authzen-claims-00.html
HTMLized:
https://datatracker.ietf.org/doc/html/draft-gazitt-oauth-authzen-claims


Abstract:

   RFC 9068 recommends that an authorization server placing group
   memberships, roles, or entitlements in a JWT access token draw those
   claims from the SCIM user schema.  It says what the claims are named
   and how their values are encoded, and it does not say where an
   authorization server obtains them.  In deployments today they come
   from a directory, a database, or a vendor-specific hook, and the
   question they answer is an authorization question asked of something
   that is not the authorization system.

   This document profiles the Resource Search API of the OpenID AuthZEN
   Authorization API for that purpose.  It binds each authorization
   claim to a search, defines how a search result set becomes a claim
   value, and requires that a search result never influence whether a
   token is issued or what authority it conveys.  It may be applied on
   its own, by an authorization server that externalizes claim
   enrichment but not its issuance decision, or alongside the companion
   framework document that externalizes the decision.



The IETF Secretariat