Skip to main content

Domain-Specific Authorization Schemas for OAuth 2.0
draft-liu-oauth-authorization-schemas-00

Document Type Active Internet-Draft (individual)
Author Dapeng Liu
Last updated 2026-10-12
RFC stream (None)
Intended RFC status (None)
Formats
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-liu-oauth-authorization-schemas-00
Web Authorization Protocol                                        D. Liu
Internet-Draft                                                   Alibaba
Intended status: Standards Track                         12 October 2026
Expires: 15 April 2027

          Domain-Specific Authorization Schemas for OAuth 2.0
                draft-liu-oauth-authorization-schemas-00

Abstract

   This specification defines a framework for constructing fine-grained
   authorization requests in OAuth 2.0 using domain-specific
   authorization schemas: structured definitions of behavioral
   boundaries for a particular application domain.  Schema instances are
   carried in authorization requests via authorization_details; upon
   approval, the instance governs the authorization associated with the
   issued access token.  Approved instances have a lifecycle: they
   become active upon approval and end, with defined protocol
   consequences for token issuance, refresh, and resource access.
   Resource servers verify client behaviors against the approved schema
   instance at runtime through deterministic constraint evaluation.
   Authorization servers review requested schema instances against
   server-side authorization policies.  This specification also defines
   a negotiation pattern, reverse-guided authorization, allowing
   resource servers to reference a schema profile in error responses,
   guiding clients toward the authorization required for their next
   action.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on 15 April 2027.

Liu                       Expires 15 April 2027                 [Page 1]
Internet-Draft            Authorization Schemas             October 2026

Copyright Notice

   Copyright (c) 2026 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info) in effect on the date of publication of this document.
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.  Code Components
   extracted from this document must include Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
     1.1.  Scope . . . . . . . . . . . . . . . . . . . . . . . . . .   4
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   4
   3.  Domain-Specific Authorization Schema  . . . . . . . . . . . .   6
     3.1.  Type Identifiers  . . . . . . . . . . . . . . . . . . . .   6
     3.2.  Framework Requirements  . . . . . . . . . . . . . . . . .   7
     3.3.  Framework Fields  . . . . . . . . . . . . . . . . . . . .   8
     3.4.  Bounded Work and Task Requests  . . . . . . . . . . . . .   9
     3.5.  Guardrail Instances . . . . . . . . . . . . . . . . . . .   9
     3.6.  schema_ref Claim  . . . . . . . . . . . . . . . . . . . .  11
   4.  Protocol Flow . . . . . . . . . . . . . . . . . . . . . . . .  12
   5.  Reverse-Guided Authorization  . . . . . . . . . . . . . . . .  13
     5.1.  Error Response Format . . . . . . . . . . . . . . . . . .  13
     5.2.  Relationship to insufficient_scope  . . . . . . . . . . .  15
     5.3.  Relationship to RAR Metadata and Error Remediation  . . .  15
     5.4.  Schema Profile Structure  . . . . . . . . . . . . . . . .  16
     5.5.  Profile-to-Instance Example . . . . . . . . . . . . . . .  17
     5.6.  Client Adaptive Behavior  . . . . . . . . . . . . . . . .  18
     5.7.  Denial Semantics  . . . . . . . . . . . . . . . . . . . .  18
   6.  Authorization Server Processing . . . . . . . . . . . . . . .  19
     6.1.  Instance Validation . . . . . . . . . . . . . . . . . . .  19
     6.2.  Instance Registration . . . . . . . . . . . . . . . . . .  20
     6.3.  Error Responses . . . . . . . . . . . . . . . . . . . . .  20
     6.4.  Approval Basis  . . . . . . . . . . . . . . . . . . . . .  22
     6.5.  Refresh Token Handling  . . . . . . . . . . . . . . . . .  23
   7.  Resource Server Enforcement . . . . . . . . . . . . . . . . .  23
     7.1.  Instance Retrieval  . . . . . . . . . . . . . . . . . . .  24
     7.2.  Constraint Evaluation . . . . . . . . . . . . . . . . . .  24
     7.3.  Enforcement Decision  . . . . . . . . . . . . . . . . . .  25
   8.  Instance Lifecycle  . . . . . . . . . . . . . . . . . . . . .  25
   9.  Token Exchange (RFC 8693) . . . . . . . . . . . . . . . . . .  28
   10. Security Considerations . . . . . . . . . . . . . . . . . . .  29

Liu                       Expires 15 April 2027                 [Page 2]
Internet-Draft            Authorization Schemas             October 2026

     10.1.  Trust Model  . . . . . . . . . . . . . . . . . . . . . .  29
     10.2.  No Executable Content  . . . . . . . . . . . . . . . . .  30
     10.3.  Instance Integrity . . . . . . . . . . . . . . . . . . .  30
     10.4.  Instance Size Limits . . . . . . . . . . . . . . . . . .  30
     10.5.  Reverse-Guided Authorization . . . . . . . . . . . . . .  31
     10.6.  Guardrails . . . . . . . . . . . . . . . . . . . . . . .  31
   11. Privacy Considerations  . . . . . . . . . . . . . . . . . . .  32
   12. IANA Considerations . . . . . . . . . . . . . . . . . . . . .  33
     12.1.  Domain-Specific Authorization Schema Types Registry  . .  33
     12.2.  JWT Access Token Claims Registration . . . . . . . . . .  34
     12.3.  WWW-Authenticate Parameter Definition  . . . . . . . . .  34
     12.4.  OAuth Protected Resource Metadata Registration . . . . .  35
     12.5.  Error Code Usage . . . . . . . . . . . . . . . . . . . .  35
   13. References  . . . . . . . . . . . . . . . . . . . . . . . . .  35
     13.1.  Normative References . . . . . . . . . . . . . . . . . .  35
     13.2.  Informative References . . . . . . . . . . . . . . . . .  37
   Contributors  . . . . . . . . . . . . . . . . . . . . . . . . . .  38
   Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .  38
   Example: transaction_authority  . . . . . . . . . . . . . . . . .  38
   Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . . .  41
     Machine-Readable Constraint Semantics Beyond JSON Schema  . . .  41
     URI-Valued Type Identifiers . . . . . . . . . . . . . . . . . .  41
     Per-Instance Subset Policy Switch . . . . . . . . . . . . . . .  41
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .  41

1.  Introduction

   When a client performs a delegated task such as "help me find and buy
   a laptop", the sequence of operations (product search, price
   checking, coupon search, cart management, payment, shipping
   selection) is determined at runtime.  Scopes cannot express the
   constraints a deployment actually wants to approve for such work: an
   overly broad scope grants unchecked power (violating least
   privilege), while an overly narrow scope causes frequent
   authorization failures that interrupt task execution.

   This specification builds on OAuth 2.0 and Rich Authorization
   Requests (RAR) [RFC9396] by defining a profile based on _domain-
   specific authorization schemas_. A domain-specific authorization
   schema is a structured description of behavioral boundaries for a
   particular application domain, such as transaction boundaries for
   e-commerce operations.  A client requests authorization by submitting
   a schema instance in authorization_details; the Authorization Server
   reviews it against server-side authorization policies, and upon
   approval the instance governs the authorization associated with the
   issued access token.  At runtime, the Resource Server verifies each
   client behavior directly against the approved schema instance through
   deterministic constraint evaluation; when a behavior exceeds the

Liu                       Expires 15 April 2027                 [Page 3]
Internet-Draft            Authorization Schemas             October 2026

   approved boundaries, the Resource Server returns structured schema
   requirements guiding the client toward the required authorization
   (Section 5).

1.1.  Scope

   This specification defines the profile: how schema instances are
   constructed and discovered, requested, reviewed, bound to access
   tokens, given a lifecycle, verified at resource servers, and
   negotiated through structured error responses.

   The governance layer is out of scope: how an organization records
   authorization decisions as approval evidence is defined by
   complementary work.  This specification defines the binding-layer
   state machine on which such governance decisions act; it does not
   define the decisions themselves.

   Guardrails (Section 3.5) are type-scoped: a guardrail instance of one
   schema type constrains instances of that type only.  The only cross-
   type apparatus available above specific schemas is the RAR common
   fields (actions, locations) of [RFC9396] Section 2.  This
   specification does not define a universal guardrail spanning multiple
   schema types.

   Out of scope: schema definitions for particular domains are expected
   in follow-up specifications, and the transaction_authority type
   (Appendix "Example: transaction_authority") is a non-normative worked
   example; how a deployment determines work membership or plans task
   sequences is not specified; how the Authorization Server expresses
   its internal review policies is an implementation decision.

2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

   Domain-Specific Authorization Schema:  A structured definition of
      task and authorization boundaries for a particular application
      domain, identified by an authorization details type (a short name
      or an HTTPS URI, Section 3.1) and usable by clients to construct
      authorization requests.  A schema defines constraint fields whose
      values are machine-verifiable at runtime through deterministic
      evaluation.

   Schema Instance:  A concrete authorization details object conforming

Liu                       Expires 15 April 2027                 [Page 4]
Internet-Draft            Authorization Schemas             October 2026

      to a domain-specific authorization schema, carried in
      authorization_details.  When approved by the Authorization Server,
      the schema instance is bound to the access token and verified by
      the Resource Server against each client behavior at runtime.

   Bounded Work:  The overall objective for which a client requests
      authorization, such as "help me find and buy a laptop".  The
      work_id assigned by the AS upon approval is the identity of the
      approved work.  A work authorization is a schema instance approved
      for the overall work; task requests performed under the work are
      verified against its boundaries (Section 3.4).

   Task:  A unit of activity performed by a client in pursuit of a
      bounded work.  A task-level authorization request references the
      work it serves via the work_id field.

   Task-in-Work Evaluation:  The deterministic verification, performed
      by the Resource Server, that a requested task is consistent with
      the boundary constraints of the approved work instance.

   Guardrail Instance:  A schema instance used as an upper bound on
      other instances of the same type (Section 3.5).

   Approver:  The party whose authorization decision establishes a
      governing authorization for requested work.  The approver is
      authenticated, is entitled to approve the bounds in question, and
      is recorded on the approved instance as the party accountable for
      the decision.

   Subject:  The user on whose behalf the work is performed.  The
      subject and the approver are often the same person but need not
      be; for example, a manager can approve work performed on an
      employee's behalf.

   AS Review Policy:  Server-side authorization policies used by the
      Authorization Server to review requested schema instances before
      approval.  Review policies are managed by the Authorization
      Server.

   Policy Enforcement Point (PEP):  The entity that enforces
      authorization decisions, allowing, denying, or adapting the
      client's request.  In this specification, the Resource Server acts
      as the PEP, verifying each behavior against the approved schema
      instance.

   Rich Authorization Requests (RAR):  A framework defined in [RFC9396]
      for expressing fine-grained authorization requirements through the
      authorization_details parameter.

Liu                       Expires 15 April 2027                 [Page 5]
Internet-Draft            Authorization Schemas             October 2026

3.  Domain-Specific Authorization Schema

   This specification defines a profile for domain-specific
   authorization schemas used with Rich Authorization Requests (RAR).
   Schema instances carried in authorization_details are structured
   data; when approved by the Authorization Server, the instance is
   bound to the access token and verified by the Resource Server at
   runtime through deterministic constraint evaluation.

   Schema instances are carried within the authorization_details
   parameter [RFC9396] as the primary mechanism.  This specification
   standardizes the binding of the approved instance to the access
   token, not the specific input channel by which the instance reaches
   the Authorization Server; schemas can accordingly be used with any
   authorization flow that supports authorization_details.
   Implementations MAY combine domain-specific authorization schemas
   with other RAR types in a single request.  Resource servers MAY
   advertise the authorization details types they support via
   authorization_details_types_supported ([RFC9728]); the relationship
   to per-type metadata is described in Section 5.3.

3.1.  Type Identifiers

   The type field of a schema instance identifies the domain-specific
   authorization schema it instantiates.  A type value is either:

   *  a _short name_: a lowercase ASCII string with optional underscore
      separators, no spaces, no leading or trailing whitespace; or

   *  an _HTTPS URI_: e.g., https://api.shop.example/schemas/
      transaction_v2.

   RFC 9396 imposes no syntax constraints on the type field, so URI-
   valued types are wire-compatible.  The registry of Section 12.1 is an
   optional endorsement channel for schemas intended for cross-vendor
   reuse, not an admission control (the hard gates are "known to the
   Authorization Server" on the AS side and deterministic resolvability
   on the Resource Server side).

   Type identity is exact string match: two instances have the same type
   if and only if their type values are byte-for-byte identical.
   Implementations MUST NOT normalize URI type values.

   A URI type value SHOULD be dereferenceable: an HTTP GET over TLS
   returns a JSON Schema [JSONSchema] document describing the structure
   of conforming instances.  This aligns with the schema / schema_uri
   attributes served by the authorization details types metadata
   endpoint of [I-D.ietf-oauth-rar-metadata-remediation].  The document

Liu                       Expires 15 April 2027                 [Page 6]
Internet-Draft            Authorization Schemas             October 2026

   obtained by dereferencing is a descriptive input for instance
   construction, not an authorization and not authoritative for the AS's
   validation, which is performed against the schema known to the AS
   (fail-safe: an instance constructed from a drifted document fails
   validation).  The same schema MUST NOT be simultaneously identified
   by both a short name and a URI; registered URI types MUST commit to
   semantic immutability: changed semantics require a new URI (see
   Section 12.1).

3.2.  Framework Requirements

   Authorization details types intended for use as domain-specific
   authorization schemas MUST satisfy the following requirements.  These
   requirements apply to every schema used with this framework, whether
   or not its type is registered:

   1.  *Structured Constraints:* The type MUST define its constraint
       fields with unambiguous data types and deterministic verification
       semantics, such that a Resource Server can verify a behavior
       against an approved instance without policy interpretation;

   2.  *Allowlist Semantics:* The type MUST define constraint fields
       that express what is permitted: a behavior is permitted only when
       explicitly allowed by the present constraint fields of the
       approved instance;

   3.  *Common Fields:* The type uses the common fields defined in
       Section 2 of [RFC9396] (actions, locations, datatypes,
       identifier) to declare a declarative upper bound on the requested
       operations and resources;

   4.  *Subset Definition:* The type SHOULD define what it means for one
       instance to be a subset of another, to support progressive
       narrowing in Token Exchange (Section 9).  There is no
       standardized mechanism for comparing two arbitrary authorization
       details requests (Section 6.1 of [RFC9396]); each schema type
       defines its own subset semantics under this requirement.

   Schema instances used with this specification MUST adhere to the
   following:

   1.  *Schema Conformance:* Every instance MUST validate against the
       definition of the schema it instantiates.  Unknown fields not
       defined by the schema MUST be rejected by the Authorization
       Server.

Liu                       Expires 15 April 2027                 [Page 7]
Internet-Draft            Authorization Schemas             October 2026

   2.  *Constraint Values:* Constraint values MUST be within the ranges
       and formats defined by the schema (e.g., quantities with units
       such as a currency or a count, or timestamps per [RFC3339]).

   3.  *Deny by Default:* An instance constrains behavior only through
       its present fields.  Any behavior not consistent with every
       present constraint is denied; an empty or absent boundary grants
       no behavior (Section 7).

   Because instances are structured data rather than executable code,
   verification at the Resource Server is deterministic constraint
   evaluation; review logic is an Authorization Server implementation
   detail.

3.3.  Framework Fields

   The following fields are defined by this framework and MAY appear in
   instances of any domain-specific authorization schema.  Schema types
   MUST NOT redefine them.

   work_id:  OPTIONAL.  The AS-assigned identifier of an approved work
      instance.  When approving a work instance, the AS assigns a unique
      work_id and makes it available to the client (e.g., in the
      enriched authorization_details of the issued access token or in
      the token response).  Task-level requests include the AS-assigned
      work_id verbatim so that the Resource Server evaluates each task
      against the approved work boundaries (Section 3.4).  Clients MUST
      NOT invent work_id values.

   work_ref:  OPTIONAL.  An AS-assigned reference to the approved work
      instance, embedded by the AS in the enriched authorization_details
      of a task token, from which the Resource Server resolves the work
      instance via local cache or token introspection (Section 7).  It
      is not client-supplied.

   evidence_ref:  OPTIONAL.  A reference to an approval evidence record
      associated with the approval decision for this instance.  This
      specification defines only the carriage of the field; the format
      of the reference and the resolution of the record are outside its
      scope (see [I-D.liu-oauth-authorization-evidence]).  The presence
      or successful verification of approval evidence does not establish
      current permission (Section 8).

Liu                       Expires 15 April 2027                 [Page 8]
Internet-Draft            Authorization Schemas             October 2026

3.4.  Bounded Work and Task Requests

   An overall objective delegated to a client, such as "help me find and
   buy a laptop", is modeled as a _bounded work_. A client requests work
   authorization by submitting a schema instance that captures the
   proposed boundaries for the entire work, for example permitted
   operations, targeted resources, and a time window.  When the
   Authorization Server approves the work instance, it assigns a work_id
   (Section 3.3) and makes it available to the client, e.g., in the
   enriched authorization_details of the issued access token or in the
   token response.  Subsequent authorization requests for individual
   _tasks_ performed under the work include the same work_id and are
   verified against the work's approved boundaries: at runtime, the
   Resource Server evaluates each requested task against the work
   instance through deterministic constraint evaluation (Section 7), a
   _task-in-work evaluation request_.

   The approved schema instance represents the current authorized state
   of the work.  Schemas MAY define cumulative constraints, whose values
   the Resource Server accumulates across the tasks performed under the
   work; derived authorizations can progressively narrow the work
   boundaries via Token Exchange subset semantics (Section 9).

3.5.  Guardrail Instances

   A guardrail instance is a schema instance used as an upper bound on
   other instances of the same type.  An instance is a hard constraint
   on behaviors; a guardrail is a hard constraint on instances.
   Guardrails introduce no new mechanism: they reuse the schema instance
   structure, the subset semantics of the type, and deny-by-default.
   The core rule is one sentence:

      Every schema instance approved under this framework MUST be a
      subset of every guardrail instance of the same type (byte-exact
      type identity, Section 3.1) that is in effect for that approval.

   Guardrail instances come from two sources:

   *  *Administrative guardrails* are configured by deployment
      administrators or organizational policy.  They express hard
      ceilings, such as regulatory requirements, risk appetite, and
      organizational limits, and clients cannot propose instances beyond
      them.

   *  *Proposed guardrails* are submitted by clients and become
      effective upon AS approval.  Typical uses are limits set by the
      resource owner ("at most 500 USD this month", in a payment
      schema), client self-limitation, and subject-level limits.  A

Liu                       Expires 15 April 2027                 [Page 9]
Internet-Draft            Authorization Schemas             October 2026

      proposed guardrail that represents a user-set limit or a subject-
      level limit MUST obtain the resource owner's consent before the AS
      approves it; a proposed guardrail that purely self-limits the
      client MAY be approved according to AS policy.

   Two rules prevent the obvious implementation mistakes:

   *  *The guardrail check is a necessary condition for approval, never
      a sufficient one.* Approval of an instance is the conjunction of
      schema conformance, the AS's approval basis (Section 6.4), and the
      guardrail subset check.  An implementation MUST NOT treat a subset
      relation between an instance and a guardrail as authorization to
      approve the instance: a wide guardrail, once approved, never
      exempts subsequent instances from the remaining checks.

   *  *A proposed guardrail must itself respect the administrative
      ceiling.* When administrative guardrails exist for a type, a
      proposed guardrail of that type MUST be a subset of every
      administrative guardrail of that type to be approvable.  Clients
      may propose to tighten, never to exceed.

   When multiple guardrails are in effect, an instance must be a subset
   of each: their constraints compose by intersection.  A guardrail that
   omits a constraint field defined by the schema does not constrain
   that field.  This is distinct from deny-by-default, which bounds a
   _behavior_ relative to the approved instance: the instance is the
   complete statement of what is permitted, while each guardrail bounds
   only the fields it mentions.  Guardrail instances sit above work and
   task instances; the same schema and subset machinery is reused at
   every level.

   The lifecycle of guardrails follows the instance lifecycle
   (Section 8) with two clarifications. _Tightening_ a guardrail applies
   to subsequently approved instances immediately; the AS SHOULD revoke
   already-approved instances that exceed the tightened guardrail,
   reusing existing mechanisms (token revocation, token introspection
   reporting the tokens inactive, and RS deny-by-default); whether such
   revocation is enforced immediately is a deployment configuration.
   _Removing_ a guardrail removes a ceiling and revokes nothing: ending
   a constraint is not ending an authorization, and implementations MUST
   NOT conflate the two. _Relaxing_ a guardrail (e.g., raising a limit)
   is not a derivation and MUST NOT be performed via Token Exchange: it
   requires a new, independent authorization decision, with resource
   owner consent where required and revocation or supersession of the
   old guardrail, consistent with the monotonic narrowing principle,
   which constrains derivation chains, not new authorizations.
   Automatic widening is prohibited.

Liu                       Expires 15 April 2027                [Page 10]
Internet-Draft            Authorization Schemas             October 2026

   An administrative guardrail limiting a transaction type to a total of
   1000 USD and a fixed set of operations:

   {
     "type": "transaction_authority",
     "boundary": {
       "total_amount_limit": { "value": 1000, "currency": "USD" },
       "operations": ["ecommerce.search", "ecommerce.cart.add",
                      "ecommerce.purchase"]
     }
   }

                 Figure 1: Example administrative guardrail

   A client then requesting an instance of the same type with
   total_amount_limit of 1200 USD exceeds the guardrail and is rejected
   by the AS, whatever the approval basis would otherwise conclude.

   Security considerations specific to guardrails (probing, the
   descriptive nature of guardrail documents, and the closed-operator
   restriction) are described in Section 10.  The type-scoped limitation
   of guardrails is recorded in Section 1.1.

3.6.  schema_ref Claim

   The schema_ref claim is an OPTIONAL shorthand mechanism for
   referencing an approved schema instance in access tokens.  When the
   AS uses Rich Authorization Requests (RAR), the enriched
   authorization_details array in the access token (per Section 7.1 of
   [RFC9396]) is the primary mechanism for carrying the approved schema
   instance.  The schema_ref claim MAY be used as a lightweight
   alternative when:

   *  The inline instance content would make the access token exceed
      practical size limits (see Section 10);

   *  The Resource Server already has a cached copy of the instance and
      only needs an identifier to look it up;

   *  The deployment uses opaque (non-JWT) access tokens where token
      introspection [RFC7662] provides the instance content.

   When schema_ref is used, the AS performs instance registration as
   described in Section 6.

   Claim Name:  schema_ref

   Claim Type:  String

Liu                       Expires 15 April 2027                [Page 11]
Internet-Draft            Authorization Schemas             October 2026

   Usage:  JWT access tokens (the claim may also appear in introspection
      responses for opaque tokens per [RFC7662])

   The schema_ref claim value is a string containing the unique instance
   identifier assigned by the Authorization Server during instance
   registration.

   {
     "iss": "https://as.example.com",
     "sub": "agent-xyz",
     "schema_ref": "schema-instance-abc123"
   }

                 Figure 2: schema_ref in a JWT access token

   The Resource Server uses this identifier to look up the full approved
   instance from a local cache or via token introspection ([RFC7662]).

4.  Protocol Flow

   The end-to-end schema binding flow proceeds as follows.  The client
   proposes a domain-specific schema instance in the authorization
   request; the Authorization Server reviews and approves it; and the
   Resource Server verifies each client behavior against the approved
   instance through deterministic constraint evaluation.

   1.  Authorization Request: The authorization request includes
       authorization_details containing a schema instance (e.g., of type
       transaction_authority, Appendix "Example: transaction_authority",
       with the boundary constraints), using RAR ([RFC9396]) for
       structured authorization requests.

   2.  Instance Validation: AS validates that the instance conforms to
       the definition of the declared schema (see Section 6).

   3.  Review and Approval: AS determines whether the proposed
       behavioral boundaries are appropriate for the specific client and
       resource owner, based on client registration metadata,
       organizational review policies, resource owner consent, token
       binding context, and any effective guardrails (see Section 6).
       The AS does not perform per-behavior verification (which occurs
       at the Resource Server).

Liu                       Expires 15 April 2027                [Page 12]
Internet-Draft            Authorization Schemas             October 2026

   4.  Token Binding: AS issues an access token with enriched
       authorization_details array per Section 7.1 of [RFC9396], binding
       the approved schema instance to the token.  The AS MAY include
       additional metadata in the authorization_details object (e.g.,
       server-assigned identifiers such as work_id or work_ref, or
       normalized instance content) but MUST NOT alter the semantic
       meaning of the instance without client consent.

   5.  Behavior Execution: The client presents the token to the Resource
       Server when performing a behavior.

   6.  Instance Extraction: RS extracts the approved schema instance
       from the enriched authorization_details in the access token.

   7.  Behavior Verification: The RS verifies the client's current
       behavior (action, target resource) against the boundary
       constraints of the approved instance through deterministic
       constraint evaluation.

   8.  Enforcement: RS enforces the per-behavior decision, allowing or
       denying the client's action.

   9.  Response: RS returns the result to the client.

5.  Reverse-Guided Authorization

   Traditional OAuth error responses indicate authorization failure
   without providing guidance on how to obtain valid authorization.
   This specification defines a negotiation pattern in which the
   resource server guides the client toward the authorization required
   for its next action: when the client's next planned behavior falls
   outside the approved schema instance (_behavioral drift_), the client
   needs structured guidance to recover autonomously.  Resource servers
   provide this guidance through structured error responses that enable
   clients to construct authorization requests with updated behavioral
   constraints.

5.1.  Error Response Format

   When a client's request lacks sufficient authorization, the resource
   server returns an error response with a WWW-Authenticate header
   containing the insufficient_authorization error code, the error code
   defined and registered by [I-D.ietf-oauth-rar-metadata-remediation],
   together with a schema_profile_uri parameter defined by this
   specification.  The parameter is a URI referencing a _schema profile
   document_, a machine-readable JSON description of the required
   authorization conditions.

Liu                       Expires 15 April 2027                [Page 13]
Internet-Draft            Authorization Schemas             October 2026

   HTTP/1.1 401 Unauthorized
   Content-Type: application/json
   WWW-Authenticate: Bearer error="insufficient_authorization",
     schema_profile_uri="https://resource.example/profiles/purchase"

   {
     "error": "insufficient_authorization",
     "error_description": "Additional authorization required"
   }

           Figure 3: Reverse-guided authorization error response

   Per Section 3 of [RFC6750], the error response includes the WWW-
   Authenticate header with the error code and a JSON error body.  The
   schema_profile_uri parameter carries a URI rather than an encoded
   payload: this keeps the header well within practical size limits and
   follows the precedent of the resource_metadata parameter in Protected
   Resource Metadata ([RFC9728]).  The client fetches the schema profile
   document referenced by the URI with an HTTP GET request over TLS.
   The fetched document has the following structure:

   {
     "schema_type": "transaction_authority",
     "required_scope": ["purchase.create"],
     "required_claims": ["agent_id", "user_id"],
     "constraints": {
       "boundary.total_amount_limit": {
         "type": "object",
         "description": "Maximum cumulative transaction amount",
         "required": true
       },
       "boundary.operations": {
         "type": "array",
         "enum": ["ecommerce.search", "ecommerce.cart.add",
                  "ecommerce.purchase"],
         "description": "Permitted operations",
         "required": true
       }
     },
     "confirmation_required": true,
     "auth_server": "https://as.example.com"
   }

                     Figure 4: Schema profile document

Liu                       Expires 15 April 2027                [Page 14]
Internet-Draft            Authorization Schemas             October 2026

   When the schema_type of a profile document is a URI type value
   (Section 3.1), the client MAY dereference it to obtain the type's
   JSON Schema description, which complements the profile's constraint
   descriptors with the structural definition of the schema.

5.2.  Relationship to insufficient_scope

   [RFC6750] defines the insufficient_scope error for cases where the
   access token lacks the scopes required by the resource server.  The
   insufficient_authorization error used by this specification addresses
   a broader condition: the token may include adequate scopes but lack
   the schema-based authorization structure (e.g., boundary constraints
   or user confirmation) required by the resource server.

   For example, consider a client holding an access token with scope
   purchase that attempts to create a 500 USD purchase.  The resource
   server requires a schema instance that limits transaction amounts and
   requires user confirmation for purchases above 200 USD.  The scope is
   sufficient, but the token lacks the required schema binding.  The
   insufficient_scope error cannot express this condition because the
   deficiency is structural (missing boundary constraints and
   confirmation signal), not scope-based.  The
   insufficient_authorization error with a schema_profile_uri allows the
   resource server to convey both the missing boundary constraints
   (e.g., boundary.total_amount_limit) and the need for user
   confirmation (confirmation_required: true) in a machine-parseable
   form that the client can act on autonomously.

   Resource servers SHOULD use insufficient_scope when the deficiency is
   purely scope-based and insufficient_authorization when the deficiency
   involves boundary constraints that cannot be expressed as additional
   scopes.

5.3.  Relationship to RAR Metadata and Error Remediation

   The error code and type-level metadata defined by
   [I-D.ietf-oauth-rar-metadata-remediation] address a related but
   different granularity than the reverse-guided mechanism defined here.
   That document registers the insufficient_authorization error code
   used above and defines the authorization_remediation error parameter,
   whose decoded contents carry actionable authorization details objects
   the client can request directly.  This specification defines the
   schema_profile_uri parameter, which references a reusable profile
   document describing the shape of acceptable instances.

   The two remediation styles are complementary:

Liu                       Expires 15 April 2027                [Page 15]
Internet-Draft            Authorization Schemas             October 2026

   *  an RS that knows the exact authorization details objects it needs
      (e.g., a specific direct debit mandate) returns them inline via
      authorization_remediation;

   *  an RS that publishes reusable behavioral requirements, as in
      multi-tenant or federated environments where many clients need the
      same shape of authorization, references a profile document via
      schema_profile_uri, which is cacheable (the URI MAY be used as a
      cache key) and additionally discoverable upfront via the
      schema_profiles attribute in Protected Resource Metadata.

   A resource server MAY combine both.  Profile documents defined here
   use schema_type and JSON Schema descriptor vocabulary so they remain
   compatible with the type-level JSON Schema descriptions served by the
   metadata endpoint of that document.

5.4.  Schema Profile Structure

   The schema profile document contains the following fields:

   schema_type:  REQUIRED.  The authorization details type identifier (a
      short name or URI, Section 3.1; e.g., transaction_authority as
      defined in Appendix "Example: transaction_authority") that the
      client MUST use in the constructed schema instance.  Because the
      constraint descriptors below use the field names of this schema,
      the client can map a profile document to an instance mechanically.

   required_scope:  OPTIONAL.  Array of scope values that the access
      token MUST include.

   required_claims:  OPTIONAL.  Array of attribute names (e.g.,
      agent_id, user_id) that MUST be present in the authorization
      context established by the access token.  For JWT access tokens,
      these are claim names that MUST appear in the JWT.  For opaque
      access tokens validated via introspection ([RFC7662]), these are
      field names that MUST appear in the introspection response.

   constraints:  OPTIONAL.  Object defining boundary constraint
      descriptors that MUST be satisfied.  Each key is a dotted path
      into the schema instance structure (e.g.,
      boundary.total_amount_limit), using the field names of the schema
      identified by schema_type.  Each value is a descriptor object
      using the JSON Schema vocabulary [JSONSchema]: type (data type),
      description (human-readable explanation), enum (allowed values),
      and required (boolean, whether a value for this path must be
      present in the instance).

   confirmation_required:  OPTIONAL.  Boolean indicating whether

Liu                       Expires 15 April 2027                [Page 16]
Internet-Draft            Authorization Schemas             October 2026

      explicit user authorization is required for the requested
      behavioral boundaries.  If true, the client MUST initiate an OAuth
      authorization flow to obtain the resource owner's explicit consent
      for the submitted schema instance.  This does not mean local user
      confirmation (e.g., a modal dialog) is sufficient; the
      authorization must be obtained through the AS to produce a token
      with appropriate grants.  The specific interaction mechanism
      depends on the OAuth flow in use (e.g., the interaction_required
      error with JWT Grant Interaction Response
      [I-D.parecki-oauth-jwt-grant-interaction-response], or the prompt
      parameter in the authorization code flow).

   auth_server:  REQUIRED.  Identifier of the authorization server
      capable of issuing tokens that satisfy these requirements.  The
      client can discover the token endpoint and other metadata via
      OAuth 2.0 Authorization Server Metadata ([RFC8414]) or OAuth 2.0
      Protected Resource Metadata ([RFC9728]) using this identifier.

5.5.  Profile-to-Instance Example

   Given the profile document above, a client constructs a
   transaction_authority instance that satisfies every constraint
   descriptor: the instance uses the type named by schema_type, the
   paths under constraints are populated with conforming values, and the
   request includes the scope named by required_scope:

   {
     "scope": "purchase.create",
     "authorization_details": [
       {
         "type": "transaction_authority",
         "domain": "ecommerce",
         "boundary": {
           "total_amount_limit": { "value": 200, "currency": "USD" },
           "operations": ["ecommerce.search", "ecommerce.cart.add",
                          "ecommerce.purchase"]
         },
         "actions": ["search", "cart.add", "purchase"]
       }
     ]
   }

            Figure 5: Instance constructed from a schema profile

   The client submits this authorization request to the authorization
   server identified by auth_server.  Because confirmation_required is
   true, the client initiates the user consent flow before the token is
   issued.

Liu                       Expires 15 April 2027                [Page 17]
Internet-Draft            Authorization Schemas             October 2026

5.6.  Client Adaptive Behavior

   Upon receiving a reverse-guided authorization response, the client
   SHOULD:

   1.  Fetch the schema profile document referenced by
       schema_profile_uri over TLS and parse it to understand the
       authorization requirements.

   2.  Verify that the specified auth_server is trusted before
       proceeding.

   3.  Construct a new authorization request including the required
       scopes and a schema instance of the type named by schema_type
       that satisfies the constraints specified in the profile document,
       and any additional parameters required by the resource server.

   4.  If confirmation_required is true, initiate user consent flow.

   5.  Discover the token endpoint via the auth_server's metadata
       ([RFC8414]) and submit the authorization request.

   This allows clients to obtain authorization requirements dynamically
   instead of pre-programming them per resource server.

   During multi-step task execution, a client may encounter _behavioral
   drift_: situations where the next behavior in its plan falls outside
   the approved schema constraints.  When this occurs, the client has
   three options: (1) request a new authorization with an updated schema
   instance that accommodates the new behavior (using the reverse-guided
   authorization mechanism described above); (2) degrade its behavior to
   stay within the approved constraints (e.g., selecting an alternative,
   less privileged action); or (3) request human confirmation to approve
   an expanded behavioral boundary.  The choice among these options
   depends on the client's task context and the confirmation_required
   signal from the resource server.

5.7.  Denial Semantics

   When the Resource Server denies a request under this framework, the
   reason falls into one of three classes, and the correct client
   response differs by class:

   1.  *The authorization has ended* (withdrawn, terminated, expired, or
       completed, Section 8): the operation is impermissible no matter
       how valid the credential appears, and the client MUST NOT retry
       it under the same or an equivalent authorization.  Work under an
       ended authorization requires a fresh authorization decision.

Liu                       Expires 15 April 2027                [Page 18]
Internet-Draft            Authorization Schemas             October 2026

   2.  *The operation is outside the approved bounds while the
       authorization is active*: the client's options are a new
       authorization decision (potentially via reverse-guided guidance),
       behavioral degradation, or human confirmation for an expanded
       boundary (Section 5.6).

   3.  *Only the credential is invalid* (e.g., the access token has
       expired while the authorization remains active): the client
       obtains a new credential for the same authorization (e.g., via
       the refresh token, Section 6.5).

   The resource server signals class 3 with the invalid_token error of
   [RFC6750] and classes 1 and 2 with insufficient_authorization (with a
   schema_profile_uri parameter when guidance is available);
   distinguishing class 1 from class 2 in the response is deployment
   policy, for example via error_description, and a client that cannot
   distinguish them MUST treat the denial as class 2 and attempt
   remediation at most once before stopping.

6.  Authorization Server Processing

