Skip to content

ARAP: core-first restructure with companion profiles - #658

Merged
mcguinness merged 5 commits into
mainfrom
arap-restructure
Oct 1, 2026
Merged

mcguinness merged 5 commits into
mainfrom
arap-restructure

Conversation

@mcguinness

@mcguinness mcguinness commented Sep 20, 2026 •

Copy link
Copy Markdown
Collaborator

Restructures the AuthZEN Access Request and Approval Profile (ARAP) into a narrow-waist core with companion profiles, without changing the force of any requirement.

What changes

Core protocol first. The base document reads in flow order: requestable denial, submission, task, approval and re-evaluation. Message definitions stay in those sections; every processing rule has one normative home in PEP Processing, PDP Processing, or Access Request Service Processing. Trusted-state examples lead; binding artifacts follow in their own section.

Companion profiles. Four capabilities move out of the base, each hooking in through the extension points and registering its member names:

  • authzen-access-request-catalog-profile-1_0.md: catalog-backed request input (informative reference)
  • authzen-access-request-bulk-profile-1_0.md: multi-item submissions and the partial status
  • authzen-access-request-callback-profile-1_0.md: completion notifications
  • authzen-access-request-actor-profile-1_0.md: client.actor, client.source, and actor-chain verification

The core states that a normative reference to a companion is authoritative when its feature is used and does not require implementing it.

Explicit models. A Binding Model table (denial and approval boundaries, signed and lookup forms), seven Protocol Invariants, a Decision Context Members table giving each extension member's effect when recognized and its handling when not, and the profile's position among the AuthZEN continuation mechanisms (obligations, partial evaluation, Access Request, retry).

Security Considerations are threat statements that cite the rules mitigating them; they introduce no requirements.

What does not change

No requirement was added, removed, or changed in actor, condition, obligation, exceptions, or force. The base document's RFC 2119 keyword count fell from 409 to 314 entirely through listed duplicate folds, each paired with its surviving rule, and relocation to companions. Every stage was verified by script (build, anchor resolution, section-aware unit comparison, sentence diff) and independently audited before commit; the audits found no meaning change.

Open protocol questions

The restructure surfaced protocol questions it did not resolve, and adopts no answer to any of them. They are filed as eight issues, each stating the problem and recommending a solution:

Five independent reviews of this restructure converged on the same blockers, and all but one sit in the signed-binding layer. #659, #660, and #661 together define what a portable signed artifact contains and who vouches for the key that signs it. #666 asks who has to implement any of it: today every conforming Access Request Service and PDP must support JWS verification even when their deployment never exchanges a signed artifact, and that is the change that would most reduce what an implementer builds. #659, #660, #661, and #666 should be settled in the same cycle. #663 is the one a PEP implementer meets first. A longer write-up of the layering, with the move map and the capability-advertisement semantics, is in PROFILE-FAMILY-PROPOSAL.md on the arap-editorial branch.

Two further issues against the companion profiles, for callback acceptance semantics and an unsupported items member, are drafted and not yet filed.

Also

CI workflow, README, and Makefiles build and publish all five profiles.

Present the protocol in flow order: requestable denial, submission,
task, approval and re-evaluation. Message definitions stay in those
sections, cut to name, presence, type, and one sentence; every
processing rule has one normative home in PEP Processing, PDP
Processing, or Access Request Service Processing. Trusted-state
examples lead the exchange; binding artifacts follow in a section of
their own.

Add the models the rules rest on: a Binding Model table covering the
denial and approval boundaries in their signed and lookup forms, seven
Protocol Invariants, a Decision Context Members table giving each
extension member's effect when recognized and its handling when not,
and the profile's position among the AuthZEN continuation mechanisms.
Security Considerations become threat statements citing the rules that
mitigate them, and introduce no requirements of their own.

Catalog, bulk, callback, and actor delegation material moves to
companion profiles, referenced normatively where their features are
used. A normative reference is authoritative when the feature is used
and does not require implementing the companion.

No requirement changes in actor, condition, obligation, exceptions, or
force. The RFC 2119 keyword count falls from 409 to 314 through
duplicate folds, each paired with a surviving rule, and relocation to
the companions.
Four capabilities that only some deployments need, each carrying its
own document format, endpoint, or verification model, and each hooking
into the base profile through its declared extension points and
registering its member names.

- Catalog: how a PEP resolves request fields backed by application,
  entitlement, role, or cost-center catalogs.
- Bulk Access Requests: the items member of the submission and the
  Task Handle, bundle and per-item denial binding, aggregate status
  including partial, and bulk cancellation and re-evaluation.
- Callback Notifications: the callback submission member, notification
  delivery and authentication, and interaction with polling.
- Actor Delegation: the client.actor and client.source members, the
  delegation model they express, and actor-chain verification.

Each moves the material verbatim from the base profile. The base keeps
the rules that reference these members: the PEP preserves actor
identity when it submits, the Access Request Service does not treat
unverified actor content as authorization input, and structural
comparison excludes subject.properties.act.
Build and render all five profiles from explicit sources, add the
convert, render, and artifact steps for each new companion to the
Pages workflow together with the matching download steps in the
publish job, and list the companions in the README.

@davidjbrossard davidjbrossard left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall I think it reads well. I couldn't see any glaring issues and it breaks down the original doc into the subfiles you created.

  • Re-evaluation Mode is never explicitly defined. Should we have a glossary of terms?

@mcguinness

Copy link
Copy Markdown
Collaborator Author

Good catch. ARAP already has a Terminology section, but the completion-mode concept was missing from it. I've added "Completion Mode" there, with reevaluate as the base mode, and replaced the undefined "Re-evaluation Mode" with "the reevaluate completion mode", which matches the OAuth profile's wording. No normative change.

@davidjbrossard davidjbrossard left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Collectively approved on the WG call 10/01

@mcguinness
mcguinness merged commit b304f68 into main Oct 1, 2026
16 checks passed
@mcguinness
mcguinness deleted the arap-restructure branch October 1, 2026 21:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants