Internet-Draft OAuth Mission Consent Evidence July 2026
McGuinness Expires 8 January 2027 [Page]
Workgroup:
Web Authorization Protocol
Internet-Draft:
draft-mcguinness-oauth-mission-consent-evidence-latest
Published:
Intended Status:
Standards Track
Expires:
Author:
K. McGuinness
Independent

Mission Consent Evidence for OAuth 2.0

Abstract

Mission-Bound Authorization for OAuth 2.0 commits the approved Mission Intent and Authority Set, but does not commit the exact consent disclosure shown to the Approver. This document defines an optional Consent Evidence profile. It specifies a structured consent disclosure object, a consent_rendering_hash integrity anchor, and a signed Consent Evidence object that records the structured disclosure the Authorization Server rendered or committed to rendering, which Approver it recorded as deciding, which Mission authority the disclosure corresponded to, and which notices or material risks it carried. Evidence is recorded for approved, declined, and narrowed (revision-required) decisions, so declines and narrowing negotiations are visible to audit, not only approvals. A rendering-assurance ladder lets a deployment raise assurance by degrees, from a recorded disclosure through deterministic re-rendering and attested rendering to a confirmation signed by the Approver's authenticator over the disclosure commitment. The profile lets an auditor reconstruct the recorded approval surface without making the disclosure itself an authority grant.

About This Document

This note is to be removed before publishing as an RFC.

The latest revision of this draft can be found at https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-consent-evidence.html. Status information for this document may be found at https://datatracker.ietf.org/doc/draft-mcguinness-oauth-mission-consent-evidence/.

Source for this draft and an issue tracker can be found at https://github.com/mcguinness/mission-bound-authorization.

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 8 January 2027.

Table of Contents

1. Introduction

Mission-Bound Authorization for OAuth 2.0 [I-D.draft-mcguinness-oauth-mission] (the "issuance profile") binds a Mission to an approval event and commits two objects: the approved Mission Intent and the approved Authority Set. It deliberately notes a remaining gap: the exact consent disclosure rendered to the Approver is not itself committed.

This document narrows that gap. It defines a structured consent disclosure object and a Consent Evidence object. The disclosure object is what the Authorization Server renders or commits to rendering. The evidence object records the approval event, the rendering context, the Mission anchors, and an integrity envelope over the evidence.

This profile commits the structured disclosure that the Authorization Server says it rendered, and binds it to the same Mission anchors used for authority. It does not, and cannot, prove that the pixels actually presented to the Approver matched that structured object, that the Approver read or understood it, or that the rendering layer was honest. A faulty or malicious rendering layer that lies about what it displayed remains outside the reach of any server-side commitment. What this profile provides is a durable, integrity-protected record that ties a specific structured disclosure to a specific approval decision and Authority Set, so that divergence between the recorded disclosure and the enforced authority becomes detectable in audit.

How much a deployment can narrow the rendering gap is not all-or-nothing. This profile defines a ladder of rendering assurance (Section 6) whose rungs move the trust from an unbounded, unverifiable rendering layer toward the Approver's own authenticator signing the exact disclosure commitment. No rung proves what pixels a human perceived, but the higher rungs shrink the trusted rendering base to a small, attestable one and let the deployment pick the assurance its threat model needs.

Consent Evidence does not grant authority. Authority remains the approved Mission and its Authority Set under [I-D.draft-mcguinness-oauth-mission]. Consent Evidence lets auditors verify that the recorded approval surface corresponded to the authority later enforced.

2. Scope

This document defines:

This document does not define user-interface layout, a legal consent standard, or any new OAuth grant. It does not change the Authority Set or Mission lifecycle. Under the standalone Mission Authority Server binding ([I-D.draft-mcguinness-mission-authority-server]), the Mission Authority Server is the committing Mission Issuer and this profile composes with it unchanged.

2.1. Evidence Model

This profile separates three artifacts:

  1. the Mission Intent and Authority Set, which define what is being approved under [I-D.draft-mcguinness-oauth-mission];

  2. the Consent Disclosure object, which defines in structured form what the Authorization Server rendered or committed to rendering for the Approver; and

  3. the Consent Evidence object, which records the approval or decline event and integrity-protects the disclosure commitment.