6.1.  Instance Validation

   Upon receiving an authorization_details request containing a domain-
   specific schema instance, the AS MUST perform the following
   validation steps:

   1.  Type Check: Verify that the type field identifies a domain-
       specific authorization schema known to the AS (e.g.,
       transaction_authority, Appendix "Example:
       transaction_authority"), whether a registered short name or a URI
       the AS recognizes.

   2.  Schema Conformance: Validate the instance against the definition
       of the declared schema, including required fields, value types,
       and formats.  Unknown fields not defined by the schema MUST be
       rejected.

   3.  Constraint Values: Verify that constraint values are within the
       ranges and formats defined by the schema (e.g., non-negative
       monetary amounts, well-formed [RFC3339] timestamps with start
       earlier than end).

Liu                       Expires 15 April 2027                [Page 19]
Internet-Draft            Authorization Schemas             October 2026

   4.  Behavioral Boundary Check: Verify that the RAR common fields
       (actions, locations) do not exceed the client's registered
       permissions.  The AS SHOULD also verify that the boundary
       constraints are consistent with the common fields (e.g., every
       operation listed in boundary.operations corresponds to a declared
       action).

   Because the request carries structured data rather than executable
   code, no syntax parsing, entry point resolution, or safety analysis
   of program code is required.

6.2.  Instance Registration

   When the AS issues a schema_ref claim instead of embedding the full
   approved instance in authorization_details, the AS MUST register the
   instance:

   1.  Assign a unique instance identifier;

   2.  Store the approved instance content;

   3.  Associate the instance with the authorization session, including
       its lifecycle state (Section 8);

   4.  Optionally, pre-process the instance for faster verification.

   When the AS embeds the approved instance directly in the enriched
   authorization_details (the primary path), explicit registration is
   not required; the instance travels with the token.

   Instance registration in this specification is dynamic and on-demand.
   The Authorization Server does not need to maintain a pre-configured
   catalog of instances.  When a schema instance is submitted for
   binding, the AS reviews it against pre-established approval
   principles (see Section 6.4) and registers it only if approved.

6.3.  Error Responses

   If instance validation or approval fails, the AS MUST return an error
   response per Section 5.2 of [RFC6749].  The following table
   consolidates the error taxonomy for schema-instance-related
   conditions.  The AS selects the error code based on the nature of the
   failure:

Liu                       Expires 15 April 2027                [Page 20]
Internet-Draft            Authorization Schemas             October 2026

   +========================+======================+===================+
   | Condition              | Error Code           | Rationale         |
   +========================+======================+===================+
   | Unknown type (schema   | invalid_request      | Schema            |
   | not known to the AS)   |                      | identifier not    |
   |                        |                      | recognized        |
   +------------------------+----------------------+-------------------+
   | Missing required       | invalid_request      | Instance does     |
   | schema field (e.g.,    |                      | not conform to    |
   | boundary)              |                      | the schema        |
   +------------------------+----------------------+-------------------+
   | Unknown field not      | invalid_request      | Instance          |
   | defined by the schema  |                      | contains fields   |
   |                        |                      | outside the       |
   |                        |                      | schema            |
   +------------------------+----------------------+-------------------+
   | Constraint value out   | invalid_request      | Constraint        |
   | of range or malformed  |                      | value violates    |
   |                        |                      | the schema        |
   |                        |                      | definition        |
   +------------------------+----------------------+-------------------+
   | Instance exceeds an    | invalid_request      | Instance not a    |
   | effective guardrail    |                      | subset of every   |
   |                        |                      | effective         |
   |                        |                      | guardrail         |
   +------------------------+----------------------+-------------------+
   | Instance references an | invalid_request      | Ended             |
   | ended authorization    |                      | authorizations    |
   | (work_id of an ended   |                      | do not support    |
   | work)                  |                      | new issuance      |
   +------------------------+----------------------+-------------------+
   | RAR common fields      | invalid_scope        | Behavioral        |
   | exceed client's        |                      | boundary          |
   | registered permissions |                      | exceeds pre-      |
   |                        |                      | approved scope    |
   +------------------------+----------------------+-------------------+
   | Other review failures  | invalid_request      | Approval basis    |
   | (e.g., organizational  |                      | not satisfied     |
   | review policy denies   |                      |                   |
   | this pattern)          |                      |                   |
   +------------------------+----------------------+-------------------+
   | User consent required  | interaction_required | Per JWT Grant     |
   | before binding         |                      | Interaction       |
   |                        |                      | Response          |
   +------------------------+----------------------+-------------------+

               Table 1: AS error taxonomy for schema binding

Liu                       Expires 15 April 2027                [Page 21]
Internet-Draft            Authorization Schemas             October 2026

   Example error response:

   {
     "error": "invalid_request",
     "error_description": "Invalid schema instance: boundary.total_amount_limit.value must be a non-negative number"
   }

                  Figure 6: Schema instance error response

6.4.  Approval Basis

   The Authorization Server's approval of a schema instance is not
   limited to conformance validation.  The AS determines whether the
   proposed behavioral boundaries are appropriate for the specific
   client and resource owner based on the following factors:

   *  *Client registration metadata:* pre-registered client
      capabilities, allowed scopes, and trust level established during
      OAuth 2.0 Dynamic Client Registration [RFC7591] or out-of-band
      provisioning.

   *  *Organizational review policies:* administrative rules defining
      which behavioral patterns are permitted for specific client types,
      user roles, or resource classes within the deployment.  These
      rules are internal to the AS and are never carried in
      authorization requests or access tokens.

   *  *Resource owner consent:* explicit authorization from the approver
      (Section 2) approving the submitted behavioral boundaries,
      obtained through the OAuth 2.0 authorization interaction (e.g.,
      the consent screen in the authorization code flow, or the
      interaction_uri mechanism in JWT Grant Interaction Response).

   *  *Token binding context:* the authorization grant type, requested
      scopes, and other token request parameters that establish the
      context in which the schema instance is reviewed.

   *  *Guardrail subset checks:* for every guardrail instance in effect
      for the type (Section 3.5), the submitted instance MUST be a
      subset.  The guardrail check is a necessary condition for
      approval, never a sufficient one: approval is the conjunction of
      schema conformance, the approval factors in this section, and the
      guardrail subset checks, and no conjunct may substitute for the
      others.

   For example, the AS MAY maintain a per-client allowlist of approved
   behavioral patterns (e.g., permitted actions, maximum transaction
   limits, allowed resource classes).  When a new schema instance is

Liu                       Expires 15 April 2027                [Page 22]
Internet-Draft            Authorization Schemas             October 2026

   submitted, the AS verifies that the declared RAR common fields
   (actions, locations) and the boundary constraints fall within the
   client's pre-approved boundaries.  If the proposed instance exceeds
   these boundaries, the AS SHOULD return invalid_scope when the
   behavioral boundaries exceed the client's registered permissions, or
   invalid_request for other review violations (see the consolidated
   taxonomy in Section 6.3).  Alternatively, the AS MAY escalate to the
   resource owner for explicit consent before issuing the token.

   Because instances are structured data with schema-defined fields,
   this review is a comparison of constraint values against the AS's
   approval principles, rather than analysis of arbitrary program code.

   The schema instance carried in the access token is therefore backed
   by both schema conformance and the review policies governing the
   client and resource owner.  The Resource Server can rely on this when
   enforcing the approved instance at runtime.

6.5.  Refresh Token Handling

   When an access token carrying an approved schema instance expires and
   the client obtains a new access token via a refresh token, the AS re-
   binds the same approved instance to the new access token.  The client
   does not resubmit the instance in the refresh request; the AS
   retrieves it from the authorization session state associated with the
   refresh token.

   Refresh is a token-renewal operation, not an authorization request.
   A refresh request MUST NOT modify the approved schema instance.  If
   the client's task requires different behavioral boundaries, the
   client MUST either initiate a new authorization request (using the
   reverse-guided mechanism described in Section 5 if applicable) or use
   Token Exchange ([RFC8693]) as described in Section 9.  Both paths go
   through the full validation and approval process defined in this
   section.

   The refresh token lifetime SHOULD NOT exceed the validity period of
   the associated schema instance.  If the instance has a natural
   expiration (e.g., a time-window constraint), the AS SHOULD align the
   refresh token lifetime accordingly.

7.  Resource Server Enforcement

   The Resource Server acts as the Policy Enforcement Point (PEP) in
   this framework.  When a behavior is presented with a token, the
   operative question is not merely "is this token valid?"  It is the
   two-part question:

Liu                       Expires 15 April 2027                [Page 23]
Internet-Draft            Authorization Schemas             October 2026

   _Is the authorization bound to this token still active, and is this
   operation within its bounds?_

   The two parts fail independently: the lifecycle part fails for a
   valid token whose authorization has ended (Section 8); the bounds
   part fails for a valid token on live work that reaches outside what
   was approved.  The Resource Server extracts the approved schema
   instance from the access token, verifies each client behavior against
   the boundary constraints through deterministic constraint evaluation,
   and enforces the resulting decision (allow or deny).  When the
   behavior is a task performed under an approved work (identified by
   work_id), this verification is a task-in-work evaluation: the task is
   checked against the work's approved boundaries (Section 3.4).

7.1.  Instance Retrieval

   The RS obtains the approved instance from the access token.  The
   primary mechanism is to extract the instance from the enriched
   authorization_details array included in the token per Section 7.1 of
   [RFC9396].

   The binding between the instance and the access token depends on the
   token type.  For JWT access tokens, the instance content or
   schema_ref claim is integrity-protected by the token signature.  For
   opaque tokens, the binding is established through token introspection
   [RFC7662] or a shared back-channel between the AS and RS.

   When the token uses the schema_ref claim instead of inline instance
   content, the RS retrieves the instance using one of the following
   methods:

   *  Local Cache: Use a cached copy if available and not expired.

   *  Introspection: Retrieve the instance content via token
      introspection [RFC7662].

   *  Work Instances: When the task token's enriched
      authorization_details carries an AS-assigned work_ref, resolve the
      approved work instance from the local cache or via token
      introspection (Section 3.4).

7.2.  Constraint Evaluation

   After extracting the approved instance from the token, the RS
   verifies each client behavior against every constraint present in the
   boundary object.  Each constraint check is a deterministic comparison
   between the behavior's attributes and the constraint value, for
   example:

Liu                       Expires 15 April 2027                [Page 24]
Internet-Draft            Authorization Schemas             October 2026

   *  The behavior's operation identifier is contained in
      boundary.operations;

   *  The cumulative transaction amount including the current behavior
      does not exceed boundary.total_amount_limit;

   *  The target merchant is contained in boundary.merchant;

   *  The current time is within boundary.time_window.

   When a behavior is performed under an approved work (see
   Section 3.4), these checks constitute task-in-work evaluation: the RS
   verifies the task against the work instance's boundary constraints,
   including cumulative constraints, where defined by the schema,
   evaluated across all tasks performed under the work.

   Cumulative constraints are evaluated against state maintained by the
   Resource Server, which observes the underlying business activity
   (e.g., cart and order state in an e-commerce deployment).  The
   Authorization Server approves the bound but does not track runtime
   usage.

7.3.  Enforcement Decision

   Based on the constraint evaluation:

   *  If the behavior is consistent with every present constraint: Allow
      the behavior;

   *  If the behavior violates any present constraint, or if the
      behavior cannot be mapped to the approved instance: Deny with 403
      Forbidden.  When the denial results from behavioral drift, the RS
      MAY apply the reverse-guided mechanism (Section 5) to guide the
      client toward a new authorization;

   *  If the instance cannot be retrieved or parsed, or if the
      authorization bound to the token has ended (Section 8): Deny with
      403 Forbidden.

8.  Instance Lifecycle

   An approved schema instance has a lifecycle.  The lifecycle has two
   states and four ending reasons; the requested instance before
   approval is an object (a proposal), not a state: a rejected proposal
   never enters the lifecycle.

   active:  The instance has been approved and bound.  Tokens issued for

Liu                       Expires 15 April 2027                [Page 25]
Internet-Draft            Authorization Schemas             October 2026

      it carry its authority; the AS accepts new task requests
      referencing its work_id, and refresh re-binds the same instance.

   ended:  The instance no longer permits anything.  Ended is terminal:
      an ended instance does not support new issuance, refresh, or
      derivation, and widening requires a fresh authorization through
      the AS (the monotonic narrowing principle, Section 9).

   An active instance ends in one of four ways, and the distinction
   among them matters for accountability: *completed* (the termination
   criterion is satisfied, e.g., the report is filed), *withdrawn* (the
   approver withdraws the work), *terminated* (an administrator or
   governance process ends it), or *expired* (the maximum lifetime
   elapses, e.g., a time_window constraint).

   The framework maps these concepts onto OAuth mechanisms as follows:

Liu                       Expires 15 April 2027                [Page 26]
Internet-Draft            Authorization Schemas             October 2026

   +=============+====================================================+
   | Concept     | Protocol observation and mechanisms                |
   | state       |                                                    |
   +=============+====================================================+
   | active      | Instance approved and bound: inline enriched       |
   |             | details (primary) or schema_ref + AS-side          |
   |             | registration (lightweight); AS accepts new task    |
   |             | requests referencing the work_id; refresh re-binds |
   |             | the same instance                                  |
   +-------------+----------------------------------------------------+
   | ended       | AS marks the registered instance ended, revokes    |
   | (withdrawn  | associated tokens ([RFC7009]), and refuses new     |
   | or          | issuance, refresh, and derivation referencing it;  |
   | terminated) | token introspection ([RFC7662]) returns active:    |
   |             | false; RS applies deny-by-default                  |
   +-------------+----------------------------------------------------+
   | ended       | time_window or maximum lifetime: the RS determines |
   | (expired)   | expiry deterministically from the instance         |
   |             | content, without AS-side state transition; the AS  |
   |             | refuses refresh (token lifetime SHOULD NOT exceed  |
   |             | instance lifetime, Section 6.5)                    |
   +-------------+----------------------------------------------------+
   | ended       | Termination criterion satisfied; which party       |
   | (completed) | reports completion is deployment-defined (a        |
   |             | client's self-report is safe in this framework     |
   |             | because ending only removes authority)             |
   +-------------+----------------------------------------------------+
   | inline      | For an instance that governs a single request,     |
   | instance    | ended is equivalent to token revocation or expiry: |
   | (degenerate | a bounded token lifetime gated on active           |
   | case)       | authorization                                      |
   +-------------+----------------------------------------------------+

                                 Table 2

   Guardrail instances follow the same lifecycle, with the tightening,
   removal, and relaxation semantics defined in Section 3.5.

   Because the ending of an authorization is a state change to one
   object with consequences for everything bound to it, the denial
   semantics of Section 5.7 apply: a valid credential does not authorize
   further operations for work that has ended.  Deployments MUST place a
   finite bound on how long a Resource Server continues to accept a
   token after the authorization it was issued for has ended; token
   lifetimes and introspection are the mechanisms this specification
   relies on, and the bound they define is the worst-case exposure
   window between an ending and its observation.

Liu                       Expires 15 April 2027                [Page 27]
Internet-Draft            Authorization Schemas             October 2026

   The work_id and any evidence_ref of an ended instance remain
   meaningful as record locators: approval evidence records what was
   decided and remains available for accountability after the work is
   over, but its existence does not establish current permission
   (Section 3.3).  Privacy considerations for authorization identifiers
   spanning multiple resource servers, including per-audience schema_ref
   variants, are discussed in Section 11.

9.  Token Exchange (RFC 8693)

   When exchanging tokens [RFC8693], a new schema instance can be
   provided to refine or restrict the approved behavioral boundaries:

   POST /token HTTP/1.1
   Host: as.example.com
   Content-Type: application/x-www-form-urlencoded

   grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange
   &subject_token=eyJhbGciOiJSUzI1NiJ9...
   &subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token
   &authorization_details=%5B%7B%22type%22%3A%22transaction_authority%22%2C
     %22domain%22%3A%22ecommerce%22%2C%22boundary%22%3A%7B...%7D%7D%5D

               Figure 7: Token exchange with schema instance

   The resulting access token MUST include the new approved schema
   instance.  Because schema instances are structured data, subset
   verification is decidable: each constraint in the new instance can be
   compared field-by-field against the corresponding constraint of the
   original instance (e.g., a lower total_amount_limit, a subset of
   operations, or a narrower time_window).  The AS MUST verify that the
   derived instance is a subset of the original instance and reject the
   exchange otherwise; Token Exchange in this framework is narrowing-
   only, by construction.  There is no standardized mechanism for
   comparing two arbitrary authorization details requests (Section 6.1
   of [RFC9396]); each schema type defines its own subset semantics
   under the framework requirements (Section 3.2).  If the client
   requires broader behavioral boundaries, it MUST obtain a new
   authorization through the AS (for example, via the reverse-guided
   mechanism in Section 5, with resource owner consent where required),
   rather than widening an approved instance through exchange.

   Token Exchange is a common trigger for _behavioral drift_: when a
   client's next planned behavior falls outside the approved schema
   constraints, the Resource Server can return an
   insufficient_authorization error with a schema_profile_uri (as
   defined in Section 5), guiding the client toward constructing an
   appropriate Token Exchange request with an updated schema instance.

Liu                       Expires 15 April 2027                [Page 28]
Internet-Draft            Authorization Schemas             October 2026

10.  Security Considerations

10.1.  Trust Model

   The framework defined in this specification relies on the following
   trust assumptions, which deployments MUST evaluate before adoption:

   *  *AS-to-RS trust:* The Resource Server trusts the Authorization
      Server to validate, review, and bind approved schema instances to
      access tokens.  The RS enforces the instance approved by the AS
      and does not re-evaluate the AS's approval decision at runtime.
      This trust relationship is consistent with the OAuth 2.0 trust
      model in which the RS trusts the AS's issuance of access tokens.

   *  *Client-to-AS trust:* The client trusts the AS to validate its
      submitted schema instance and issue a token reflecting the
      approved behavioral boundaries.  The client MUST NOT trust
      instances or profiles received from other parties (including
      resource servers) without AS approval.

   *  *AS/RS-to-client distrust:* Neither the AS nor the RS trusts the
      client to act within its approved behavioral boundaries without
      verification.  The AS performs validation and review; the RS
      performs per-behavior runtime verification.

   A compromised or malicious AS could embed an overly permissive
   instance in an access token, causing the RS to allow behaviors that
   the RS operator did not intend.  To mitigate this risk, the RS MAY
   impose constraints on top of the token-bound instance, for example by
   deploying guardrail instances (Section 3.5), which are schema-native
   upper bounds the RS-side deployment can also enforce
   deterministically, or by:

   *  A hard deny list of dangerous or privileged actions that cannot be
      authorized by any token-bound instance;

   *  Rate limiting or transaction caps that apply regardless of the
      approved instance;

   *  Restriction of trusted ASes to a pre-registered allowlist,
      discoverable via Protected Resource Metadata ([RFC9728]).

   The choice of which ASes to trust is a deployment decision.  Resource
   Servers SHOULD restrict the set of trusted Authorization Servers and
   reject tokens issued by untrusted ASes.  The authorization_servers
   field in Protected Resource Metadata ([RFC9728]) provides a mechanism
   for the RS to advertise its trusted ASes to clients.

Liu                       Expires 15 April 2027                [Page 29]
Internet-Draft            Authorization Schemas             October 2026

10.2.  No Executable Content

   Schema instances carried in authorization requests and access tokens
   are structured data conforming to schema definitions; they contain no
   executable code.  This eliminates the class of attacks associated
   with client-submitted code, including non-terminating or resource-
   intensive evaluations, catastrophic regular-expression backtracking,
   and built-in functions with side effects (e.g., outbound HTTP
   requests performed during evaluation).  Neither the AS nor the RS
   executes client-supplied content at any point in the flow.

   To preserve this property, the AS MUST reject instances containing
   fields not defined by the declared schema, and the RS MUST ignore or
   reject instances containing unknown fields.

10.3.  Instance Integrity

   The schema_ref claim in access tokens MUST reference instances
   registered and stored securely by the AS.  When the access token is
   opaque, the Resource Server retrieves the instance through token
   introspection ([RFC7662]).  The introspection response SHOULD include
   the approved schema instance using the same mechanisms as the access
   token: either the enriched authorization_details array containing the
   approved instance (the primary mechanism), or the schema_ref claim
   (the lightweight alternative).  When a JWT access token is
   introspected, the introspection response SHOULD reflect the claims
   present in the JWT, including authorization_details and schema_ref,
   per Section 2.2 of [RFC7662].

   Resource Servers SHOULD invalidate cached instance content when the
   associated access token expires.  If the AS revokes a registered
   instance before the token expires, because the work was withdrawn or
   terminated (Section 8), the AS SHOULD also revoke the associated
   access token, causing subsequent introspection calls to return
   active: false per [RFC7662].  Resource servers that observe active:
   false (or that are otherwise notified of instance revocation through
   a deployment-specific mechanism) MUST treat subsequent verifications
   for the token as failed (deny-by-default).

10.4.  Instance Size Limits

   Instances embedded inline within authorization_details increase the
   size of authorization requests and access tokens, and deployments
   commonly face size limits on HTTP headers carrying JWT access tokens.
   Deployments facing such constraints can use the schema_ref claim
   (Section 3.6), which binds a reference to the AS-registered instance
   instead of inline content.

Liu                       Expires 15 April 2027                [Page 30]
Internet-Draft            Authorization Schemas             October 2026

10.5.  Reverse-Guided Authorization

   Implementations of reverse-guided authorization (Section 5) MUST
   consider the following security aspects:

   *  *Auth Server Verification:* Clients MUST verify that the
      auth_server specified in the schema profile document is trusted
      before submitting authorization requests.  Verification SHOULD be
      performed by comparing the auth_server value against one of the
      following trust anchors: (1) the authorization_servers field in
      the Protected Resource Metadata ([RFC9728]) obtained from the
      resource server that returned the error; (2) a pre-registered
      allowlist of trusted authorization servers configured at client
      provisioning time; or (3) a deployment-specific trust registry.
      If none of these trust anchors are available, clients MUST NOT
      submit authorization requests to the specified auth_server.
      Clients MUST use only the token endpoint discovered from the
      auth_server's Authorization Server Metadata ([RFC8414]).  Blindly
      following redirects or trusting unverified auth_server values
      could lead to credential theft.

   *  *Constraint Validation:* Clients SHOULD validate that constraint
      values are reasonable before including them in authorization
      requests.  Malicious resource servers might attempt to induce
      clients to request excessive permissions.

   *  *Profile Document Retrieval:* The schema_profile_uri is received
      from the resource server in the error response.  Clients MUST
      fetch the profile document over TLS and SHOULD verify that the URI
      origin matches the resource server or a domain under its control.
      The profile document is guidance from the resource server; it does
      not constitute authorization, and only the Authorization Server
      can approve a schema instance.

   All communications in the reverse-guided flow MUST use TLS to prevent
   man-in-the-middle attacks on error responses.

10.6.  Guardrails

   Implementations of guardrail instances (Section 3.5) MUST consider
   the following:

   *  *Guardrail probing:* A client that submits proposed guardrails to
      discover the AS's ceilings learns no more than error responses to
      over-broad instances already reveal; the approval boundary is
      exposed either way.  ASs MAY rate-limit proposed-guardrail
      submissions nonetheless.

Liu                       Expires 15 April 2027                [Page 31]
Internet-Draft            Authorization Schemas             October 2026

   *  *Descriptive inputs:* Guardrail documents and metadata are
      descriptive inputs, like schema documents.  The document a client
      dereferences may differ from the AS's known copy; validation
      failure is fail-safe, since the AS validates instances and
      proposed guardrails against its own knowledge.

   *  *Closed operators only:* Guardrail fields are limited to the
      closed constraint fields defined by the schema and closed
      comparison operators.  Conditional logic MUST NOT be introduced
      through guardrails: a guardrail is an upper bound, not a policy
      decision point.  Complex conditions belong to the AS's review
      policy, which is not carried on the wire.

11.  Privacy Considerations

   Implementations of this specification MUST consider the following
   privacy aspects per BCP 188 [RFC6973]:

   *  *Instance Content Privacy:* Schema instances embedded in
      authorization_details may carry identifying data (e.g., merchant
      and category values in the boundary).  When instances are carried
      in JWT access tokens, this data is visible to any party that can
      decode the token.  Implementations SHOULD avoid embedding
      personally identifiable information (PII) directly in instance
      content and instead use correlation identifiers (e.g.,
      transaction_id) that the Resource Server or an audit service
      resolves when needed.

   *  *Constraint Disclosure:* The schema profile document returned via
      schema_profile_uri reveals the required boundary constraints to
      the requesting client.  While this disclosure is necessary for the
      reverse-guided authorization flow, resource servers SHOULD limit
      the information to what is strictly needed for the client to
      construct a valid authorization request, and MUST NOT include
      internal implementation details, database schemas, or
      infrastructure information.

   *  *Endpoint Exposure:* The auth_server field in the schema profile
      document reveals the Authorization Server's identifier.
      Deployments SHOULD use well-known identifiers rather than exposing
      internal service URLs.

Liu                       Expires 15 April 2027                [Page 32]
Internet-Draft            Authorization Schemas             October 2026

   *  *Behavioral Profiling:* The sequence of schema instances submitted
      by a client may reveal the client's intent, capabilities, or
      decision-making patterns.  Authorization Servers SHOULD treat
      schema instances with the same confidentiality as other
      authorization request parameters and MUST NOT use them for
      purposes beyond authorization decision-making without explicit
      consent.

   *  *Cross-Resource Correlation:* Authorization identifiers such as
      work_id, schema_ref, and evidence_ref can correlate a user's
      activity across resource servers when the same value is observed
      by multiple RSs.  Deployments for which this correlation is a
      concern MAY use audience-specific schema_ref and work_ref values
      per resource server, so that each RS observes a distinct
      identifier for the same authorization; the AS maintains the
      mapping.  This is a deployment option and does not change the
      mechanisms defined in this specification.

12.  IANA Considerations

12.1.  Domain-Specific Authorization Schema Types Registry

   This specification establishes a new IANA registry titled "Domain-
   Specific Authorization Schema Types" for identifiers used in the type
   field of schema instances carried in authorization_details.  The
   registry is an endorsement channel for schemas intended for cross-
   vendor reuse; schemas MAY be used with this framework without
   registration, subject to the "known to the Authorization Server"
   condition of Section 6.

   Registration requests MUST be sent to the oauth-ext-review@ietf.org
   mailing list for review and comment, using the "Specification
   Required" policy ([RFC8126]).

   The Designated Expert for this registry SHOULD verify that each
   registration request satisfies the following criteria before
   approval:

   1.  The proposed type identifier is syntactically valid: a lowercase
       ASCII string with optional underscore separators, no spaces, no
       leading or trailing whitespace, or an HTTPS URI;

   2.  The referenced specification defines a complete schema: the full
       set of fields, their types and formats, which fields are
       required, deny-by-default semantics, and subset semantics for use
       in Token Exchange, consistent with the framework requirements
       defined in Section 3;

Liu                       Expires 15 April 2027                [Page 33]
Internet-Draft            Authorization Schemas             October 2026

   3.  The schema carries structured data only and defines no executable
       content;

   4.  The identifier does not conflict with or confusingly resemble
       existing registrations, and the same schema is not identified by
       both a short name and a URI.  For URI identifiers, the URI's
       semantics are immutable: changed semantics require a new URI.

   Future registrations MUST include:

   *  Type identifier (lowercase ASCII string or HTTPS URI);

   *  Description of the schema and its intended domain;

   *  Reference to the specification defining the schema;

   *  Change controller.

   For URI identifiers, the registration SHOULD also include a hash of
   the schema document.

   The registry is initially empty.  The transaction_authority example
   in Appendix "Example: transaction_authority" is non-normative and is
   not registered.

12.2.  JWT Access Token Claims Registration

   This specification registers the following claim in the "JWT Access
   Token JWT Claims" registry established by [RFC9068]:

   Claim Name:  schema_ref

   Claim Description:  A reference to a registered, approved schema
      instance in JWT access tokens.

   Change Controller:  IETF

   Specification Document:  Section 3.6 of this document

12.3.  WWW-Authenticate Parameter Definition

   This specification defines a new parameter for use in the WWW-
   Authenticate header field with the Bearer authentication scheme, as
   defined in [RFC6750].

   Parameter Name:  schema_profile_uri

   Parameter Usage Location:  WWW-Authenticate response header field,

Liu                       Expires 15 April 2027                [Page 34]
Internet-Draft            Authorization Schemas             October 2026

      used in resource server error responses that carry the
      insufficient_authorization error code defined by
      [I-D.ietf-oauth-rar-metadata-remediation].

   Parameter Description:  A URI referencing a schema profile document
      containing structured boundary constraint descriptors and
      authorization requirements that guide the client toward obtaining
      sufficient authorization.  The document structure is defined in
      Section 5 of this document.

   Change Controller:  IETF

   Specification Document:  Section 5 of this document

   RFC 6750 does not establish an IANA sub-registry for Bearer
   authentication scheme parameters.  This section serves as the
   specification reference for the schema_profile_uri parameter.

12.4.  OAuth Protected Resource Metadata Registration

   This specification registers the following attribute in the "OAuth
   Protected Resource Metadata" registry established by [RFC9728]:

   Metadata Name:  schema_profiles

   Metadata Description:  Array of URIs referencing schema profile
      documents in the format defined in Section 5 of this document,
      describing the authorization required by this resource server.

   Change Controller:  IETF

   Specification Document:  Section 5 of this document

12.5.  Error Code Usage

   This specification does not register a new error code.  The reverse-
   guided mechanism uses the insufficient_authorization error code
   defined and registered by [I-D.ietf-oauth-rar-metadata-remediation]
   in the "OAuth 2.0 WWW-Authenticate Error Code Registry" established
   by that document.

13.  References

13.1.  Normative References

Liu                       Expires 15 April 2027                [Page 35]
Internet-Draft            Authorization Schemas             October 2026

   [RFC9396]  Lodderstedt, T., Richer, J., and B. Campbell, "OAuth 2.0
              Rich Authorization Requests", RFC 9396,
              DOI 10.17487/RFC9396, May 2023,
              <https://www.rfc-editor.org/info/rfc9396>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

   [RFC9728]  Jones, M.B., Hunt, P., and A. Parecki, "OAuth 2.0
              Protected Resource Metadata", RFC 9728,
              DOI 10.17487/RFC9728, April 2025,
              <https://www.rfc-editor.org/info/rfc9728>.

   [I-D.ietf-oauth-rar-metadata-remediation]
              Zehavi, Y., "OAuth 2.0 RAR Metadata and Error
              Remediation", Work in Progress, Internet-Draft, draft-
              ietf-oauth-rar-metadata-remediation-00, 23 August 2026,
              <https://datatracker.ietf.org/doc/html/draft-ietf-oauth-
              rar-metadata-remediation-00>.

   [RFC3339]  Klyne, G. and C. Newman, "Date and Time on the Internet:
              Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002,
              <https://www.rfc-editor.org/info/rfc3339>.

   [RFC7662]  Richer, J., Ed., "OAuth 2.0 Token Introspection",
              RFC 7662, DOI 10.17487/RFC7662, October 2015,
              <https://www.rfc-editor.org/info/rfc7662>.

   [RFC6750]  Jones, M. and D. Hardt, "The OAuth 2.0 Authorization
              Framework: Bearer Token Usage", RFC 6750,
              DOI 10.17487/RFC6750, October 2012,
              <https://www.rfc-editor.org/info/rfc6750>.

   [RFC6749]  Hardt, D., Ed., "The OAuth 2.0 Authorization Framework",
              RFC 6749, DOI 10.17487/RFC6749, October 2012,
              <https://www.rfc-editor.org/info/rfc6749>.

   [RFC8693]  Jones, M., Nadalin, A., Campbell, B., Ed., Bradley, J.,
              and C. Mortimore, "OAuth 2.0 Token Exchange", RFC 8693,
              DOI 10.17487/RFC8693, January 2020,
              <https://www.rfc-editor.org/info/rfc8693>.

Liu                       Expires 15 April 2027                [Page 36]
Internet-Draft            Authorization Schemas             October 2026

   [RFC7009]  Lodderstedt, T., Ed., Dronia, S., and M. Scurtescu, "OAuth
              2.0 Token Revocation", RFC 7009, DOI 10.17487/RFC7009,
              August 2013, <https://www.rfc-editor.org/info/rfc7009>.

   [RFC6973]  Cooper, A., Tschofenig, H., Aboba, B., Peterson, J.,
              Morris, J., Hansen, M., and R. Smith, "Privacy
              Considerations for Internet Protocols", RFC 6973,
              DOI 10.17487/RFC6973, July 2013,
              <https://www.rfc-editor.org/info/rfc6973>.

   [RFC8126]  Cotton, M., Leiba, B., and T. Narten, "Guidelines for
              Writing an IANA Considerations Section in RFCs", BCP 26,
              RFC 8126, DOI 10.17487/RFC8126, June 2017,
              <https://www.rfc-editor.org/info/rfc8126>.

   [RFC9068]  Bertocci, V., "JSON Web Token (JWT) Profile for OAuth 2.0
              Access Tokens", RFC 9068, DOI 10.17487/RFC9068, October
              2021, <https://www.rfc-editor.org/info/rfc9068>.

13.2.  Informative References

   [JSONSchema]
              JSON Schema, "JSON Schema: A Media Type for Describing
              JSON Documents", 2020, <https://json-schema.org/
              draft/2020-12/json-schema-core.html>.

   [I-D.liu-oauth-authorization-evidence]
              Liu, D., Zhu, J., Krishnan, S., and A. Parecki,
              "Authorization Evidence and Audit Trail for OAuth 2.0
              Access Tokens", Work in Progress, Internet-Draft, draft-
              liu-oauth-authorization-evidence-01, 22 June 2026,
              <https://datatracker.ietf.org/doc/html/draft-liu-oauth-
              authorization-evidence-01>.

   [I-D.parecki-oauth-jwt-grant-interaction-response]
              Parecki, A., Campbell, B., and D. Liu, "JWT Authorization
              Grant Interaction Response", Work in Progress, Internet-
              Draft, draft-parecki-oauth-jwt-grant-interaction-response-
              00, 24 March 2026, <https://datatracker.ietf.org/doc/html/
              draft-parecki-oauth-jwt-grant-interaction-response-00>.

   [RFC8414]  Jones, M., Sakimura, N., and J. Bradley, "OAuth 2.0
              Authorization Server Metadata", RFC 8414,
              DOI 10.17487/RFC8414, June 2018,
              <https://www.rfc-editor.org/info/rfc8414>.

Liu                       Expires 15 April 2027                [Page 37]
Internet-Draft            Authorization Schemas             October 2026

   [RFC7591]  Richer, J., Ed., Jones, M., Bradley, J., Machulak, M., and
              P. Hunt, "OAuth 2.0 Dynamic Client Registration Protocol",
              RFC 7591, DOI 10.17487/RFC7591, July 2015,
              <https://www.rfc-editor.org/info/rfc7591>.

   [I-D.zehavi-oauth-authority-metadata]
              Zehavi, Y., "OAuth 2.0 Authority Metadata", Work in
              Progress, Internet-Draft, draft-zehavi-oauth-authority-
              metadata-00, 11 October 2026,
              <https://datatracker.ietf.org/doc/html/draft-zehavi-oauth-
              authority-metadata-00>.

Contributors

   The following individuals contributed to the IETF 126 presentation
   and discussions from which this specification grew:

   Jeff Lombardo  AWS

   Karl McGuinness  Independent

   Yaron Zehavi  Raiffeisen Bank International

   Yaron Sheffer  Intuit

   Suresh Krishnan  Cisco

Acknowledgments

   The author would like to thank Brian Campbell, Aaron Parecki, Hongru
   Zhu, and Hui Xue for their valuable input during the development of
   this specification; their contributions helped shape key design
   decisions.

Example: transaction_authority

   _This appendix is non-normative._ It defines transaction_authority, a
   worked example of a domain-specific authorization schema that
   illustrates the framework requirements of Section 3.2.  It is not
   registered in the Domain-Specific Authorization Schema Types registry
   (Section 12.1); deployments that wish to standardize it or other
   schemas are expected to do so in follow-up specifications.  Nothing
   in the framework is specific to payments: schemas for other domains,
   such as calendaring (time windows and attendee scope), document
   management (access and sharing scope), or service usage (quotas and
   rate windows), satisfy the same requirements.

Liu                       Expires 15 April 2027                [Page 38]
Internet-Draft            Authorization Schemas             October 2026

   The transaction_authority authorization data type defines transaction
   boundaries within which the client is permitted to operate, carried
   within authorization_details.  The example type name is local to this
   specification and is unrelated to the authority metadata concept
   discussed in [I-D.zehavi-oauth-authority-metadata].

   Type Name:  transaction_authority

   Data Type:  Object

   Usage:  authorization_details ([RFC9396])

   The following example shows the authorization_details request
   parameter containing a transaction_authority instance for an
   e-commerce transaction:

   {
     "authorization_details": [
       {
         "type": "transaction_authority",
         "domain": "ecommerce",
         "transaction_id": "urn:uuid:txn-abc-123",
         "boundary": {
           "total_amount_limit": { "value": 50, "currency": "USD" },
           "operations": ["ecommerce.search", "ecommerce.cart.add"],
           "category": ["apparel"],
           "merchant": ["https://shop.example"],
           "time_window": {
             "start": "2026-08-20T00:00:00Z",
             "end": "2026-08-21T00:00:00Z"
           }
         },
         "actions": ["search", "cart.add"],
         "locations": ["https://api.shop.example"]
       }
     ]
   }

          Figure 8: transaction_authority in authorization_details

   In addition to the common fields defined in Section 2 of [RFC9396]
   (such as actions, locations, datatypes, and identifier) and the
   framework fields of Section 3.3, the transaction_authority example
   defines the following type-specific fields:

   domain:  REQUIRED.  A string identifying the application domain the
      schema instance applies to (e.g., "ecommerce").

Liu                       Expires 15 April 2027                [Page 39]
Internet-Draft            Authorization Schemas             October 2026

   transaction_id:  OPTIONAL.  An identifier for the transaction the
      instance governs.  When used together with the authorization
      evidence mechanism ([I-D.liu-oauth-authorization-evidence]), the
      transaction_id correlates the approved instance with the
      corresponding consent record.

   boundary:  REQUIRED.  An object containing the transaction boundary
      constraints.  All fields are OPTIONAL; only behaviors consistent
      with every present constraint are permitted:

      total_amount_limit:  An object with value (number) and currency
         (string) members.  The aggregate amount of the client's
         transactions MUST NOT exceed value in the given currency.

      operations:  An array of namespaced operation identifiers (e.g.,
         "ecommerce.cart.add").  Only the listed operations are
         permitted.

      category:  An array of product category identifiers the client is
         permitted to operate on.

      merchant:  An array of merchant URIs the client is permitted to
         interact with.

      time_window:  An object with start and end members, each a
         timestamp per [RFC3339].  Only behaviors occurring within the
         window are permitted.

   The common RAR fields and the boundary constraints serve different
   consumers at different stages of the authorization flow.  The common
   fields (actions, locations) provide a declarative upper bound on the
   requested operations and resources, enabling the Authorization Server
   to approve or reject the request without interpreting the boundary
   constraints.  The boundary constraints define the behavioral limits
   that the Resource Server verifies against each client behavior at
   runtime.  This layered design allows Authorization Server
   implementations to review requests declaratively, while the Resource
   Server performs per-behavior verification through deterministic
   constraint evaluation.

   The AS SHOULD verify that the boundary constraints are consistent
   with the common fields (Section 6).  The Resource Server bears
   responsibility for ensuring each verified behavior is consistent with
   the approved schema instance at runtime.

Liu                       Expires 15 April 2027                [Page 40]
Internet-Draft            Authorization Schemas             October 2026

Open Issues

   _This appendix is non-normative; it records questions on which
   working group guidance is sought._

Machine-Readable Constraint Semantics Beyond JSON Schema

   Clients require semantics such as deny-by-default, cross-field
   relationships, and cumulative-constraint evaluation in a machine-
   readable form to construct conforming instances autonomously.
   Candidate approaches include (a) a closed declarative constraint-
   operator vocabulary, (b) signed server-side policy attachments
   evaluated in trusted environments, and (c) policy languages such as
   Rego, used inside the Authorization Server to implement its review of
   submitted instances.  Approach (c) must be reconciled with the No
   Executable Content principle of this specification (Section 10.2).
   Guardrail instances (Section 3.5) cover the hard-constraint cases;
   policy languages offer increment only where approval policies need
   complex cross-field derivation.  Whether policy languages can also be
   carried in reverse-guided responses (Section 5) has been discussed,
   but no conclusion has been reached.  Working group guidance is
   sought.

URI-Valued Type Identifiers

   This specification allows authorization details type values that are
   HTTPS URIs (Section 3.1).  The RAR metadata mechanisms of
   [I-D.ietf-oauth-rar-metadata-remediation] key type metadata by type
   name; carrying URI values in those keys is structurally compatible
   with the JSON map, but the assumption that type names are simple
   strings is widespread in that document and its implementations.
   Coordination on the interoperability of URI-valued types is expected;
   see Section 5.3.

Per-Instance Subset Policy Switch

   This specification makes subset verification unconditional in Token
   Exchange (Section 9).  Deployments requiring relaxation semantics may
   request guidance from the working group.

Author's Address

   Dapeng Liu
   Alibaba
   Email: max.ldp@alibaba-inc.com

Liu                       Expires 15 April 2027                [Page 41]