Only the approved Mission grants authority. The disclosure and evidence objects prove the approval surface and are audit artifacts.

3. Conventions and 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.

This document uses JSON [RFC8259] for the disclosure and evidence objects. JCS [RFC8785] is used when computing consent_rendering_hash.

The terms Mission, Mission Intent, Authority Set, Mission Issuer, Approver, and approval event are used as defined in [I-D.draft-mcguinness-oauth-mission].

Consent Disclosure:

A structured object describing the approval surface rendered to the Approver.

Consent Evidence:

A durable, integrity-protected record of the consent disclosure and approval event.

6. Rendering Assurance

The commitment of Section 5 records what disclosure the Authorization Server says it rendered; it cannot by itself prove what a human perceived. This is the what-you-see-is-what-you-sign problem. This profile does not close it with a server-side commitment, which is impossible, but defines a ladder a deployment climbs as far as its threat model requires. Each rung shrinks the trusted rendering base; to claim a rung a deployment satisfies it and records the corresponding evidence. The rungs are cumulative: claiming a rung requires satisfying the rungs below it, so a Rung 3 confirmation is over a disclosure that is also deterministically renderable (Rung 1) and an auditor can re-render exactly what the confirmation signed.

Rung 0, Recorded disclosure:

The baseline of Section 5: the structured disclosure is committed and bound to the Mission anchors. Proves the AS recorded this disclosure for this authority; proves nothing about what was shown.

Rung 1, Deterministic rendering:

An auditor can re-render the intended form, so the open question narrows to whether the rendering layer faithfully executed a published template. A deployment claiming Rung 1 MUST:

  • render the disclosure as a deterministic function of the disclosure object, template_id, template_version, template_hash, and locale, so the same inputs produce the same rendered form within a presentation modality;

  • commit the template content bytes in template_hash (Section 4); and

  • keep the named template retrievable or reconstructable by an authorized auditor for the retention period (Section 9).

Rungs above 1 shrink the trusted rendering base further, from any rendering layer to an attested renderer (Rung 2) and to the Approver's own authenticator (Rung 3), with out-of-band execution-time confirmation above that (Rung 4). Each imports a trust infrastructure (platform or TEE attestation; transaction-confirming authenticators) this profile cannot supply; they are experimental and defined in Appendix A. Rungs 0 and 1 are the rungs of this profile's conformance.

No rung proves the Approver perceived or understood the disclosure; a compromised authenticator or trusted execution environment, or an Approver who confirms without reading, remains outside reach, as for any electronic-signature scheme. What the ladder provides is a verifiable, bounded reduction of the rendering trust base.

8. Binding to Mission Approval

At an approval event, a Consent-Evidence-capable Mission Issuer MUST:

  1. derive the Authority Set and compute intent_hash and authority_hash under [I-D.draft-mcguinness-oauth-mission];

  2. construct the Consent Disclosure object from that exact Authority Set and Mission Intent;

  3. compute consent_rendering_hash;

  4. render the disclosure to the Approver;

  5. record Consent Evidence for the decision (approved, declined, or narrowed); and

  6. when approved, bind the Mission record to the consent_rendering_hash.

For expansion approvals, the disclosure MUST identify the predecessor Mission and distinguish retained authority from newly requested authority.

8.1. Declined Approval Events

Declined approval events are security-relevant. A deployment claiming this profile MUST record Consent Evidence when an Approver declines a Mission or expansion request. The evidence MAY omit sensitive free-form decline text, but it MUST record the disclosure commitment, decision, Approver, time, and policy version when known.

Declined evidence MUST NOT create a Mission, Mission claim, token, or authority. It exists to prevent silent retry, coercion, and rendering confusion from being invisible to audit.

8.2. Revision-Required Events

A revision-required outcome, in which the review can approve only a narrowed version and invites a narrowing revision under the experimental approval-revision profile ([I-D.draft-mcguinness-oauth-mission-approval-revision]), is recorded as Consent Evidence with decision of narrowed. The evidence carries the reviewed disclosure's consent_rendering_hash and the refused_dimensions the review named. Like a decline, narrowed evidence MUST NOT create a Mission, Mission claim, token, or authority: no Mission exists until an approval commits one.

When the revision chain resolves to an approval, the final approved evidence MAY carry predecessor_intent_hashes committing the chain of reviewed proposals that preceded it.

8.3. Expansion and Delta Disclosure

When the approval event is for Mission Expansion, the Consent Disclosure object MUST distinguish:

  • authority retained from the predecessor;

  • authority newly added;

  • authority removed or narrowed;

  • changes to Mission expiry;

  • changes to delegation or child-Mission rights; and

  • the predecessor Mission identifier.

An expansion disclosure that renders only the final Authority Set without the delta is not conforming to this profile, because it fails to show what is being widened.

9. Audit Reconstruction

A deployment claiming this profile MUST retain enough information for an authorized auditor to reconstruct:

Retention MUST last at least as long as the Mission's audit horizon, the term the issuance profile defines ([I-D.draft-mcguinness-oauth-mission]). Declined and narrowed events create no Mission (Section 8.1, Section 8.2) and so have no Mission audit horizon; a deployment MUST retain their evidence for a deployment-declared window.

9.1. Minimization and Redaction

The portable Consent Evidence object MAY carry a durable reference to the full Consent Disclosure object rather than the object itself. A durable reference is an absolute HTTPS URI paired with the consent_rendering_hash the retrieved disclosure MUST verify against. The minimal retrieval profile is an authenticated HTTPS GET that returns the disclosure as application/mission-consent-evidence+json; the authorization it requires is deployment-defined. A verifier with authorization MUST be able to retrieve or reconstruct the disclosure for the retention period and MUST verify the retrieved object against consent_rendering_hash. Non-retrievability within the retention window is an audit failure (Section 9) within deployment agreement, not an integrity failure of the evidence record (Section 7.1).

Free-form task text and approver comments SHOULD be redacted or stored by reference when not required for ordinary audit.

10. Conformance

A conforming Consent-Evidence-capable Mission Issuer MUST:

A conforming verifier of Consent Evidence MUST implement the checks in Section 7.1 and MUST treat failure to retrieve a referenced disclosure during the retention window as an audit failure.

11. Security Considerations

11.1. Rendering Confusion

The primary threat is rendering confusion: the Approver sees one thing while the Mission records another. This profile mitigates that by committing a structured disclosure object to the same Mission anchors used for authority, so a disclosure that understates the Authority Set is detectable in audit. It does not eliminate the threat: a rendering layer that displays pixels inconsistent with the structured disclosure it commits remains outside any server-side commitment (Section 1). The assurance ladder of Section 6 is how a deployment reduces this threat by degree: deterministic rendering makes the intended form re-renderable (Rung 1), and the experimental rungs (Appendix A) bind an attested renderer (Rung 2) or the Approver's own authenticator (Rung 3). A deployment that needs assurance that the Approver approved a specific disclosure SHOULD evaluate Rung 3 for its high-risk classes; no rung proves perception, which remains outside reach for any electronic-signature scheme.

11.2. Template Downgrade

An attacker could use an outdated or less explicit template. The Consent Disclosure object includes template_id and template_version; deployments SHOULD reject templates not approved for the action classes being authorized.

11.3. Evidence Does Not Grant Authority

Consent Evidence proves what was recorded as shown and decided. It MUST NOT be accepted as a token, grant, or substitute for the Mission's authority_hash.

11.4. Decline Suppression

An attacker could repeatedly reshape and resubmit a declined Mission to obtain approval through fatigue. Recording declined events lets deployments detect repeated attempts against the same task, requester, or Authority Set.

11.5. Incomplete Material Notices

If material notices omit high-risk authority, the Approver's consent may not be meaningful. Deployments SHOULD test disclosure templates against Authority Set fixtures and reject templates that cannot render all material notice classes.

12. Privacy Considerations

Consent Evidence can contain sensitive task descriptions, business context, approver identity, subject identity, and high-risk authority details. Deployments SHOULD protect it at least as strongly as Mission records and runtime evidence. Where possible, portable records SHOULD carry hashes or references rather than full rendered text, while still allowing authorized audit reconstruction.

A global sequence counter leaks approval volume: a holder of two evidence records can read the gap between their sequence values as the count of approvals the Mission Issuer processed in between. A deployment sensitive to that side channel SHOULD scope sequence per Mission or per audit scope rather than use a single global counter.

13. IANA Considerations

13.1. Media Type Registry

IANA is requested to register one media type per [RFC6838]. The Mission audit profile references this media type.

14. References

14.1. Normative References

[I-D.draft-mcguinness-oauth-mission]
McGuinness, K., "Mission-Bound Authorization for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission.html>.
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/rfc/rfc2119>.
[RFC3339]
Klyne, G. and C. Newman, "Date and Time on the Internet: Timestamps", RFC 3339, DOI 10.17487/RFC3339, , <https://www.rfc-editor.org/rfc/rfc3339>.
[RFC6234]
Eastlake 3rd, D. and T. Hansen, "US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)", RFC 6234, DOI 10.17487/RFC6234, , <https://www.rfc-editor.org/rfc/rfc6234>.
[RFC6838]
Freed, N., Klensin, J., and T. Hansen, "Media Type Specifications and Registration Procedures", BCP 13, RFC 6838, DOI 10.17487/RFC6838, , <https://www.rfc-editor.org/rfc/rfc6838>.
[RFC7515]
Jones, M., Bradley, J., and N. Sakimura, "JSON Web Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, , <https://www.rfc-editor.org/rfc/rfc7515>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/rfc/rfc8174>.
[RFC8259]
Bray, T., Ed., "The JavaScript Object Notation (JSON) Data Interchange Format", STD 90, RFC 8259, DOI 10.17487/RFC8259, , <https://www.rfc-editor.org/rfc/rfc8259>.
[RFC8785]
Rundgren, A., Jordan, B., and S. Erdtman, "JSON Canonicalization Scheme (JCS)", RFC 8785, DOI 10.17487/RFC8785, , <https://www.rfc-editor.org/rfc/rfc8785>.

14.2. Informative References

[I-D.draft-mcguinness-mission-authority-server]
McGuinness, K., "Mission Authority Server", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-authority-server.html>.
[I-D.draft-mcguinness-mission-runtime]
McGuinness, K., "Mission-Bound Runtime Enforcement", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-runtime.html>.
[I-D.draft-mcguinness-mission-shaping]
McGuinness, K., "Mission Intent Shaping", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-shaping.html>.
[I-D.draft-mcguinness-oauth-mission-approval]
McGuinness, K., "Mission Deferred Approval for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-approval.html>.
[I-D.draft-mcguinness-oauth-mission-approval-revision]
McGuinness, K., "Mission Approval Revision for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-approval-revision.html>.
[I-D.draft-mcguinness-oauth-mission-expansion]
McGuinness, K., "Mission Expansion for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-expansion.html>.

Appendix A. Experimental Rendering-Assurance Rungs

This appendix is experimental: adopt it for evaluation, not as a stable interface. Each rung below extends the ladder of Section 6 by importing a trust infrastructure this profile does not supply: platform or trusted-execution-environment attestation for Rung 2, transaction-confirming authenticators for Rung 3. The cumulative rule of Section 6 applies: a rung is claimed only over a disclosure that also satisfies the rungs below it.

Rung 2, Attested rendering:

The Consent Evidence carries a rendering_attestation (Section 7): evidence that an attested, identified rendering component (a first-party AS-hosted consent surface, or a renderer attested by the platform or a trusted execution environment) produced the rendering. The trusted base shrinks from any rendering layer to an attested one.

Rung 3, Approver confirmation:

The Consent Evidence carries a rendering_confirmation (Section 7): a signature produced by the Approver's authenticator over the consent_rendering_hash at approval, binding the approval credential itself to the exact committed disclosure. The claim that the Approver approved this disclosure then rests on the Approver's authenticator, not on the Authorization Server. This is the what-you-see-is-what-you-sign rung, as in authenticator transaction-confirmation schemes. A deployment claiming this rung SHOULD apply it to a Mission whose Authority Set carries a high-risk material-notice class (Section 4.2).

Rung 4, Out-of-band confirmation:

For the most material actions, confirmation is obtained at execution time on a channel the rendering layer does not control, as the action-bound approval of the runtime layer ([I-D.draft-mcguinness-mission-runtime]); a rendering layer would then have to compromise two independent paths. That is a runtime-layer mechanism recorded as its own evidence; this profile records the approval-time rungs above.

At Rung 3 the claim that the Approver approved a specific disclosure is verifiable up to trust in the Approver's authenticator, rather than in an arbitrary rendering layer. The verifier obligations for these rungs are steps 7 and 8 of Section 7.1; their absence asserts no rung above the ones the record satisfies and is never an integrity failure.

Appendix B. Worked Disclosure and Test Vector

This non-normative vector lets an implementation verify its consent_rendering_hash computation (Section 5) byte for byte. The disclosure is the one the evidence example of Section 7 records. It renders the Authority Set of the issuance profile's test vectors ([I-D.draft-mcguinness-oauth-mission]): invoices.read and journal-entries.write bounded by a max_amount of 500.00 USD on https://erp.example.com, approved by alice (user_3p2q8mN1a0kV7tR); source_hashes carries that profile's computed intent_hash and authority_hash. The template_hash value stands for the deployment's template commitment and is illustrative.

The Consent Disclosure object:

{
  "disclosure_id": "disc_4pQ9z",
  "source_hashes": {
    "intent_hash":
      "sha-256:6mIFoCz79uCHNzKLfBpBwqFjoFXdpmpuc65486IqimQ",
    "authority_hash":
      "sha-256:vUCCfjGulit9u0qJ0Z6pQSNerZtXMqRlfJNCr4PzLro"
  },
  "template_id": "mission-consent-standard",
  "template_version": "2026-06",
  "template_hash":
    "sha-256:50S2DpJfcfNGlzi_vzZJNJbJKkknFX65rhWJWLiMyok",
  "locale": "en-US",
  "mission_summary": {
    "goal": "Reconcile Q3 invoices",
    "expires_at": "2026-12-31T23:59:59Z",
    "subject_display": "alice (user_3p2q8mN1a0kV7tR)",
    "approver_display": "alice (user_3p2q8mN1a0kV7tR)"
  },
  "authority_summary": [
    {
      "resource": "https://erp.example.com",
      "actions": ["invoices.read"]
    },
    {
      "resource": "https://erp.example.com",
      "actions": ["journal-entries.write"],
      "constraints": [
        {
          "constraint": "max_amount",
          "value": { "amount": "500.00", "currency": "USD" },
          "rendered":
          "Each journal entry is capped at 500.00 US dollars (USD)."
        }
      ]
    }
  ],
  "material_notices": [
    {
      "condition": "irreversible_action",
      "applies_to": {
        "resource": "https://erp.example.com",
        "action": "journal-entries.write"
      },
      "statement":
        "Posted journal entries are not automatically reversible."
    }
  ],
  "risk_summary": [
    {
      "dimension": "data_access",
      "statement":
        "The agent can read invoices held in the ERP system."
    },
    {
      "dimension": "spend",
      "statement":
        "The agent can post journal entries of up to 500 US dollars."
    },
    {
      "dimension": "irreversibility",
      "statement":
        "Posted journal entries alter the ledger of record."
    }
  ],
  "constraint_provenance": [
    {
      "applies_to": {
        "resource": "https://erp.example.com",
        "constraint": "max_amount"
      },
      "source": "subject"
    }
  ],
  "approver": {
    "iss": "https://idp.example.com",
    "sub": "user_3p2q8mN1a0kV7tR",
    "display": "alice"
  },
  "display_context": {
    "channel": "web",
    "rendered_at": "2026-06-30T17:54:30Z"
  },
  "approver_actions": [
    {
      "action": "acknowledge_notice",
      "applies_to": {
        "resource": "https://erp.example.com",
        "action": "journal-entries.write"
      },
      "condition": "irreversible_action"
    }
  ]
}

The read entry carries no constraints, so its element renders none. The write entry warrants a material notice and an irreversibility risk dimension because posted journal entries are not automatically reversible; constraint_provenance attributes the max_amount bound to the Subject, who stated it in the task request. The notice is of a high-risk class, so approver_actions carries its per-notice acknowledgment (Section 4.2). The Approver is the Subject, so the top-level subject member is absent.

consent_rendering_hash is the prefixed SHA-256 over the JCS [RFC8785] canonical bytes of the integrity-anchor envelope with typ mission-consent-disclosure, iss https://as.example.com, and this disclosure object as value. The canonical-bytes block is the exact JCS output: a single line, UTF-8, no whitespace. It is shown here wrapped only for layout; remove the layout line breaks, adding no characters, to recover the canonical form. Note that JCS sorts object member names and preserves array order.

Canonical bytes of the envelope:

{"iss":"https://as.example.com","typ":"mission-consent-disclosure"
,"value":{"approver":{"display":"alice","iss":"https://idp.example
.com","sub":"user_3p2q8mN1a0kV7tR"},"approver_actions":[{"action":
"acknowledge_notice","applies_to":{"action":"journal-entries.write
","resource":"https://erp.example.com"},"condition":"irreversible_
action"}],"authority_summary":[{"actions":["invoices.read"],"resou
rce":"https://erp.example.com"},{"actions":["journal-entries.write
"],"constraints":[{"constraint":"max_amount","rendered":"Each jour
nal entry is capped at 500.00 US dollars (USD).","value":{"amount"
:"500.00","currency":"USD"}}],"resource":"https://erp.example.com"
}],"constraint_provenance":[{"applies_to":{"constraint":"max_amoun
t","resource":"https://erp.example.com"},"source":"subject"}],"dis
closure_id":"disc_4pQ9z","display_context":{"channel":"web","rende
red_at":"2026-06-30T17:54:30Z"},"locale":"en-US","material_notices
":[{"applies_to":{"action":"journal-entries.write","resource":"htt
ps://erp.example.com"},"condition":"irreversible_action","statemen
t":"Posted journal entries are not automatically reversible."}],"m
ission_summary":{"approver_display":"alice (user_3p2q8mN1a0kV7tR)"
,"expires_at":"2026-12-31T23:59:59Z","goal":"Reconcile Q3 invoices
","subject_display":"alice (user_3p2q8mN1a0kV7tR)"},"risk_summary"
:[{"dimension":"data_access","statement":"The agent can read invoi
ces held in the ERP system."},{"dimension":"spend","statement":"Th
e agent can post journal entries of up to 500 US dollars."},{"dime
nsion":"irreversibility","statement":"Posted journal entries alter
 the ledger of record."}],"source_hashes":{"authority_hash":"sha-2
56:vUCCfjGulit9u0qJ0Z6pQSNerZtXMqRlfJNCr4PzLro","intent_hash":"sha
-256:6mIFoCz79uCHNzKLfBpBwqFjoFXdpmpuc65486IqimQ"},"template_hash"
:"sha-256:50S2DpJfcfNGlzi_vzZJNJbJKkknFX65rhWJWLiMyok","template_i
d":"mission-consent-standard","template_version":"2026-06"}}
consent_rendering_hash =
  sha-256:W-aXkM2quCh07XvdixCTk8qHoMWOs2tA0hZej4kLGr0

An implementation that canonicalizes the same envelope, computes SHA-256, and encodes as sha-256: followed by base64url with no padding reproduces this value exactly. A divergence indicates a JCS or encoding difference to resolve before interoperating.

Acknowledgments

This document is part of the Mission-Bound Authorization for OAuth 2.0 set and binds the approval surface to the Mission authority record.

Author's Address

Karl McGuinness
Independent