<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.7) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-kavian-agent-enrollment-protocol-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="AEP">The Agent Enrollment Protocol</title>

    <author initials="N." surname="Kavian" fullname="N. Kavian">
      <organization>Jarwin, Inc. (InFlow)</organization>
      <address>
        <email>nas@inflowpay.ai</email>
      </address>
    </author>

    <date year="2026" month="October" day="31"/>

    
    
    

    <abstract>


<?line 56?>

<t>The Agent Enrollment Protocol (AEP) defines an HTTP-based mechanism for autonomous agents to discover service enrollment requirements, enroll an agent identity, obtain optional session credentials, revoke those credentials, and query enrollment status. AEP uses Decentralized Identifiers, client assertion JWTs, and HTTP Problem Details to provide a narrow machine-first enrollment and authentication substrate for agent-to-service interactions.</t>



    </abstract>



  </front>

  <middle>


<?line 60?>

<section anchor="introduction"><name>Introduction</name>

<t>Autonomous agents increasingly interact with internet services without a human directly completing registration forms, email confirmations, password setup, or dashboard-based API-key provisioning. Existing HTTP authentication mechanisms can authenticate an already-provisioned client, but they do not define a machine-first enrollment flow by which an autonomous agent discovers a service's requirements, presents a cryptographic identity, and becomes recognized by that service.</t>

<t>The Agent Enrollment Protocol (AEP) defines that enrollment substrate. AEP lets an Agent discover what a Service requires, enroll a supported identity method, authenticate AEP commands with a per-request client assertion JWT, optionally obtain a session credential, revoke issued session credentials, and query enrollment status.</t>

<t>AEP is deliberately narrow. It does not define payment settlement, checkout semantics, action authorization, KYC execution, or legal policy. Those functions can compose above or beside AEP. This document defines only the minimum HTTP protocol needed for interoperable Agent enrollment and session-credential bootstrapping.</t>

<t>This document's scope is limited to the HTTP binding for Inspect, Enroll, Grant, Revoke, and Status. Update, Rotate, Decommission, non-HTTP transports, concrete session-credential formats, policy disclosures, KYA, ZK proofs, and other extensions are out of scope for this document.</t>

</section>
<section anchor="requirements-language"><name>Requirements Language</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
<section anchor="terminology"><name>Terminology</name>

<dl>
  <dt>Agent:</dt>
  <dd>
    <t>Software acting autonomously. An Agent holds or controls a cryptographic key and initiates AEP requests.</t>
  </dd>
  <dt>Service:</dt>
  <dd>
    <t>The HTTP server that receives AEP requests and decides whether to enroll or recognize an Agent.</t>
  </dd>
  <dt>Owner:</dt>
  <dd>
    <t>The human or organization that owns or controls an Agent. Owner details are represented as claims when a Service requires them.</t>
  </dd>
  <dt>Platform:</dt>
  <dd>
    <t>An optional operator that hosts Agent identity material or signing infrastructure. A Platform is not required by AEP.</t>
  </dd>
  <dt>Verifier:</dt>
  <dd>
    <t>A party that verifies claims about an Agent or Owner and may issue attestations referenced by the Agent. This document does not define attestation formats.</t>
  </dd>
  <dt>Inspect document:</dt>
  <dd>
    <t>The JSON discovery document published by a Service at <spanx style="verb">/.well-known/aep</spanx>. It advertises AEP version, supported commands, accepted identity methods, requested claims, endpoint configuration, and extension support.</t>
  </dd>
  <dt>Client assertion:</dt>
  <dd>
    <t>A JWT signed by the Agent's private key and presented on an authenticated AEP command or protected Service resource. The assertion binds the Agent identity, Service identity, operation, issuance time, expiration time, replay identifier, and, for protected resources, the resource URI.</t>
  </dd>
  <dt>Session credential:</dt>
  <dd>
    <t>A stateful credential issued by the Grant command and presented on later requests according to a separate session-credential specification.</t>
  </dd>
  <dt>Grant type:</dt>
  <dd>
    <t>A string identifier for a concrete session-credential format supported by the Service, such as an OAuth Bearer, API-key, or Basic credential specification.</t>
  </dd>
  <dt>Authentication method:</dt>
  <dd>
    <t>A wire identifier advertised by a Service for authenticating protected resources. <spanx style="verb">aep-jwt</spanx> identifies an AEP client assertion; registered Grant Type identifiers identify session credentials.</t>
  </dd>
</dl>

</section>
<section anchor="protocol-overview"><name>Protocol Overview</name>

<t>The baseline AEP flow is:</t>

<t><list style="numbers" type="1">
  <t>The Agent fetches the Service's Inspect document.</t>
  <t>The Agent evaluates whether it can satisfy the Service's identity-method and claim requirements.</t>
  <t>The Agent constructs a client assertion JWT with <spanx style="verb">aud</spanx> equal to the Service DID and <spanx style="verb">op</spanx> equal to the command being invoked.</t>
  <t>The Agent invokes Enroll.</t>
  <t>The Agent calls Status when enrollment is pending or when it needs current state.</t>
  <t>The Agent may call Grant for a supported session-credential type.</t>
  <t>The Agent may call Revoke to invalidate issued session credentials.</t>
</list></t>

<t>Inspect is unauthenticated. Every Service that exposes Enroll, Grant, Revoke, or Status <bcp14>MUST</bcp14> accept the baseline <spanx style="verb">Authorization: AEP &lt;jwt&gt;</spanx> form on that command. Session credentials, once issued, <bcp14>MAY</bcp14> additionally be used on commands that allow the selected credential type; Grant and Revoke themselves always use the baseline client assertion. Support for the baseline client assertion on AEP command endpoints does not advertise or imply support for <spanx style="verb">aep-jwt</spanx> on protected application resources.</t>

</section>
<section anchor="versioning-and-compatibility"><name>Versioning and Compatibility</name>

<t>The <spanx style="verb">aep_version</spanx> member is a JSON string in <spanx style="verb">MAJOR.MINOR</spanx> form. <spanx style="verb">MAJOR</spanx> and <spanx style="verb">MINOR</spanx> are unsigned decimal integers without leading zeroes except for the value <spanx style="verb">0</spanx>. The protocol version defined by this document is <spanx style="verb">1.0</spanx>.</t>

<t>The major version identifies the compatibility family. An implementation <bcp14>MUST</bcp14> reject an Inspect document whose major version it does not support. Minor versions within one major version are backward compatible. A same-major minor revision <bcp14>MAY</bcp14> add optional fields, optional values, optional capabilities, or clarifications that preserve existing wire behavior. It <bcp14>MUST NOT</bcp14> remove or redefine existing wire behavior or make a new capability mandatory for implementations of an earlier minor version.</t>

<t>An implementation supporting a major version <bcp14>MUST</bcp14> process Inspect documents carrying any minor version in that major-version family according to the unknown-field and extension rules in this document. It <bcp14>MUST NOT</bcp14> infer support for an optional command, identity method, authentication method, grant type, binding, or extension from the minor version. The <spanx style="verb">aep_version</spanx> member is the sole protocol-version authority; HTTP media-type parameters do not select or modify the AEP version.</t>

</section>
<section anchor="http-binding"><name>HTTP Binding</name>

<t>This document defines an HTTP binding using HTTP semantics <xref target="RFC9110"/> over HTTP/1.1 <xref target="RFC9112"/>, HTTP/2 <xref target="RFC9113"/>, or HTTP/3 <xref target="RFC9114"/>. Network use of this binding requires TLS 1.3 or later <xref target="RFC9846"/>. Plaintext HTTP is out of scope.</t>

<t>The binding uses only <spanx style="verb">GET</spanx> and <spanx style="verb">POST</spanx>:</t>

<texttable>
      <ttcol align='left'>Command</ttcol>
      <ttcol align='left'>Method</ttcol>
      <ttcol align='left'>Endpoint</ttcol>
      <c>Inspect</c>
      <c><spanx style="verb">GET</spanx></c>
      <c><spanx style="verb">/.well-known/aep</spanx></c>
      <c>Enroll</c>
      <c><spanx style="verb">POST</spanx></c>
      <c><spanx style="verb">enroll</spanx> relative to <spanx style="verb">endpoint_base</spanx></c>
      <c>Status</c>
      <c><spanx style="verb">GET</spanx></c>
      <c><spanx style="verb">status</spanx> relative to <spanx style="verb">endpoint_base</spanx></c>
      <c>Grant</c>
      <c><spanx style="verb">POST</spanx></c>
      <c><spanx style="verb">grant</spanx> relative to <spanx style="verb">endpoint_base</spanx></c>
      <c>Revoke</c>
      <c><spanx style="verb">POST</spanx></c>
      <c><spanx style="verb">revoke</spanx> relative to <spanx style="verb">endpoint_base</spanx></c>
</texttable>

<t>The <spanx style="verb">endpoint_base</spanx> value is published in the Inspect document under <spanx style="verb">http.endpoint_base</spanx>. If omitted, Agents <bcp14>MUST</bcp14> use <spanx style="verb">/aep/</spanx>. Agents construct command URLs by appending the command's relative path to <spanx style="verb">endpoint_base</spanx> with exactly one <spanx style="verb">/</spanx> separator, regardless of whether <spanx style="verb">endpoint_base</spanx> includes a trailing slash. For example, both <spanx style="verb">/aep</spanx> and <spanx style="verb">/aep/</spanx> produce <spanx style="verb">/aep/enroll</spanx> for Enroll.</t>

<t>Requests and successful responses that carry AEP JSON payloads use <spanx style="verb">application/aep+json</spanx>, which uses the <spanx style="verb">+json</spanx> structured syntax suffix <xref target="RFC6839"/>. Error responses use <spanx style="verb">application/problem+json</spanx>.</t>

<t>Authenticated commands carry a baseline client assertion as:</t>

<figure><sourcecode type="http-message"><![CDATA[
Authorization: AEP <jwt>
]]></sourcecode></figure>

<t>When a session credential is used on a command that allows it, the credential presentation form is defined by the concrete session-credential document.</t>

</section>
<section anchor="discovery-and-inspect"><name>Discovery and Inspect</name>

<t>The Inspect document is available at the well-known URI path defined for AEP <xref target="RFC8615"/>:</t>

<figure><sourcecode type="http-message"><![CDATA[
GET /.well-known/aep HTTP/1.1
Host: example.com
Accept: application/aep+json
]]></sourcecode></figure>

<t>The response body is a JSON object <xref target="RFC8259"/>. AEP-owned numeric protocol values are represented as JSON strings. Field names use <spanx style="verb">lower_snake_case</spanx>.</t>

<t>Claim names use dotted lowercase tokens:</t>

<figure><sourcecode type="abnf"><![CDATA[
claim-name = claim-token *("." claim-token)
claim-token = LCALPHA *(LCALPHA / DIGIT / "_")
LCALPHA = %x61-7A
]]></sourcecode></figure>

<t>The <spanx style="verb">LCALPHA</spanx> rule is defined here. The <spanx style="verb">DIGIT</spanx> rule is defined by RFC 5234 <xref target="RFC5234"/>.</t>

<t>The Inspect document shown here contains only the fields required for the HTTP binding, Inspect, Enroll, Grant, Revoke, Status, and an example identity method:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "aep_version": "1.0",
  "authentication": {
    "methods": ["aep-jwt", "oauth-bearer"]
  },
  "bindings": {
    "supported": ["http"]
  },
  "claims": {
    "optional": [],
    "preferred": [],
    "required": ["contact.email"]
  },
  "commands": {
    "grant_types": ["oauth-bearer"],
    "supported": ["enroll", "grant", "inspect", "revoke", "status"]
  },
  "core": {
    "signing_algorithms": ["EdDSA", "ES256"]
  },
  "extensions": {
    "supported": []
  },
  "http": {
    "endpoint_base": "/aep/",
    "openapi": {
      "path_matching": {"trailing_slash": "strict"},
      "url": "/openapi.json"
    }
  },
  "identity": {
    "methods": ["did:web"]
  },
  "service": {
    "did": "did:web:api.example.com"
  }
}
]]></sourcecode></figure>

<t><spanx style="verb">commands.supported</spanx> lists commands the Service exposes and <bcp14>MUST</bcp14> contain <spanx style="verb">inspect</spanx>. Agents <bcp14>MUST NOT</bcp14> invoke commands absent from this list. An Agent <bcp14>MUST</bcp14> ignore a syntactically valid command identifier it does not recognize.</t>

<t><spanx style="verb">bindings.supported</spanx> lists protocol bindings implemented by the Service and <bcp14>MUST</bcp14> contain <spanx style="verb">http</spanx> for an implementation of this document. An Agent <bcp14>MUST</bcp14> ignore a syntactically valid binding identifier it does not recognize.</t>

<t><spanx style="verb">commands.grant_types</spanx> lists concrete session-credential formats the Service can issue and revoke. If this array is empty or absent, the Service <bcp14>MUST NOT</bcp14> list <spanx style="verb">grant</spanx> or <spanx style="verb">revoke</spanx> in <spanx style="verb">commands.supported</spanx>.</t>

<t><spanx style="verb">commands.grant_types_config</spanx> contains optional configuration for advertised Grant Types. Each member name <bcp14>MUST</bcp14> also appear in <spanx style="verb">commands.grant_types</spanx>. The common <spanx style="verb">supports_per_credential_revoke</spanx> member is a string boolean. If it is absent or <spanx style="verb">"false"</spanx>, an Agent <bcp14>MUST</bcp14> use grant-type or all-grant-types Revoke. If it is <spanx style="verb">"true"</spanx>, the Service <bcp14>MUST</bcp14> accept a Revoke request containing both that <spanx style="verb">grant_type</spanx> and a <spanx style="verb">credential_id</spanx>, and an Agent <bcp14>MAY</bcp14> use that targeted form. Concrete session-credential documents <bcp14>MAY</bcp14> define additional members.</t>

<t><spanx style="verb">authentication.methods</spanx> lists, in preference order, the authentication methods accepted by protected resources belonging to the Service. <spanx style="verb">aep-jwt</spanx> identifies an AEP client assertion with <spanx style="verb">op</spanx> equal to <spanx style="verb">authenticate</spanx>. Other values <bcp14>MUST</bcp14> be registered Grant Type wire identifiers and use that grant type's credential presentation rules. The field is <bcp14>OPTIONAL</bcp14>; if it is absent, the Service advertises no protected-resource authentication method. When present, it <bcp14>MUST</bcp14> contain between one and sixteen values with no duplicates. An absent or empty <spanx style="verb">commands.grant_types</spanx> array does not imply support for <spanx style="verb">aep-jwt</spanx> or any other method. <spanx style="verb">authenticate</spanx> <bcp14>MUST NOT</bcp14> appear in <spanx style="verb">commands.supported</spanx> because it is an assertion operation, not a Service command endpoint.</t>

<t>The protected-resource methods in <spanx style="verb">authentication.methods</spanx> are distinct from authentication of AEP command endpoints. Advertising or omitting <spanx style="verb">aep-jwt</spanx> in this array does not alter the requirement that every authenticated AEP command accept its operation-bound baseline client assertion.</t>

<t><spanx style="verb">identity.methods</spanx> lists identity method identifiers the Service accepts for authenticated AEP commands. The values are lower-case identifiers registered in the AEP Identity Methods registry. A Service that advertises Enroll, Grant, Revoke, or Status <bcp14>MUST</bcp14> advertise at least one identity method.</t>

<t><spanx style="verb">service.did</spanx> identifies the Service. Agents use this value as the <spanx style="verb">aud</spanx> claim in client assertion JWTs.</t>

<t>When <spanx style="verb">service.did</spanx> uses the <spanx style="verb">did:web</spanx> method <xref target="DID-WEB"/>, the HTTPS origin encoded by the DID <bcp14>MUST</bcp14> equal the origin of the final Inspect response URL. DID path components do not alter the encoded origin. Agents <bcp14>MUST</bcp14> reject a mismatch before provisioning an Agent identity, requesting a client assertion, or transmitting credentials. Agents <bcp14>SHOULD</bcp14> expose <spanx style="verb">service_identity_mismatch</spanx> as the local failure identifier; this is not an HTTP Problem Details response from the Service. This requirement applies regardless of whether the Service appears in a directory. Other Service DID methods <bcp14>MUST</bcp14> define an equivalent origin-control binding before Agents rely on them. An Agent that does not implement that binding <bcp14>MUST</bcp14> reject the Inspect document.</t>

<t>Services <bcp14>SHOULD</bcp14> send HTTP cache metadata, including <spanx style="verb">Cache-Control</spanx> and <spanx style="verb">ETag</spanx>, on Inspect responses. A default freshness lifetime of 300 seconds is <bcp14>RECOMMENDED</bcp14> when the Service does not need a shorter policy window.</t>

<t>Agents <bcp14>MUST</bcp14> honor usable HTTP caching metadata on Inspect, including <spanx style="verb">Cache-Control</spanx>, <spanx style="verb">ETag</spanx>, and <spanx style="verb">Last-Modified</spanx>, and <bcp14>MUST</bcp14> process successful conditional revalidation through <spanx style="verb">304 Not Modified</spanx>. <spanx style="verb">no-cache</spanx> requires revalidation before reuse. <spanx style="verb">no-store</spanx> prohibits persistent or transient reuse beyond the current fetch. When no shorter usable freshness policy is supplied, Agents <bcp14>SHOULD</bcp14> use 300 seconds. The cache key is the requested advertised URL and <bcp14>MUST</bcp14> be updated to the final URL after an accepted redirect so revalidation targets the representation that produced the cached document.</t>

<t>Agents <bcp14>MUST</bcp14> require the media-type essence of a successful Inspect response to be <spanx style="verb">application/aep+json</spanx>. Comparison is case-insensitive and ignores valid media-type parameters. A missing, malformed, or different media type <bcp14>MUST</bcp14> be rejected.</t>

<t>An Agent following an Inspect redirect <bcp14>MUST</bcp14> require each redirect target to have the same scheme, host, and effective port as the preceding request URL. Cross-origin redirects and scheme downgrades <bcp14>MUST</bcp14> be rejected. This restriction applies to the unauthenticated Inspect command and does not prevent a future extension from defining a signed Inspect response.</t>

<t>Agents <bcp14>MAY</bcp14> enforce documented bounds on the decoded response size and total completion time. An Agent that enforces such bounds <bcp14>MUST</bcp14> fail closed when a bound is exceeded and <bcp14>MUST NOT</bcp14> process a partial Inspect document.</t>

<section anchor="openapi-advertisement"><name>OpenAPI Advertisement</name>

<t><spanx style="verb">http.openapi</spanx>, when present, advertises an OpenAPI 3.1 document for protected Service resources. It contains required <spanx style="verb">url</spanx> and <spanx style="verb">path_matching.trailing_slash</spanx> fields. <spanx style="verb">url</spanx> is a URI-reference. A relative reference resolves against the final Inspect response URL. An absolute HTTPS URL <bcp14>MAY</bcp14> be cross-origin. Plaintext HTTP is prohibited except when the URL host is syntactically exactly <spanx style="verb">localhost</spanx>, <spanx style="verb">127.0.0.1</spanx>, or <spanx style="verb">[::1]</spanx> for development; resolving another name to a loopback address does not qualify. User-information components and HTTPS-to-HTTP downgrade are prohibited.</t>

<t><spanx style="verb">path_matching.trailing_slash</spanx> is <spanx style="verb">strict</spanx> or <spanx style="verb">equivalent</spanx>. Under <spanx style="verb">strict</spanx>, paths that differ by a terminal slash are distinct. Under <spanx style="verb">equivalent</spanx>, exactly one terminal slash is ignored except for <spanx style="verb">/</spanx>. The canonical behavior when processing older compatible cached data that lacks this member is <spanx style="verb">strict</spanx>; new documents using <spanx style="verb">http.openapi</spanx> <bcp14>MUST</bcp14> include it.</t>

<t>OpenAPI retrieval is anonymous. An Agent <bcp14>MUST NOT</bcp14> send resource credentials, AEP assertions, Platform credentials, cookies, caller authorization headers, or other headers copied from the triggering request. Agents <bcp14>MUST</bcp14> enforce documented redirect-count, decoded-byte, and total-completion-time bounds. Redirects <bcp14>MUST NOT</bcp14> downgrade transport or introduce user information. A cross-origin HTTPS redirect remains anonymous and is permitted within the bound.</t>

<t>Agents <bcp14>MUST</bcp14> accept OpenAPI 3.1 JSON represented as <spanx style="verb">application/vnd.oai.openapi+json</spanx> with a <spanx style="verb">version=3.1</spanx> parameter or as <spanx style="verb">application/json</spanx>. Media-type comparison is case-insensitive and permits unrelated valid parameters. Agents <bcp14>MUST</bcp14> reject missing, malformed, or other media types, non-JSON bodies, documents whose <spanx style="verb">openapi</spanx> version is not <spanx style="verb">3.1.x</spanx>, and partial or over-bound documents.</t>

</section>
<section anchor="openapi-security-mapping"><name>OpenAPI Security Mapping</name>

<t>Agents use standard OpenAPI root and operation <spanx style="verb">security</spanx> inheritance and <spanx style="verb">components.securitySchemes</spanx>. An operation-level <spanx style="verb">security</spanx> replaces the root value. An empty security array makes the operation public. An empty requirement object permits anonymous access as one alternative. Multiple requirement objects are alternatives; multiple schemes within one requirement are a compound requirement and all must be satisfied.</t>

<t>The <spanx style="verb">x-aep-authentication-method</spanx> Security Scheme Object extension binds an arbitrary OpenAPI security-scheme name to <spanx style="verb">aep-jwt</spanx> or a registered AEP Grant Type wire identifier. Its value is one registered authentication method identifier. A referenced scheme without this extension is not an AEP method. An Agent <bcp14>MUST</bcp14> treat a compound requirement as unsupported when it cannot satisfy every member and <bcp14>MAY</bcp14> select another complete alternative. It <bcp14>MUST NOT</bcp14> silently reduce a compound requirement to one scheme.</t>

<t>To select an operation, Agents uppercase the concrete HTTP method and match the request path using OpenAPI path-template rules. Literal path segments take precedence over templated segments. Query parameters never select an operation. Under <spanx style="verb">strict</spanx>, terminal slash variants differ. Under <spanx style="verb">equivalent</spanx>, one terminal slash is ignored except for <spanx style="verb">/</spanx>. Multiple equally applicable templates, structurally equivalent templates with different variable names, or another ambiguous match are contradictions.</t>

<t>A fresh, definitive operation match <bcp14>MAY</bcp14> be used to plan authentication without first probing the protected resource. An undocumented operation, unsupported or ambiguous mapping, stale document, or contradiction between OpenAPI and a live response requires fallback to anonymous live challenge discovery and document revalidation. OpenAPI never authorizes a request and never permits credentials to bypass the redirect-safety rules.</t>

</section>
</section>
<section anchor="identity-methods"><name>Identity Methods</name>

<t>Authenticated AEP commands require an Agent identity method that can bind a stable Agent identifier to verification material for the client assertion signature.</t>

<t>This document defines the identity-method substrate but does not define a concrete identity method. Concrete identity method documents define:</t>

<t><list style="numbers" type="1">
  <t>The identity method identifier used in <spanx style="verb">identity.methods</spanx>.</t>
  <t>The Agent identifier syntax.</t>
  <t>How a Service resolves or otherwise obtains verification material for the Agent identifier.</t>
  <t>How the JWT <spanx style="verb">kid</spanx> header identifies the verification method.</t>
  <t>Any caching, rotation, revocation, or trust-anchor requirements.</t>
  <t>Security and privacy considerations specific to that identity method.</t>
</list></t>

<t>A Service enables the identity methods it accepts and advertises only those identifiers in <spanx style="verb">identity.methods</spanx>. A Service that advertises no identity methods <bcp14>MUST NOT</bcp14> advertise authenticated commands.</t>

<t>For example, a Service that enables the separately specified <spanx style="verb">did:web</spanx> identity method advertises:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "identity": {
    "methods": ["did:web"]
  }
}
]]></sourcecode></figure>

<t>If the Agent presents an identity method not listed in the Service's <spanx style="verb">identity.methods</spanx> array, the Service <bcp14>MUST</bcp14> reject the request as <spanx style="verb">not_recognized</spanx>.</t>

</section>
<section anchor="aep-http-authentication-scheme"><name>AEP HTTP Authentication Scheme</name>

<t>The AEP HTTP authentication scheme uses the <spanx style="verb">AEP</spanx> auth-scheme value. The rules <spanx style="verb">ALPHA</spanx>, <spanx style="verb">DIGIT</spanx>, <spanx style="verb">DQUOTE</spanx>, and <spanx style="verb">SP</spanx> are defined by RFC 5234 <xref target="RFC5234"/>. The rules <spanx style="verb">auth-param</spanx>, <spanx style="verb">BWS</spanx>, and <spanx style="verb">OWS</spanx> are defined by HTTP semantics <xref target="RFC9110"/>.</t>

<figure><sourcecode type="abnf"><![CDATA[
AEP-credentials = "AEP" 1*SP compact-jws
compact-jws     = base64url "." base64url "." base64url
base64url       = 1*( ALPHA / DIGIT / "-" / "_" )

AEP-challenge        = "AEP" [ 1*SP AEP-challenge-param
                       *( OWS "," OWS AEP-challenge-param ) ]
AEP-challenge-param  = reason-param / service-param /
                       inspect-param / auth-param
reason-param         = "reason" BWS "=" BWS DQUOTE error-code DQUOTE
service-param        = "service_did" BWS "=" BWS
                       DQUOTE did-value DQUOTE
inspect-param        = "inspect" BWS "=" BWS
                       DQUOTE absolute-uri DQUOTE
did-value            = 1*(%x21 / %x23-5B / %x5D-7E)
absolute-uri         = 1*(%x21 / %x23-5B / %x5D-7E)
error-code           = lc-token *( "_" lc-token )
lc-token             = LCALPHA *( LCALPHA / DIGIT )
]]></sourcecode></figure>

<t>The <spanx style="verb">AEP-credentials</spanx> form is used in the <spanx style="verb">Authorization</spanx> field on command endpoints and in either <spanx style="verb">Authorization</spanx> or <spanx style="verb">AEP-Authorization</spanx> on protected resources. The <spanx style="verb">AEP-challenge</spanx> form is used in the <spanx style="verb">WWW-Authenticate</spanx> field. Parameter and field names are case-insensitive and each parameter <bcp14>MUST</bcp14> occur at most once. The <spanx style="verb">reason</spanx> parameter carries an AEP error code. A protected resource advertising AEP support <bcp14>MUST</bcp14> include <spanx style="verb">service_did</spanx> and <spanx style="verb">inspect</spanx>; <spanx style="verb">service_did</spanx> identifies the Service and <spanx style="verb">inspect</spanx> is the absolute HTTPS URI of that Service's Inspect document. Agents <bcp14>MUST</bcp14> require the challenged Service DID to match the fetched Inspect document. Challenges without the <spanx style="verb">AEP</spanx> scheme, or without both discovery parameters, do not initiate AEP discovery.</t>

</section>
<section anchor="client-assertion-jwt"><name>Client Assertion JWT</name>

<t>Enroll, Grant, Revoke, and Status use a signed client assertion JWT. Inspect is unauthenticated and does not use a client assertion. Protected resources use only the methods advertised in <spanx style="verb">authentication.methods</spanx>; <spanx style="verb">aep-jwt</spanx> selects the client assertion defined in this section with <spanx style="verb">op</spanx> equal to <spanx style="verb">authenticate</spanx>.</t>

<t>The client assertion JWT is carried as:</t>

<figure><sourcecode type="http-message"><![CDATA[
Authorization: AEP <jwt>
]]></sourcecode></figure>

<t>The JWT is a JWS compact serialization <xref target="RFC7515"/> consisting of a JOSE header, JWT claims set <xref target="RFC7519"/>, and signature.</t>

<t>The JOSE header <bcp14>MUST</bcp14> contain:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "alg": "EdDSA",
  "typ": "JWT",
  "kid": "did:web:agent.example.com:agents:123#key-1"
}
]]></sourcecode></figure>

<t><spanx style="verb">alg</spanx> identifies the signing algorithm. Services supporting this document <bcp14>MUST</bcp14> support <spanx style="verb">EdDSA</spanx> <xref target="RFC8037"/> and <spanx style="verb">ES256</spanx> <xref target="RFC7518"/> and advertise accepted algorithms in <spanx style="verb">core.signing_algorithms</spanx>. Agents <bcp14>MUST</bcp14> select an algorithm advertised by the Service. The <spanx style="verb">none</spanx> algorithm and symmetric JOSE algorithms <bcp14>MUST NOT</bcp14> be used for Agent identity assertions.</t>

<t><spanx style="verb">typ</spanx> <bcp14>MUST</bcp14> be <spanx style="verb">JWT</spanx>.</t>

<t><spanx style="verb">kid</spanx> identifies the Agent's DID and <bcp14>MAY</bcp14> include a fragment selecting a verification method in the resolved DID document. The DID portion of <spanx style="verb">kid</spanx> <bcp14>MUST</bcp14> equal the Agent DID carried in <spanx style="verb">iss</spanx> and <spanx style="verb">sub</spanx>.</t>

<t>The JWT claims set <bcp14>MUST</bcp14> contain:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "iss": "did:web:agent.example.com:agents:123",
  "sub": "did:web:agent.example.com:agents:123",
  "aud": "did:web:api.example.com",
  "op": "enroll",
  "iat": 1748428800,
  "exp": 1748428860,
  "jti": "9f8a4d2e-1c3b-4f5e-8b7a-000000000000"
}
]]></sourcecode></figure>

<t><spanx style="verb">iss</spanx> and <spanx style="verb">sub</spanx> <bcp14>MUST</bcp14> both equal the Agent DID.</t>

<t><spanx style="verb">aud</spanx> <bcp14>MUST</bcp14> equal the Service DID advertised as <spanx style="verb">service.did</spanx> in the Inspect document.</t>

<t><spanx style="verb">op</spanx> <bcp14>MUST</bcp14> equal the operation being invoked. The values defined by this document are <spanx style="verb">enroll</spanx>, <spanx style="verb">grant</spanx>, <spanx style="verb">revoke</spanx>, <spanx style="verb">status</spanx>, and <spanx style="verb">authenticate</spanx>. The four command operations are valid only at their corresponding AEP command endpoint. <spanx style="verb">authenticate</spanx> is valid only at a protected resource and is never valid at an AEP command endpoint.</t>

<t>An assertion with <spanx style="verb">op</spanx> equal to <spanx style="verb">authenticate</spanx> <bcp14>MUST</bcp14> also contain <spanx style="verb">resource</spanx>, an absolute HTTPS URI identifying the protected resource target. The value <bcp14>MUST</bcp14> equal the request target URI after URI normalization that does not change resource identity; fragments are prohibited. A protected resource <bcp14>MUST</bcp14> reject an assertion whose <spanx style="verb">resource</spanx> does not identify that target. Redirect targets require a newly issued assertion when the normalized resource URI changes.</t>

<t><spanx style="verb">iat</spanx> and <spanx style="verb">exp</spanx> are NumericDate values as defined by JWT <xref target="RFC7519"/>: seconds since the Unix epoch represented as JSON numbers. These claims are an exception to AEP-owned JSON payload numeric-string encoding. Services <bcp14>MUST</bcp14> reject assertions where <spanx style="verb">exp - iat</spanx> is greater than 300 seconds. Services <bcp14>SHOULD</bcp14> allow no more than 30 seconds of local clock skew.</t>

<t><spanx style="verb">jti</spanx> <bcp14>MUST</bcp14> be freshly generated for each assertion. Services <bcp14>MUST</bcp14> maintain a replay cache keyed by at least <spanx style="verb">(sub, jti)</spanx> for the assertion lifetime plus the accepted clock-skew window.</t>

<t>To verify a client assertion, the Service <bcp14>MUST</bcp14>:</t>

<t><list style="numbers" type="1">
  <t>Parse the JWT header, claims set, and signature.</t>
  <t>Reject the assertion if <spanx style="verb">alg</spanx> is not advertised by the Service or is prohibited by this document.</t>
  <t>Resolve the DID identified by <spanx style="verb">kid</spanx>.</t>
  <t>Select the referenced verification method.</t>
  <t>Verify the JWS signature.</t>
  <t>Verify <spanx style="verb">iss</spanx>, <spanx style="verb">sub</spanx>, <spanx style="verb">aud</spanx>, <spanx style="verb">op</spanx>, <spanx style="verb">resource</spanx> when required, <spanx style="verb">iat</spanx>, <spanx style="verb">exp</spanx>, and <spanx style="verb">jti</spanx> according to this section.</t>
</list></t>

<t>Any verification failure <bcp14>MUST</bcp14> use the common <spanx style="verb">not_recognized</spanx> error defined in this document's error handling section.</t>

</section>
<section anchor="the-inspect-command"><name>The Inspect Command</name>

<t>Inspect is the unauthenticated discovery command. An Agent invokes Inspect by fetching the Service's well-known AEP document:</t>

<figure><sourcecode type="http-message"><![CDATA[
GET /.well-known/aep HTTP/1.1
Host: example.com
Accept: application/aep+json
]]></sourcecode></figure>

<t>The Service returns <spanx style="verb">200 OK</spanx> with an <spanx style="verb">application/aep+json</spanx> body containing the Inspect document described in this document. Inspect has no request body and no client assertion.</t>

<t>Agents <bcp14>SHOULD</bcp14> cache Inspect documents according to the Service's HTTP cache metadata. Agents <bcp14>MUST</bcp14> re-fetch the Inspect document before invoking a command if the cached document has expired.</t>

</section>
<section anchor="the-enroll-command"><name>The Enroll Command</name>

<t>Enroll registers an Agent DID with a Service. The request uses the baseline client assertion with <spanx style="verb">op</spanx> equal to <spanx style="verb">enroll</spanx>.</t>

<t>Endpoint:</t>

<figure><sourcecode type="http-message"><![CDATA[
POST /aep/enroll HTTP/1.1
Host: example.com
Content-Type: application/aep+json
Authorization: AEP <jwt>
Idempotency-Key: <opaque>
]]></sourcecode></figure>

<t>Request body:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "agent_did": "did:web:agent.example.com:agents:123",
  "claims": {
    "contact.email": "ops@example.com"
  },
  "idempotency_key": "9f8a4d2e-1c3b-4f5e-8b7a-000000000000"
}
]]></sourcecode></figure>

<t><spanx style="verb">agent_did</spanx> <bcp14>MUST</bcp14> equal the Agent DID in the client assertion <spanx style="verb">iss</spanx>, <spanx style="verb">sub</spanx>, and <spanx style="verb">kid</spanx> values, ignoring any <spanx style="verb">kid</spanx> fragment. The DID method <bcp14>MUST</bcp14> be accepted by the Service's <spanx style="verb">identity.methods</spanx> advertisement.</t>

<t><spanx style="verb">claims</spanx> carries claim values requested by the Service's Inspect document. Claim names are strings and claim values are JSON values. Interoperable names and value shapes for common person and contact claims are defined by <xref target="AEP-CLAIMS"/>. Services <bcp14>MUST</bcp14> ignore unknown claims unless local policy requires rejection.</t>

<t><spanx style="verb">idempotency_key</spanx> is an opaque retry key. When both the HTTP <spanx style="verb">Idempotency-Key</spanx> header and body field are present, they <bcp14>MUST</bcp14> contain the same value.</t>

<t>When the authenticated Agent DID already has an enrollment record, the Service
<bcp14>MAY</bcp14> evaluate supplied claims and supported extension inputs to satisfy current
enrollment requirements. It <bcp14>MAY</bcp14> instead return the current enrollment
lifecycle representation unchanged. An Agent <bcp14>MUST NOT</bcp14> suppress an explicitly
requested Enroll solely because Status reports an existing enrollment.</t>

<t>A repeated Enroll <bcp14>MUST</bcp14> preserve the Agent DID, Service-local enrollment
identifier, and original creation time. It <bcp14>MUST NOT</bcp14> implicitly replace the
enrollment, reset unrelated lifecycle state, or reactivate a suspended or
terminated identity. A Service <bcp14>MUST</bcp14> preserve existing claim values that the
request does not update; omission is not a deletion instruction. Supplied
values remain subject to Service validation and verification policy. The
Service <bcp14>MUST NOT</bcp14> reset lifecycle timestamps unless the corresponding state
actually changes. Issued credentials remain valid unless the Service
explicitly revokes them under its credential policy.</t>

<t>These rules apply to a new explicit Enroll using a new idempotency key.
Retrying the same request with the same key follows the Idempotency section
and <bcp14>MUST NOT</bcp14> independently repeat policy effects or requirement updates.</t>

<t>The Enroll response <spanx style="verb">status</spanx> uses the complete lifecycle vocabulary defined by
the Status command. A Service returns <spanx style="verb">active</spanx>, <spanx style="verb">pending</spanx>, or <spanx style="verb">rejected</spanx> for an
initial enrollment decision. When returning an existing enrollment record, it
can also return <spanx style="verb">unavailable</spanx>, <spanx style="verb">suspended</spanx>, or <spanx style="verb">terminated</spanx>. Each of these is a
successful lifecycle representation returned with <spanx style="verb">200 OK</spanx>; an error response
for an operation blocked by the current lifecycle state is distinct from
reporting that state.</t>

<t>Successful Enroll responses use <spanx style="verb">200 OK</spanx>. A synchronous enrollment returns:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "status": "active"
}
]]></sourcecode></figure>

<t>If enrollment requires asynchronous verification, the Service returns:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "owner_action_required": "true",
  "status": "pending",
  "verification_pending": ["contact.email"]
}
]]></sourcecode></figure>

<t>The Agent polls Status to learn whether a pending enrollment has become <spanx style="verb">active</spanx> or <spanx style="verb">rejected</spanx>.</t>

<t>Enroll and Status lifecycle responses have two distinct optional dimensions. <spanx style="verb">verification_pending</spanx> lists submitted claim names whose asynchronous verification has not completed. <spanx style="verb">requirements_pending</spanx> lists requirement names the Agent still needs to satisfy. Either field can appear on either response, and the fields <bcp14>MUST NOT</bcp14> be treated as aliases. Empty arrays <bcp14>MUST</bcp14> be omitted; absence means that the corresponding set is empty. Claim values <bcp14>MUST NOT</bcp14> appear in either array.</t>

<t><spanx style="verb">owner_action_required</spanx> is independent of both pending dimensions and can accompany either, both, or neither. Canonical serialization <bcp14>MUST</bcp14> omit <spanx style="verb">owner_action_required</spanx> unless its value is <spanx style="verb">"true"</spanx>. Consumers <bcp14>MUST</bcp14> accept an explicit <spanx style="verb">"false"</spanx> for compatibility.</t>

</section>
<section anchor="the-status-command"><name>The Status Command</name>

<t>Status returns the Service's current state for the authenticated Agent identity. The request uses the baseline client assertion with <spanx style="verb">op</spanx> equal to <spanx style="verb">status</spanx>, or a session credential when a concrete session-credential document allows it.</t>

<t>Endpoint:</t>

<figure><sourcecode type="http-message"><![CDATA[
GET /aep/status HTTP/1.1
Host: example.com
Authorization: AEP <jwt>
]]></sourcecode></figure>

<t>Status has no request body.</t>

<t>Successful Status responses use <spanx style="verb">200 OK</spanx>:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "since": "2026-05-28T12:00:00Z",
  "status": "active"
}
]]></sourcecode></figure>

<t><spanx style="verb">status</spanx> describes the Agent identity's state at the Service:</t>

<texttable>
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <c><spanx style="verb">active</spanx></c>
      <c>The identity is enrolled and operational.</c>
      <c><spanx style="verb">pending</spanx></c>
      <c>Enrollment is awaiting asynchronous verification.</c>
      <c><spanx style="verb">unavailable</spanx></c>
      <c>The identity is temporarily unavailable for Service-defined non-punitive reasons.</c>
      <c><spanx style="verb">suspended</spanx></c>
      <c>The identity is temporarily disabled by Service action.</c>
      <c><spanx style="verb">terminated</spanx></c>
      <c>The identity is permanently de-registered.</c>
      <c><spanx style="verb">rejected</spanx></c>
      <c>Asynchronous verification failed.</c>
</texttable>

<t><spanx style="verb">since</spanx> is the RFC 3339 <xref target="RFC3339"/> timestamp of the last state transition.</t>

<t>The lifecycle fields defined for Enroll apply identically to Status. <spanx style="verb">owner_action_required</spanx> equal to <spanx style="verb">"true"</spanx> indicates that the Agent's Owner must complete an out-of-band action before the identity can become or remain active.</t>

</section>
<section anchor="the-grant-command"><name>The Grant Command</name>

<t>Grant exchanges a baseline client assertion for a session credential. The request uses the baseline client assertion with <spanx style="verb">op</spanx> equal to <spanx style="verb">grant</spanx>. A session credential <bcp14>MUST NOT</bcp14> be used to authenticate Grant.</t>

<t>Grant requires an existing enrollment recognized by the Service. When current enrollment is not already authoritative, an Agent <bcp14>SHOULD</bcp14> call Status before beginning an approval, signing, or credential-issuance workflow. The Service remains authoritative and <bcp14>MUST</bcp14> reject Grant for an unrecognized Agent with <spanx style="verb">not_recognized</spanx>; it <bcp14>MUST NOT</bcp14> implicitly enroll the Agent.</t>

<t>A Service <bcp14>MAY</bcp14> reject Grant for a recognized enrollment with
<spanx style="verb">requirements_unmet</spanx> when claims or supported extension requirements need to
be satisfied through Enroll. An active Status is not a guarantee that every
Grant requirement is satisfied. Agents <bcp14>MUST</bcp14> surface the Service's unmet
requirements and identify Enroll as the next action when those requirements
are enrollment requirements. The error does not authorize automatic Enroll
or a later automatic retry of Grant. The caller decides when to invoke each
command.</t>

<t>Endpoint:</t>

<figure><sourcecode type="http-message"><![CDATA[
POST /aep/grant HTTP/1.1
Host: example.com
Content-Type: application/aep+json
Authorization: AEP <jwt>
Idempotency-Key: <opaque>
]]></sourcecode></figure>

<t>Request body:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "grant_type": "oauth-bearer"
}
]]></sourcecode></figure>

<t><spanx style="verb">grant_type</spanx> <bcp14>MUST</bcp14> be one of the values advertised in <spanx style="verb">commands.grant_types</spanx>. Concrete session-credential documents <bcp14>MAY</bcp14> define additional request fields.</t>

<t>The successful response body is defined by the concrete session-credential document. This core document requires only that the response be a JSON object and that the selected document define credential presentation, expiry semantics, and revocation behavior. A successful response <bcp14>MUST</bcp14> contain the usable credential material required by that document and a stable Service-issued <spanx style="verb">credential_id</spanx>. The identifier identifies the issued credential for management and storage; it is not credential material and is not presented to a protected resource unless the concrete document explicitly defines that behavior.</t>

<t>A <spanx style="verb">credential_id</spanx> <bcp14>MUST</bcp14> be unique among all credentials issued by the Service, across Agents and Grant Types, and the Service <bcp14>MUST NOT</bcp14> reassign it. Its logical identity is the pair of the Service DID and <spanx style="verb">credential_id</spanx>. The identifier is opaque to Agents; this document does not require a particular identifier format.</t>

</section>
<section anchor="the-revoke-command"><name>The Revoke Command</name>

<t>Revoke invalidates session credentials previously issued by Grant. The request uses the baseline client assertion with <spanx style="verb">op</spanx> equal to <spanx style="verb">revoke</spanx>. A session credential <bcp14>MUST NOT</bcp14> be used to authenticate Revoke.</t>

<t>Endpoint:</t>

<figure><sourcecode type="http-message"><![CDATA[
POST /aep/revoke HTTP/1.1
Host: example.com
Content-Type: application/aep+json
Authorization: AEP <jwt>
Idempotency-Key: <opaque>
]]></sourcecode></figure>

<t>Request body:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "grant_type": "oauth-bearer"
}
]]></sourcecode></figure>

<t><spanx style="verb">grant_type</spanx> <bcp14>MUST</bcp14> be one of the values advertised in <spanx style="verb">commands.grant_types</spanx>. By default, Revoke targets all credentials of that grant type issued to the authenticated Agent. A request containing both <spanx style="verb">grant_type</spanx> and <spanx style="verb">credential_id</spanx> targets the single issued credential identified by <spanx style="verb">credential_id</spanx>. An Agent <bcp14>MUST</bcp14> send that form only when the Service configuration for the selected grant type advertises per-credential Revoke. A Service advertising per-credential Revoke <bcp14>MUST</bcp14> support that form. Concrete session-credential documents define any additional requirements for narrower credential targeting.</t>

<t>To revoke all session credentials of every grant type issued to the authenticated Agent, the request body is:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "all_grant_types": "true"
}
]]></sourcecode></figure>

<t><spanx style="verb">all_grant_types</spanx> is a string boolean. When <spanx style="verb">all_grant_types</spanx> is <spanx style="verb">"true"</spanx>, the request <bcp14>MUST NOT</bcp14> contain <spanx style="verb">grant_type</spanx> or <spanx style="verb">credential_id</spanx>. A Service that supports Revoke <bcp14>MUST</bcp14> support <spanx style="verb">all_grant_types</spanx> so an Agent can invalidate all issued session credentials without discovering or iterating over every concrete grant type. A malformed Revoke request, including a request with mutually exclusive fields, fails with <spanx style="verb">invalid_request</spanx>.</t>

<t>Successful Revoke responses use <spanx style="verb">200 OK</spanx> and an empty JSON object:</t>

<figure><sourcecode type="json"><![CDATA[
{}
]]></sourcecode></figure>

<t>The Service <bcp14>MUST</bcp14> return success regardless of whether any matching credentials existed.</t>

</section>
<section anchor="protected-resource-authentication"><name>Protected-Resource Authentication</name>

<t><spanx style="verb">authenticate</spanx> authenticates an Agent to an arbitrary protected Service resource; it does not identify a Service command and defines no new command endpoint. An Agent using <spanx style="verb">aep-jwt</spanx> sends an <spanx style="verb">AEP &lt;jwt&gt;</spanx> field value with <spanx style="verb">op</spanx> equal to <spanx style="verb">authenticate</spanx>, <spanx style="verb">aud</spanx> equal to the Service DID, and <spanx style="verb">resource</spanx> equal to the protected request target. A protected resource <bcp14>MUST</bcp14> reject assertions carrying <spanx style="verb">enroll</spanx>, <spanx style="verb">grant</spanx>, <spanx style="verb">revoke</spanx>, or <spanx style="verb">status</spanx>. Each AEP command endpoint likewise <bcp14>MUST</bcp14> reject <spanx style="verb">authenticate</spanx> and every non-matching command operation.</t>

<t>Protected resources accept AEP credentials in either the standard <spanx style="verb">Authorization</spanx> field or the dedicated <spanx style="verb">AEP-Authorization</spanx> field. Generic Agents default to <spanx style="verb">Authorization</spanx> for compatibility. A caller <bcp14>MAY</bcp14> explicitly select <spanx style="verb">AEP-Authorization</spanx>; Agents composing AEP with MPP or x402 <bcp14>SHOULD</bcp14> select it before the first authenticated retry and preserve that selection for the operation, including newly issued assertions after safe redirects.</t>

<t>The dedicated field preserves the complete normal field value, including its authentication scheme:</t>

<figure><sourcecode type="http-message"><![CDATA[
AEP-Authorization: AEP <client-assertion>
AEP-Authorization: Bearer <token>
AEP-Authorization: Basic <credentials>
]]></sourcecode></figure>

<t>Services <bcp14>MUST</bcp14> accept both carriers for <spanx style="verb">aep-jwt</spanx> and every registered Grant Type whose normal presentation uses <spanx style="verb">Authorization</spanx>. Registered Grant Type specifications define that mapping. API-key credentials continue to use exactly the Service-selected <spanx style="verb">header</spanx> returned in the Grant response and have no second generic representation.</t>

<t>An Agent <bcp14>MUST</bcp14> use at most one AEP carrier per request. A Service inspects <spanx style="verb">AEP-Authorization</spanx> first and falls back to <spanx style="verb">Authorization</spanx> only when the dedicated field is absent. If both fields contain an AEP-recognized credential, the Service <bcp14>MUST</bcp14> reject the request as <spanx style="verb">not_recognized</spanx>; it <bcp14>MUST NOT</bcp14> choose one. An invalid dedicated credential fails closed without fallback to a second AEP credential in <spanx style="verb">Authorization</spanx>.</t>

<t><spanx style="verb">AEP-Authorization</spanx> together with <spanx style="verb">Authorization: Payment &lt;credentials&gt;</spanx> or <spanx style="verb">PAYMENT-SIGNATURE</spanx> is valid and non-ambiguous. After dedicated AEP authentication succeeds, the AEP layer <bcp14>MUST NOT</bcp14> consume, rewrite, log, or forward an unrelated <spanx style="verb">Authorization</spanx> credential. Payment processing occurs only after AEP authentication succeeds; the anonymous response remains the <spanx style="verb">401</spanx> AEP challenge.</t>

<t>Field-name comparison is case-insensitive. A request <bcp14>MUST NOT</bcp14> contain multiple <spanx style="verb">AEP-Authorization</spanx> field lines or a combined value encoding more than one AEP credential. Services <bcp14>MUST</bcp14> treat such ambiguity as credential smuggling and return the non-disclosing <spanx style="verb">not_recognized</spanx> Problem Details error.</t>

<t>Both authorization fields are sensitive. Agents, Services, intermediaries, caches, and telemetry <bcp14>MUST</bcp14> redact them and <bcp14>MUST NOT</bcp14> log raw values. Neither field participates in cache keys or idempotency fingerprints. <spanx style="verb">AEP-Authorization</spanx> <bcp14>MUST NOT</bcp14> be copied into assertion claims or signatures, Platform context, Inspect, OpenAPI, or another protocol document.</t>

<t>A protected resource that requires authentication returns <spanx style="verb">401 Unauthorized</spanx> with an AEP challenge:</t>

<figure><sourcecode type="http-message"><![CDATA[
WWW-Authenticate: AEP service_did="did:web:x",inspect="https://x/a"
]]></sourcecode></figure>

<t>An Agent <bcp14>MAY</bcp14> first send the exact requested method, URL, headers, and body without AEP credentials. It begins AEP discovery only when a <spanx style="verb">401</spanx> response contains a valid <spanx style="verb">AEP</spanx> challenge with <spanx style="verb">service_did</spanx> and <spanx style="verb">inspect</spanx>. Unrelated <spanx style="verb">401</spanx> responses <bcp14>MUST NOT</bcp14> trigger AEP authentication.</t>

<t>Before beginning discovery, approval, Grant, or authenticated retry, an Agent <bcp14>MUST</bcp14> determine whether the request body can be replayed. If it cannot reproduce the identical body, it <bcp14>MUST</bcp14> fail without starting an authentication flow. Implementations <bcp14>MAY</bcp14> apply documented cancellation, total-time, and response-size bounds and <bcp14>MUST</bcp14> fail closed rather than process partial authentication metadata.</t>

<t>An Agent <bcp14>MUST NOT</bcp14> forward an AEP assertion or session credential across an origin change. It <bcp14>MAY</bcp14> follow a same-origin redirect with the credential only when the redirected request remains authorized by the credential and, for <spanx style="verb">aep-jwt</spanx>, uses a newly issued assertion bound to the redirect target's <spanx style="verb">resource</spanx> in the same selected AEP carrier. For a cross-origin redirect, the Agent <bcp14>MUST</bcp14> remove <spanx style="verb">Authorization</spanx>, <spanx style="verb">AEP-Authorization</spanx>, <spanx style="verb">PAYMENT-SIGNATURE</spanx>, every AEP assertion, every AEP-issued session credential, and every payment credential, then restart at the target with an anonymous request. It <bcp14>MUST</bcp14> require a new valid AEP challenge before authenticating to the new origin. Redirect handling <bcp14>MUST NOT</bcp14> copy a Service-selected API-key header to another origin.</t>

<t>Successful authentication establishes an Agent principal and credential metadata, including the authentication method and granted scopes when applicable. It does not authorize the requested application action. The protected application separately evaluates resource policy and scopes. A valid credential with inadequate permission fails with <spanx style="verb">insufficient_scope</spanx> and <spanx style="verb">403 Forbidden</spanx>, without being treated as an authentication failure.</t>

<t>Missing credentials use <spanx style="verb">authentication_required</spanx>. A method not listed in <spanx style="verb">authentication.methods</spanx> uses <spanx style="verb">unsupported_authentication_method</spanx>. Malformed or expired credentials, wrong operation, wrong audience, wrong resource, and replayed assertions use the non-disclosing <spanx style="verb">not_recognized</spanx> error. Protected resources <bcp14>MUST</bcp14> consume <spanx style="verb">jti</spanx> atomically before accepting an <spanx style="verb">authenticate</spanx> assertion so concurrent replays cannot both succeed.</t>

</section>
<section anchor="idempotency"><name>Idempotency</name>

<t>POST commands are state-mutating and <bcp14>MUST</bcp14> support safe retry with a non-empty <spanx style="verb">Idempotency-Key</spanx> HTTP header. Agents <bcp14>MUST</bcp14> send this header and Services <bcp14>MUST</bcp14> reject Enroll, Grant, or Revoke requests that omit it or carry an empty value with <spanx style="verb">400 Bad Request</spanx> and <spanx style="verb">code</spanx> equal to <spanx style="verb">invalid_request</spanx>.</t>

<t>Services <bcp14>MUST</bcp14> cache the response associated with <spanx style="verb">(agent_did, Idempotency-Key)</spanx> for at least 1 hour. Each record <bcp14>MUST</bcp14> bind the command and a cryptographic hash of a canonical representation of the request body. If a request repeats the same key with the same authenticated Agent, command, and request body, the Service <bcp14>MUST</bcp14> return the cached response or an equivalent successful response.</t>

<t>If the same authenticated Agent reuses an idempotency key for a different command or request body, the Service <bcp14>MUST</bcp14> return <spanx style="verb">409 Conflict</spanx> with <spanx style="verb">code</spanx> equal to <spanx style="verb">idempotency_conflict</spanx>.</t>

<t>The Enroll request body <bcp14>MAY</bcp14> also contain <spanx style="verb">idempotency_key</spanx> for bindings or application frameworks that persist idempotency metadata with the body. When both forms are present, they <bcp14>MUST</bcp14> match.</t>

</section>
<section anchor="error-handling"><name>Error Handling</name>

<t>The HTTP binding uses RFC 9457 Problem Details <xref target="RFC9457"/> with an AEP <spanx style="verb">code</spanx> field.</t>

<figure><sourcecode type="http-message"><![CDATA[
HTTP/1.1 401 Unauthorized
Content-Type: application/problem+json
WWW-Authenticate: AEP reason="not_recognized"
]]></sourcecode></figure>

<figure><sourcecode type="json"><![CDATA[
{
  "code": "not_recognized",
  "status": 401,
  "title": "Not recognized",
  "type": "urn:aep:error:not_recognized"
}
]]></sourcecode></figure>

<t>The <spanx style="verb">code</spanx> field is the canonical machine-readable AEP error code. <spanx style="verb">type</spanx> <bcp14>MUST</bcp14> equal <spanx style="verb">urn:aep:error:&lt;code&gt;</spanx>, where <spanx style="verb">&lt;code&gt;</spanx> is the exact value of the <spanx style="verb">code</spanx> field. <spanx style="verb">title</spanx> <bcp14>MUST</bcp14> be a non-empty string containing a short, human-readable summary of the problem type.</t>

<t>After an identity has been recognized, a <spanx style="verb">verification_pending</spanx> Problem Details response <bcp14>MAY</bcp14> include a non-empty <spanx style="verb">verification_pending</spanx> array, and a <spanx style="verb">requirements_unmet</spanx> response <bcp14>MAY</bcp14> include a non-empty <spanx style="verb">requirements_pending</spanx> array. Either response <bcp14>MAY</bcp14> include <spanx style="verb">owner_action_required</spanx> only when its value is <spanx style="verb">"true"</spanx>. These fields contain names only and <bcp14>MUST NOT</bcp14> contain claim values. They describe why the attempted operation is blocked; pending Enroll and Status state continues to use successful lifecycle responses. A <spanx style="verb">not_recognized</spanx> response <bcp14>MUST NOT</bcp14> include any of these fields.</t>

<t>This document defines the following HTTP error codes:</t>

<texttable>
      <ttcol align='left'>AEP code</ttcol>
      <ttcol align='right'>HTTP status</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <c><spanx style="verb">enrollment_failed</spanx></c>
      <c>400</c>
      <c>Generic enrollment failure where the Service suppresses precise detail.</c>
      <c><spanx style="verb">invalid_request</spanx></c>
      <c>400</c>
      <c>The request body, parameters, or field combination is malformed or invalid.</c>
      <c><spanx style="verb">not_recognized</spanx></c>
      <c>401</c>
      <c>Umbrella anti-enumeration error for failed identity, signature, audience, operation, replay, time-window, archived-identity, or unsupported-method checks.</c>
      <c><spanx style="verb">identity_suspended</spanx></c>
      <c>403</c>
      <c>The recognized identity is temporarily disabled by Service action.</c>
      <c><spanx style="verb">identity_terminated</spanx></c>
      <c>403</c>
      <c>The recognized identity is permanently de-registered.</c>
      <c><spanx style="verb">identity_unavailable</spanx></c>
      <c>403</c>
      <c>The recognized identity is temporarily unavailable for Service-defined reasons.</c>
      <c><spanx style="verb">requirements_unmet</spanx></c>
      <c>422</c>
      <c>Required claims or supported extension requirements are missing or invalid.</c>
      <c><spanx style="verb">verification_pending</spanx></c>
      <c>403</c>
      <c>Enrollment or required verification has not completed.</c>
      <c><spanx style="verb">verification_timeout</spanx></c>
      <c>422</c>
      <c>Required asynchronous verification did not complete in the Service's policy window.</c>
      <c><spanx style="verb">rate_limited</spanx></c>
      <c>429</c>
      <c>The Agent exceeded a Service rate limit.</c>
      <c><spanx style="verb">unsupported_grant_type</spanx></c>
      <c>400</c>
      <c>Grant or Revoke requested a <spanx style="verb">grant_type</spanx> not advertised by the Service.</c>
      <c><spanx style="verb">idempotency_conflict</spanx></c>
      <c>409</c>
      <c>An idempotency key was reused with a different request body.</c>
      <c><spanx style="verb">authentication_required</spanx></c>
      <c>401</c>
      <c>The protected resource requires an advertised authentication method.</c>
      <c><spanx style="verb">unsupported_authentication_method</spanx></c>
      <c>401</c>
      <c>The presented authentication method is not accepted by the protected resource.</c>
      <c><spanx style="verb">insufficient_scope</spanx></c>
      <c>403</c>
      <c>Authentication succeeded but the principal lacks required authorization scope.</c>
</texttable>

<t>Services <bcp14>MUST</bcp14> use <spanx style="verb">not_recognized</spanx> for bad signatures, unknown Agent identities, wrong <spanx style="verb">aud</spanx>, wrong <spanx style="verb">op</spanx>, replayed <spanx style="verb">jti</spanx>, time-window violations, archived identities, unsupported identity methods during authenticated contact, and unknown or revoked session credentials. Services <bcp14>MUST NOT</bcp14> reveal which of these checks failed.</t>

<t>Services <bcp14>MUST</bcp14> use <spanx style="verb">invalid_request</spanx> for malformed JSON, missing required fields, invalid field types, unsupported field combinations, and syntactically invalid requests when returning the error would not reveal identity-recognition state.</t>

<t>Services <bcp14>SHOULD</bcp14> avoid readily observable timing differences among <spanx style="verb">not_recognized</spanx> paths. Implementations can perform comparable validation work or apply response-time bucketing, but this specification does not require constant-time responses or prescribe an artificial delay.</t>

<t>When a request fails for multiple reasons, the Service <bcp14>MUST</bcp14> choose the least revealing error. For example, a request with both a bad signature and missing claims returns <spanx style="verb">not_recognized</spanx>, not <spanx style="verb">requirements_unmet</spanx>.</t>

</section>
<section anchor="extensibility"><name>Extensibility</name>

<t>This document defines the extension points needed by the core protocol:</t>

<t><list style="symbols">
  <t><spanx style="verb">extensions.supported</spanx> advertises extension identifiers implemented by the Service.</t>
  <t><spanx style="verb">identity.methods</spanx> advertises concrete identity methods accepted for authenticated AEP commands.</t>
  <t><spanx style="verb">commands.grant_types</spanx> advertises concrete session-credential formats available through Grant and Revoke.</t>
  <t><spanx style="verb">commands.grant_types_config</spanx> carries common and concrete per-grant-type configuration.</t>
  <t><spanx style="verb">claims.required</spanx>, <spanx style="verb">claims.preferred</spanx>, and <spanx style="verb">claims.optional</spanx> <bcp14>MAY</bcp14> contain claim names from the AEP Claim Names registry or claim names defined by other documents.</t>
  <t>Additional top-level Inspect fields <bcp14>MAY</bcp14> be added by future documents.</t>
</list></t>

<t>Agents <bcp14>MUST</bcp14> ignore extension identifiers, additive fields, and syntactically valid advertised list values they do not understand, unless local policy requires the Agent to refuse enrollment when a required capability is absent. Ignoring an unknown command means that the Agent does not invoke it. Ignoring another advertised capability does not imply support for that capability.</t>

<t>Services <bcp14>MUST NOT</bcp14> redefine the semantics of commands, fields, status values, or error codes defined by this document. Extensions are additive.</t>

<t>Concrete session-credential documents <bcp14>MUST</bcp14> define:</t>

<t><list style="numbers" type="1">
  <t>The <spanx style="verb">grant_type</spanx> string.</t>
  <t>Grant request fields beyond <spanx style="verb">grant_type</spanx>, if any.</t>
  <t>Grant response shape.</t>
  <t>Credential presentation on HTTP requests.</t>
  <t>Expiry semantics.</t>
  <t>Revoke request fields beyond <spanx style="verb">grant_type</spanx> and <spanx style="verb">all_grant_types</spanx>, if any.</t>
  <t>Error behavior beyond the core errors, if any.</t>
</list></t>

</section>
<section anchor="wire-identifier-syntax"><name>Wire Identifier Syntax</name>

<t>Command identifiers, binding identifiers, and grant type identifiers use lowercase hyphenated tokens:</t>

<figure><sourcecode type="abnf"><![CDATA[
wire-identifier = lc-token *( "-" lc-token )
]]></sourcecode></figure>

<t>Error codes use lowercase underscore-separated tokens:</t>

<figure><sourcecode type="abnf"><![CDATA[
error-code = lc-token *( "_" lc-token )
]]></sourcecode></figure>

<t>Identity method identifiers use either an existing DID method identifier, such as <spanx style="verb">did:web</spanx>, or a lowercase hyphenated token registered for AEP-specific non-DID identity methods.</t>

<t>Extension identifiers <bcp14>MUST</bcp14> be absolute URIs. AEP-owned extension identifiers <bcp14>SHOULD</bcp14> use the URN form <spanx style="verb">urn:aep:ext:&lt;authority&gt;:&lt;name&gt;#v=&lt;version&gt;</spanx>.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This section requests registrations and registry creation following RFC 8126 <xref target="RFC8126"/>.</t>

<section anchor="http-authentication-scheme"><name>HTTP Authentication Scheme</name>

<t>IANA is requested to register the following HTTP authentication scheme in the "HTTP Authentication Schemes" registry:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Value</ttcol>
      <c>Authentication Scheme Name</c>
      <c><spanx style="verb">AEP</spanx></c>
      <c>Reference</c>
      <c>This document</c>
      <c>Notes</c>
      <c>Agent Enrollment Protocol client assertion authentication</c>
</texttable>

</section>
<section anchor="http-field-name"><name>HTTP Field Name</name>

<t>IANA is requested to register the following permanent field name in the "Hypertext Transfer Protocol (HTTP) Field Name Registry":</t>

<texttable>
      <ttcol align='left'>Field Name</ttcol>
      <ttcol align='left'>Status</ttcol>
      <ttcol align='left'>Structured Type</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c><spanx style="verb">AEP-Authorization</spanx></c>
      <c>permanent</c>
      <c>N/A</c>
      <c>This document</c>
</texttable>

<t><spanx style="verb">AEP-Authorization</spanx> carries one AEP-recognized protected-resource credential while preserving its registered authentication scheme and credential syntax. It is a request field and is unsafe for logging, forwarding across disallowed redirects, or cache-key construction.</t>

</section>
<section anchor="well-known-uri"><name>Well-Known URI</name>

<t>IANA is requested to register the following URI suffix in the "Well-Known URIs" registry:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Value</ttcol>
      <c>URI Suffix</c>
      <c><spanx style="verb">aep</spanx></c>
      <c>Change Controller</c>
      <c>IETF</c>
      <c>Reference</c>
      <c>This document</c>
      <c>Related Information</c>
      <c>Agent Enrollment Protocol Inspect document</c>
</texttable>

</section>
<section anchor="media-type"><name>Media Type</name>

<t>IANA is requested to register the following media type in the "Media Types" registry:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Value</ttcol>
      <c>Type name</c>
      <c><spanx style="verb">application</spanx></c>
      <c>Subtype name</c>
      <c><spanx style="verb">aep+json</spanx></c>
      <c>Required parameters</c>
      <c>None</c>
      <c>Optional parameters</c>
      <c>None</c>
      <c>Encoding considerations</c>
      <c>Same as JSON <xref target="RFC8259"/></c>
      <c>Security considerations</c>
      <c>AEP payloads can contain Agent identifiers, claims, session credentials, and other security-sensitive protocol data. Implementations need to apply the authentication, confidentiality, anti-replay, anti-enumeration, logging, and privacy requirements described in the Security Considerations and Privacy Considerations sections of this document.</c>
      <c>Interoperability considerations</c>
      <c>None</c>
      <c>Published specification</c>
      <c>This document</c>
      <c>Applications that use this media type</c>
      <c>Services and Agents implementing AEP</c>
      <c>Fragment identifier considerations</c>
      <c>Same as JSON <xref target="RFC8259"/></c>
      <c>Additional information</c>
      <c>None</c>
      <c>Person and email address to contact for further information</c>
      <c>IETF <eref target="mailto:iesg@ietf.org">iesg@ietf.org</eref></c>
      <c>Intended usage</c>
      <c>COMMON</c>
      <c>Restrictions on usage</c>
      <c>None</c>
      <c>Author</c>
      <c>IETF</c>
      <c>Change controller</c>
      <c>IETF</c>
</texttable>

</section>
<section anchor="aep-command-registry"><name>AEP Command Registry</name>

<t>IANA is requested to create an "AEP Commands" registry. The registration policy is Specification Required as defined by RFC 8126. Designated experts are requested to verify that new command registrations define command semantics, authentication requirements, request and response shapes, idempotency behavior for state-mutating commands, and error behavior.</t>

<t>Each entry contains:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>Command</c>
      <c>Lowercase wire identifier.</c>
      <c>Description</c>
      <c>Short command description.</c>
      <c>Reference</c>
      <c>Stable specification reference.</c>
</texttable>

<t>Initial entries are:</t>

<texttable>
      <ttcol align='left'>Command</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c><spanx style="verb">inspect</spanx></c>
      <c>Discover Service AEP capabilities.</c>
      <c>This document</c>
      <c><spanx style="verb">enroll</spanx></c>
      <c>Register an Agent identity with a Service.</c>
      <c>This document</c>
      <c><spanx style="verb">status</spanx></c>
      <c>Query the Agent identity's current state.</c>
      <c>This document</c>
      <c><spanx style="verb">grant</spanx></c>
      <c>Issue a session credential.</c>
      <c>This document</c>
      <c><spanx style="verb">revoke</spanx></c>
      <c>Revoke session credentials.</c>
      <c>This document</c>
</texttable>

<t><spanx style="verb">authenticate</spanx> is not registered as a command because it does not identify a command endpoint.</t>

</section>
<section anchor="aep-operation-registry"><name>AEP Operation Registry</name>

<t>IANA is requested to create an "AEP Operations" registry. The registration policy is Specification Required. Each registration <bcp14>MUST</bcp14> define its valid target class, assertion binding, and replay behavior.</t>

<texttable>
      <ttcol align='left'>Operation</ttcol>
      <ttcol align='left'>Valid target</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c><spanx style="verb">enroll</spanx></c>
      <c>Enroll command endpoint</c>
      <c>This document</c>
      <c><spanx style="verb">grant</spanx></c>
      <c>Grant command endpoint</c>
      <c>This document</c>
      <c><spanx style="verb">revoke</spanx></c>
      <c>Revoke command endpoint</c>
      <c>This document</c>
      <c><spanx style="verb">status</spanx></c>
      <c>Status command endpoint</c>
      <c>This document</c>
      <c><spanx style="verb">authenticate</spanx></c>
      <c>Protected Service resource, not AEP command</c>
      <c>This document</c>
</texttable>

</section>
<section anchor="aep-authentication-method-registry"><name>AEP Authentication Method Registry</name>

<t>IANA is requested to create an "AEP Authentication Methods" registry. The registration policy is Specification Required. Each registration <bcp14>MUST</bcp14> define credential presentation, expiry and replay behavior, redirect handling, and authentication failure behavior. Registered AEP Grant Type identifiers are also valid authentication method identifiers when the corresponding grant specification defines protected-resource presentation.</t>

<texttable>
      <ttcol align='left'>Authentication Method</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c><spanx style="verb">aep-jwt</spanx></c>
      <c>Resource-bound AEP client assertion JWT.</c>
      <c>This document</c>
</texttable>

<t>The initial registered Grant Type method identifiers are <spanx style="verb">oauth-bearer</spanx>, <spanx style="verb">api-key</spanx>, and <spanx style="verb">basic</spanx>, as defined by their respective documents.</t>

</section>
<section anchor="aep-binding-identifier-registry"><name>AEP Binding Identifier Registry</name>

<t>IANA is requested to create an "AEP Binding Identifiers" registry. The registration policy is Specification Required as defined by RFC 8126. Designated experts are requested to verify that new binding registrations define transport semantics, endpoint discovery, authentication carriage, payload encoding, error mapping, and security considerations.</t>

<t>Each entry contains:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>Binding Identifier</c>
      <c>Lowercase wire identifier.</c>
      <c>Description</c>
      <c>Short binding description.</c>
      <c>Reference</c>
      <c>Stable specification reference.</c>
</texttable>

<t>Initial entries are:</t>

<texttable>
      <ttcol align='left'>Binding Identifier</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c><spanx style="verb">http</spanx></c>
      <c>HTTP binding for AEP commands.</c>
      <c>This document</c>
</texttable>

</section>
<section anchor="aep-extension-identifier-registry"><name>AEP Extension Identifier Registry</name>

<t>IANA is requested to create an "AEP Extension Identifiers" registry. The registration policy is Specification Required as defined by RFC 8126. Designated experts are requested to verify that new extension registrations define the extension identifier, discovery behavior, protocol fields or commands added by the extension, error behavior, and security and privacy considerations.</t>

<t>Each entry contains:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>Extension Identifier</c>
      <c>Absolute URI identifying the extension.</c>
      <c>Description</c>
      <c>Short extension description.</c>
      <c>Reference</c>
      <c>Stable specification reference.</c>
</texttable>

<t>This document creates the registry but does not register concrete extensions.</t>

</section>
<section anchor="openapi-specification-extension"><name>OpenAPI Specification Extension</name>

<t>This document registers the following OpenAPI Specification Extension for Security Scheme Objects:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Value</ttcol>
      <c>Name</c>
      <c><spanx style="verb">x-aep-authentication-method</spanx></c>
      <c>Type</c>
      <c>String</c>
      <c>Description</c>
      <c>Registered AEP authentication method identifier</c>
      <c>Reference</c>
      <c>This document</c>
</texttable>

</section>
<section anchor="aep-error-code-registry"><name>AEP Error Code Registry</name>

<t>IANA is requested to create an "AEP Error Codes" registry. The registration policy is Specification Required as defined by RFC 8126. Designated experts are requested to verify that new error codes are binding-independent, use <spanx style="verb">lower_snake_case</spanx>, avoid exposing identity-enumeration detail, and define default HTTP status mapping and remediation behavior.</t>

<t>Each entry contains:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>Code</c>
      <c>Lowercase <spanx style="verb">lower_snake_case</spanx> error code.</c>
      <c>HTTP Status</c>
      <c>Default HTTP status code.</c>
      <c>Description</c>
      <c>Short error description.</c>
      <c>Reference</c>
      <c>Stable specification reference.</c>
</texttable>

<t>Initial entries are:</t>

<texttable>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='right'>HTTP Status</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c><spanx style="verb">enrollment_failed</spanx></c>
      <c>400</c>
      <c>Generic enrollment failure.</c>
      <c>This document</c>
      <c><spanx style="verb">invalid_request</spanx></c>
      <c>400</c>
      <c>Malformed or invalid request.</c>
      <c>This document</c>
      <c><spanx style="verb">not_recognized</spanx></c>
      <c>401</c>
      <c>Anti-enumeration recognition failure.</c>
      <c>This document</c>
      <c><spanx style="verb">identity_suspended</spanx></c>
      <c>403</c>
      <c>Recognized identity is suspended.</c>
      <c>This document</c>
      <c><spanx style="verb">identity_terminated</spanx></c>
      <c>403</c>
      <c>Recognized identity is terminated.</c>
      <c>This document</c>
      <c><spanx style="verb">identity_unavailable</spanx></c>
      <c>403</c>
      <c>Recognized identity is temporarily unavailable.</c>
      <c>This document</c>
      <c><spanx style="verb">requirements_unmet</spanx></c>
      <c>422</c>
      <c>Required claims or supported extension requirements are missing or invalid.</c>
      <c>This document</c>
      <c><spanx style="verb">verification_pending</spanx></c>
      <c>403</c>
      <c>Verification has not completed.</c>
      <c>This document</c>
      <c><spanx style="verb">verification_timeout</spanx></c>
      <c>422</c>
      <c>Verification did not complete in time.</c>
      <c>This document</c>
      <c><spanx style="verb">rate_limited</spanx></c>
      <c>429</c>
      <c>Rate limit exceeded.</c>
      <c>This document</c>
      <c><spanx style="verb">unsupported_grant_type</spanx></c>
      <c>400</c>
      <c>Unsupported Grant or Revoke grant type.</c>
      <c>This document</c>
      <c><spanx style="verb">idempotency_conflict</spanx></c>
      <c>409</c>
      <c>Idempotency key reused with a different request body.</c>
      <c>This document</c>
      <c><spanx style="verb">authentication_required</spanx></c>
      <c>401</c>
      <c>Protected-resource authentication is required.</c>
      <c>This document</c>
      <c><spanx style="verb">unsupported_authentication_method</spanx></c>
      <c>401</c>
      <c>Authentication method is not accepted.</c>
      <c>This document</c>
      <c><spanx style="verb">insufficient_scope</spanx></c>
      <c>403</c>
      <c>Authenticated principal lacks sufficient scope.</c>
      <c>This document</c>
</texttable>

</section>
<section anchor="aep-grant-type-registry"><name>AEP Grant Type Registry</name>

<t>IANA is requested to create an "AEP Grant Types" registry. The registration policy is Specification Required as defined by RFC 8126. Designated experts are requested to verify that new grant type registrations define the Grant request fields, Grant response shape, credential presentation syntax, expiry semantics, Revoke behavior, and security considerations for credential storage and leakage.</t>

<t>Each entry contains:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>Grant Type</c>
      <c>Lowercase wire identifier.</c>
      <c>Description</c>
      <c>Short credential description.</c>
      <c>Reference</c>
      <c>Stable specification reference.</c>
</texttable>

<t>This document creates the registry but does not register concrete grant types. OAuth Bearer, API-key, and Basic session credentials are defined by separate documents.</t>

</section>
<section anchor="aep-identity-method-registry"><name>AEP Identity Method Registry</name>

<t>IANA is requested to create an "AEP Identity Methods" registry. The registration policy is Specification Required as defined by RFC 8126. Designated experts are requested to verify that new identity method registrations define identifier syntax, verification-material resolution, JWT <spanx style="verb">kid</spanx> handling, trust anchors, caching behavior, key rotation behavior, and security and privacy considerations.</t>

<t>Each entry contains:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>Identity Method</c>
      <c>Lowercase identity method name.</c>
      <c>Description</c>
      <c>Short method description.</c>
      <c>Reference</c>
      <c>Stable specification reference.</c>
</texttable>

<t>This document creates the registry but does not register concrete identity methods. The <spanx style="verb">did:web</spanx> identity method is defined by a separate document.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>Network use of the HTTP binding defined by this document requires TLS 1.3 or later. Plaintext HTTP is out of scope.</t>

<t>Client assertions are replay resistant only when Services validate the full chain: <spanx style="verb">aud</spanx>, <spanx style="verb">op</spanx>, <spanx style="verb">resource</spanx> when required, <spanx style="verb">jti</spanx>, <spanx style="verb">iat</spanx>, and <spanx style="verb">exp</spanx>. <spanx style="verb">aud</spanx> binds the assertion to the Service DID. <spanx style="verb">op</spanx> binds the assertion to one registered operation. <spanx style="verb">resource</spanx> binds <spanx style="verb">authenticate</spanx> to a protected request target. <spanx style="verb">jti</spanx> prevents in-window duplicate use. <spanx style="verb">iat</spanx> and <spanx style="verb">exp</spanx> bound the usable time window. Services that skip any of these checks weaken the authentication model.</t>

<t>Services <bcp14>SHOULD</bcp14> keep assertion lifetimes short. This document sets a maximum validity interval of 300 seconds. Services <bcp14>MAY</bcp14> enforce a shorter maximum.</t>

<t>Identity methods define how Services obtain verification material for Agent identities. Services <bcp14>MUST</bcp14> apply the resolution, trust-anchor, caching, and key-rotation requirements of each enabled identity method. A Service <bcp14>MUST NOT</bcp14> accept an Agent identity method that was not advertised in <spanx style="verb">identity.methods</spanx>.</t>

<t>Resolving a Service DID proves that the DID document exists; it does not prove that the origin serving an Inspect document controls that DID. An attacker that publishes another Service's DID could otherwise induce an Agent to create or disclose an assertion whose audience names the victim Service. Agents <bcp14>MUST</bcp14> enforce the Service-origin binding defined for the Service DID method before provisioning identity material, requesting an assertion, or transmitting credentials. Directory membership and directory ownership metadata <bcp14>MUST NOT</bcp14> substitute for this check.</t>

<t>The <spanx style="verb">core.signing_algorithms</spanx> advertisement is security relevant. Services <bcp14>MUST NOT</bcp14> advertise algorithms they do not intend to accept, and <bcp14>MUST NOT</bcp14> accept algorithms that were not advertised. Agents <bcp14>MUST NOT</bcp14> use <spanx style="verb">none</spanx> or symmetric JOSE algorithms for Agent identity assertions. Implementations <bcp14>SHOULD</bcp14> follow JWT best current practices <xref target="RFC8725"/>.</t>

<t>Authentication failures are an enumeration risk. Services <bcp14>MUST</bcp14> collapse recognition failures to <spanx style="verb">not_recognized</spanx> and <bcp14>SHOULD</bcp14> avoid readily observable timing differences among failures involving an unknown Agent, a bad signature, a wrong audience, a wrong operation, a replay, an expired assertion, or an archived identity. Implementations need not add an artificial delay when their normal verification and storage paths already have comparable observable timing.</t>

<t>Grant issues session credentials that may be bearer credentials depending on the concrete session-credential document. Services and Agents <bcp14>MUST</bcp14> treat returned credentials as secrets. Concrete session-credential documents <bcp14>MUST</bcp14> define credential lifetime, presentation, storage guidance, and revocation semantics. Revoke <bcp14>MUST</bcp14> be available for every advertised grant type.</t>

<t>If a session credential is stolen, an attacker may impersonate the Agent until the credential expires or is revoked. Agents that suspect compromise can authenticate with the baseline client assertion and invoke Revoke for the affected grant type.</t>

<t>Services <bcp14>SHOULD</bcp14> rate-limit Inspect, Enroll, Grant, Revoke, and Status to reduce probing and credential-issuance abuse. Rate limits <bcp14>MUST NOT</bcp14> create distinguishable recognition errors that defeat the anti-enumeration rules above.</t>

</section>
<section anchor="privacy-considerations"><name>Privacy Considerations</name>

<t>AEP exposes Agent identity and claims to Services. Agents and Services should minimize disclosure by using the Inspect document as the negotiation surface: Services list required, preferred, and optional claims; Agents provide the minimum set needed for the intended interaction.</t>

<t>Services <bcp14>SHOULD</bcp14> keep <spanx style="verb">claims.required</spanx> limited to data required for enrollment or legal operation. Over-declaring required claims increases privacy risk and reduces interoperability.</t>

<t>Agents <bcp14>SHOULD</bcp14> avoid sending claims absent from <spanx style="verb">claims.required</spanx>, <spanx style="verb">claims.preferred</spanx>, or <spanx style="verb">claims.optional</spanx>. Services <bcp14>MUST</bcp14> ignore unknown claims unless local policy requires rejection.</t>

<t>Agent identities can become correlatable if the same identifier is reused across Services. Platforms or Agent operators that require unlinkability <bcp14>SHOULD</bcp14> use a distinct Agent identifier and signing key per Service enrollment when the selected identity method allows it.</t>

<t>Services <bcp14>SHOULD</bcp14> maintain a Service-local pairwise identifier for enrolled Agents rather than using the Agent DID as the primary internal record key across all contexts. Such identifiers <bcp14>SHOULD</bcp14> be opaque and <bcp14>MUST NOT</bcp14> be disclosed as cross-Service correlators.</t>

<t>Platform-hosted Agent identities introduce Platform-level visibility: the Platform can observe or reconstruct which Services an Agent enrolls with. This document does not prevent that visibility. Agents with stronger privacy requirements should account for the Platform trust relationship before using a Platform-hosted identity.</t>

<t>Session credentials can become correlation handles when reused outside the issuing Service or logged by intermediaries. Concrete session-credential documents <bcp14>MUST</bcp14> define presentation rules that avoid unnecessary disclosure and <bcp14>MUST</bcp14> prohibit logging raw credential values.</t>

<t>Inspect documents may disclose Service policy and capability information to unauthenticated readers. Services <bcp14>SHOULD</bcp14> avoid publishing sensitive operational details in Inspect beyond what Agents need for interoperability.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">

<reference anchor="DID-WEB" target="https://w3c-ccg.github.io/did-method-web/">
  <front>
    <title>The did:web Method Specification</title>
    <author >
      <organization>W3C Credentials Community Group</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


<reference anchor="RFC3339">
  <front>
    <title>Date and Time on the Internet: Timestamps</title>
    <author fullname="G. Klyne" initials="G." surname="Klyne"/>
    <author fullname="C. Newman" initials="C." surname="Newman"/>
    <date month="July" year="2002"/>
    <abstract>
      <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3339"/>
  <seriesInfo name="DOI" value="10.17487/RFC3339"/>
</reference>
<reference anchor="RFC5234">
  <front>
    <title>Augmented BNF for Syntax Specifications: ABNF</title>
    <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
    <author fullname="P. Overell" initials="P." surname="Overell"/>
    <date month="January" year="2008"/>
    <abstract>
      <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="68"/>
  <seriesInfo name="RFC" value="5234"/>
  <seriesInfo name="DOI" value="10.17487/RFC5234"/>
</reference>
<reference anchor="RFC6839">
  <front>
    <title>Additional Media Type Structured Syntax Suffixes</title>
    <author fullname="T. Hansen" initials="T." surname="Hansen"/>
    <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
    <date month="January" year="2013"/>
    <abstract>
      <t>A content media type name sometimes includes partitioned meta- information distinguished by a structured syntax to permit noting an attribute of the media as a suffix to the name. This document defines several structured syntax suffixes for use with media type registrations. In particular, it defines and registers the "+json", "+ber", "+der", "+fastinfoset", "+wbxml" and "+zip" structured syntax suffixes, and provides a media type structured syntax suffix registration form for the "+xml" structured syntax suffix. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6839"/>
  <seriesInfo name="DOI" value="10.17487/RFC6839"/>
</reference>
<reference anchor="RFC7515">
  <front>
    <title>JSON Web Signature (JWS)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7515"/>
  <seriesInfo name="DOI" value="10.17487/RFC7515"/>
</reference>
<reference anchor="RFC7518">
  <front>
    <title>JSON Web Algorithms (JWA)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications. It defines several IANA registries for these identifiers.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7518"/>
  <seriesInfo name="DOI" value="10.17487/RFC7518"/>
</reference>
<reference anchor="RFC7519">
  <front>
    <title>JSON Web Token (JWT)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7519"/>
  <seriesInfo name="DOI" value="10.17487/RFC7519"/>
</reference>
<reference anchor="RFC8259">
  <front>
    <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
    <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
    <date month="December" year="2017"/>
    <abstract>
      <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
      <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="90"/>
  <seriesInfo name="RFC" value="8259"/>
  <seriesInfo name="DOI" value="10.17487/RFC8259"/>
</reference>
<reference anchor="RFC8037">
  <front>
    <title>CFRG Elliptic Curve Diffie-Hellman (ECDH) and Signatures in JSON Object Signing and Encryption (JOSE)</title>
    <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
    <date month="January" year="2017"/>
    <abstract>
      <t>This document defines how to use the Diffie-Hellman algorithms "X25519" and "X448" as well as the signature algorithms "Ed25519" and "Ed448" from the IRTF CFRG elliptic curves work in JSON Object Signing and Encryption (JOSE).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8037"/>
  <seriesInfo name="DOI" value="10.17487/RFC8037"/>
</reference>
<reference anchor="RFC9846">
  <front>
    <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
    <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
    <date month="July" year="2026"/>
    <abstract>
      <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
      <t>This document obsoletes RFC 8446, which specified TLS 1.3. This document obsoletes RFC 5246 (specifying TLS 1.2) and RFCs 5077, 6961, 7627, and 8422, all of which pertain to TLS 1.2 or earlier, and updates RFCs 5705 and 6066. This document also specifies new requirements for TLS 1.2 implementations.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9846"/>
  <seriesInfo name="DOI" value="10.17487/RFC9846"/>
</reference>
<reference anchor="RFC8615">
  <front>
    <title>Well-Known Uniform Resource Identifiers (URIs)</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <date month="May" year="2019"/>
    <abstract>
      <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
      <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8615"/>
  <seriesInfo name="DOI" value="10.17487/RFC8615"/>
</reference>
<reference anchor="RFC9110">
  <front>
    <title>HTTP Semantics</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
      <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="97"/>
  <seriesInfo name="RFC" value="9110"/>
  <seriesInfo name="DOI" value="10.17487/RFC9110"/>
</reference>
<reference anchor="RFC9112">
  <front>
    <title>HTTP/1.1</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document specifies the HTTP/1.1 message syntax, message parsing, connection management, and related security concerns.</t>
      <t>This document obsoletes portions of RFC 7230.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="99"/>
  <seriesInfo name="RFC" value="9112"/>
  <seriesInfo name="DOI" value="10.17487/RFC9112"/>
</reference>
<reference anchor="RFC9113">
  <front>
    <title>HTTP/2</title>
    <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
    <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
      <t>This document obsoletes RFCs 7540 and 8740.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9113"/>
  <seriesInfo name="DOI" value="10.17487/RFC9113"/>
</reference>
<reference anchor="RFC9114">
  <front>
    <title>HTTP/3</title>
    <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9114"/>
  <seriesInfo name="DOI" value="10.17487/RFC9114"/>
</reference>
<reference anchor="RFC9457">
  <front>
    <title>Problem Details for HTTP APIs</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <author fullname="E. Wilde" initials="E." surname="Wilde"/>
    <author fullname="S. Dalal" initials="S." surname="Dalal"/>
    <date month="July" year="2023"/>
    <abstract>
      <t>This document defines a "problem detail" to carry machine-readable details of errors in HTTP response content to avoid the need to define new error response formats for HTTP APIs.</t>
      <t>This document obsoletes RFC 7807.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9457"/>
  <seriesInfo name="DOI" value="10.17487/RFC9457"/>
</reference>
<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">

<reference anchor="AEP-CLAIMS" target="https://datatracker.ietf.org/doc/draft-kavian-aep-claims/">
  <front>
    <title>AEP Claim Values</title>
    <author initials="N." surname="Kavian" fullname="N. Kavian">
      <organization></organization>
    </author>
    <date year="2026" month="August" day="24"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-kavian-aep-claims-01"/>
</reference>


<reference anchor="RFC8126">
  <front>
    <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
    <author fullname="M. Cotton" initials="M." surname="Cotton"/>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <author fullname="T. Narten" initials="T." surname="Narten"/>
    <date month="June" year="2017"/>
    <abstract>
      <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
      <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
      <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="26"/>
  <seriesInfo name="RFC" value="8126"/>
  <seriesInfo name="DOI" value="10.17487/RFC8126"/>
</reference>
<reference anchor="RFC8725">
  <front>
    <title>JSON Web Token Best Current Practices</title>
    <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
    <author fullname="D. Hardt" initials="D." surname="Hardt"/>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <date month="February" year="2020"/>
    <abstract>
      <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="225"/>
  <seriesInfo name="RFC" value="8725"/>
  <seriesInfo name="DOI" value="10.17487/RFC8725"/>
</reference>



    </references>

</references>



  </back>

<!-- ##markdown-source:
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
JZNE6qFE5ldCBfwrfrpTQnZTreN92rpL28EP5vk8mFG3oI1YEgVa84NOCc2X
J0W+zHv4gpnSV+avY2dp9xWqfXxfSvgtS8wS+Nf/SM6wtzHaiFb7XKw9UCBM
xyRFMwuiYi/FEv2I2kOfPSJ6LkHDhv/roGs7uUgbtqzM1eTn7SihSenj/nCW
+hbLcjQlqz2EhnhnZ7cJpxbku89R8LGm1iG8fuP2lik5hOP+mqDisoiQAvsq
F37wKfW5HeLnIiZ+0BtCg+OWEiLe5cOVsx2fDyM/qLcPPaXI/ks+jliPJUtd
Og8CLxRmMICUoEATdjUILq/8Qei8zt9AToFAPU3O84p9043XVINWbZ3JTtW3
+ZpRJqNKbwQtxIYNHS5JUQKn74urj0N+OM3rPCMAktziULGSrJABvavYueBw
dp1eRjC4feh0D7flGlCvYXF8pZHy0HYROncdieSgmoYzRQTQZpxL4SIE72pd
tu5FtS7mkkdGM3aFHoUUmAYV1CpG8j6vqJd0jlpjNcW4Dq6VCpKPQi8WAv7c
SHZeh8qwjGzTjWbAeApQsiXIB+PFqF0Dhod2YjUgb3woAxdEX89eU0rLUE5b
3oQhpt30OXRdtSDguAEfdFLVxJjYWERB/ZhuNKPsm6wg2KGfOBTG5cSSWY62
3VeNJn25xxovYZH4OftOeBsIK4CdbVG9wiA1g+zdaXhKiRyUwEQndqFL0eoP
uYh4j9bNJnLWnjlC/DJzk1ezpd5WKaxOs30Z7J+CsPYHgz8iInerQFqOuCc2
o8ogcdpqkUomXaUDW70EKrbZWpK08SJl0YkHslVaqYveRLrebnrytTgXEzp0
tyvFCWDNC7dOcxm39HXC+WkG65bhZAVHlrvGDDN6R2vcm5Q2bpnoYuy0jaH7
aEV47fwZOxP5c4VAm5AdN7Sssv0V0fBcDCsjdz2jL/h2jAbxOnjB5IRz8IQp
Vf/H5MCnsbXVSgrFK2CvApJxyeN0LsS2WNMJsCXvrZNWsHJ7SWsoeXMmu6nL
VyXO1ytX6PD34KBoV+YaXwRySZkdw8uxeH24ToupdwsKYjcoFZ618B03XaV8
HIOobg+47IGAxSEYoa1xXz7hiIEU8rARKUztp2m69a8uke+qG50zMqhGsT7a
kY8sV11sf2aKaoKEVWIfuvUX07PCSiMf9HbsrZVlxsq2tBSM7iuM55qQBxzz
F9YgDq4/7AuisgseqcPjIQBNbjA63b4zRGj2tNxQGYUo4YDAoaluwsN+HAIE
5yNrvAp0KpvwOMImoHIJ4c3tkgFJWZ0oO9EP88uxuEg1BV8bcRyddqPxb4DE
+AlF6aFPPj+iUsu48AJPbw+cOlrDU1gGObaW+ePZKDB7lcrbn21WcDhSRhx4
nTngSqrGegHjGJkk+KhU5SgoVUnuyceGtMKO+CzjjEca6NTXpSmReWlhTEbq
3FrRmntXYEMDHWRA0y28MkemN74ysaDpbV8om8hDJcgevxi5AtDo3POFPbyM
xNz6XonsXKVag+jVy0P0brmSM/2CXBRIDTx69fIZ52R7h+6bdv9rhRbafLv/
NcqMbz87/+brc4wKqMpvWUc5PHh2QJCJvpy1aCpaKdApwSKHtEoUBXiIZHK4
1N5xhp7/+7t7X0glOviNCv5+9tml1Y9pOLkFnSe+zgve55rrr5Aspq+d7V01
O2705NKj/Iot170I1+9mV8XL3GTv40OjpnunRmoDNM2x4+866pdad6ZvQUJV
9qZNP6swwLH/a5GwxoT7QrMPOkgY0d7/5qmLdxPX4WYk5fwSpqisJyZgqDWm
SyTHCDwHy+PH9gfs9nPTryTq1ZsdQ170hZmreMDldwQ3XyNXoZS+eAe2UJIl
oS45xZ+wNaYnk+Q3M3XYoFsHl274b/1ZYapSS1aQzYdzVqaRs7cFOKV5kWnW
qOaCGjbbf8ijSF9SNd9QfC7hGgQiXKF21iUFLCLfLqrTU7riSlA96W4cMI9e
NiQJMopJqiuju2GcGmdRVgaOngjvJ6zp8xdSHoGH34zusCAaWcjeOGoLm7sO
u7oRn7oGOV2PBeHQj3joZiQY2D+5/kgecsU7DOEiVNGaGjl8fPyn67WxlWPd
iFVxI5w8c1jyZZMYyyVMqVNbiLnQU0who4N8M0Kg1DNR3YQQfFM3kFlXL9h7
CLVPP5f9XDOaZvuh+h3H1fxf/UM7Q7K1DOTw9Xc2KKM2+dCE8//xD+7M0Xra
vuvmsMCRonaffj7gD8tEMZ/5wLHrvw/afvlJzHyEH9yZ51pY49PO/I5+cGce
K1jCLLCtXO/95IgyWqRQMRtQ9u4hHPqnn/f6ITmTzdY1Ia2/y86gc0YKQLOX
VV051qUvtlh2/Qz7fOZS142slI0MaOSQKQziAlU2jb27ApmtFb466axDdllJ
ZxS1SpGyGuIah80O/WWYYaPy89R7WRQhMagCm/l1DK2H1MILaSH6SkyKAoYZ
OB1wZ0wJSHaW3GCHPnGzj/WDO/NizRnX8ygM4Frvv4e18NPPZT9kAfYXEnFT
sk8AQ/i9LWHL+z5wBw+tuHpdjIAC0n36ufEP7syfpGavBZO+LkP7pAF8rB86
Mz40Ijdmvuu9/0nOfKQfkjO+qDPVNsTgA6rX21auyjMl96xrUp3ywEpL9uKv
86w5/fc8axfjqj799r96Vv8v/KhuRpWA15iGfcP3k4fPnz4FPvbp5wP/sHUG
w2lUsS5vtEGfuNnH+lHvfFW/4/s38X59+rnBj/E3zqy/8drvf9qZj/TDrlMK
f5V4Nw2i2OJEpbAjCivfMW8ZN6kWV/GBSxpBCk0dBVdZk2FnYyM1jGmcPMo4
RpxisjAShMMjgwFRQp4UH7IQ82HolBZNki9tcaQYMtMbYIYuoMFCD3LsIwYR
miQtF3GIqlIE4OTDREnJCiIUMUgNIYegO66AQFiUHVfzb7gUszpfbdWaIxfo
1S5NPpSyHtzHExeAh8GI5hI19n3YccCVCdFE3KrO/XfmDRsjQPE3BDgSEEKt
j6BRanDoarq3FNsCW04L4gd79XLYlbksqueGwRd9oT2KA4qjEtxOlzDBIIgS
XpxnJv24G9/j0BMmPGYJVkij1CUH+uVSF3ub0rq68O1f1who6EOpTVndoIry
eMuouF4BjfkQoRO3FLPsLHtPU1LxgCdIUb+9yU1XNhUXtcg1M8bHLzWMpkwU
M81mKdpothSu6FSlcEzxuQNWuRlbdO+9H2N0eGTmHRPqrYgz+VxhKGdF2iCf
8SCeHLBscfQs7/nNzFCW+kfb3vscrZufry0HzJ0K6VPwbDrlMfpHeBlByyMc
236t9q4ga7cqRNvvPkJ3euURiVp89wbD4/KbwUOMy7twgpWtP9Jz/OR4RLGw
TznW+2ZHpbeNj3tsriqd2HNWhh4BVzFXBYiqF5jT1Fg01SNwuqaChA0up6wP
hKGTfJ3+dGLzggMEnlU1aybk+uQ8hChxUNLeegJCo9IQnehm2dEbyNtrxtDe
iDP0swVX7yPunuc2YvxiIuQ4ivmHn477xCYBvuWiffTXDunZCdy6ia17R4WH
VjnGrGpG2hSLm+AfcVnRnNHGMi60a7PA5Ih9JxknJkPlZuer28DvSFnXfJpe
ZZ1qjTPiqVfXHeuzGOkh0VJMdHqaDdVr7MooDEX7lgItki/X75y+pmbu6O6G
Cvq1TwG92EMFN1fXvTQhrV3X/mqt3Yqhd1Xee2dwxZpdj5dcuYT97AMhLmPe
EYBpSqKRz6W9RBD6RKN3Pqd9TfyOTqqFJeo7q2f9SapDU4TBy1IXayG5flza
SxCQ5yYN2zU5jO7N0dG1IRTvc4xvcrXcJtmuL9g4aqmPdEAQm+Q0d1dxQAj6
znjbIffH3O9K96Bfetyvc+B9E1GqPRN3I5jHkrKGwAYGxUAuuC4F3CTY08GS
uigRdbv1irvUBmM4ySuaEbQwISRJ53pOtRz77DA3DeG/sV2ml0hsFhPwrjcj
VH5CsTdSoJr+MRybmATKfLoRMGbX8hOptVcprD2WoJuGqBhuS6zgIeat3pDH
uhd/T5zVpPHiwyJ/RvBPRkiGCAdNQC2UIHvSlOnr7ATlPiqUBGcCfTH8vYNC
sQCNDJA5NPU4XZ1Fi5cqSpHcfiiShU0IH9pUGVDVu50NMV7ODUl7bai7TgEk
M75K8z5SnNhHPavBz155DITHUvPb+Kt79WaWUEv4202ilyPi8tLEs7226fTK
n2vf9uLt+3iwtpfZkD4QLu3Noa16bTLvACz7tAciVrnLTUfVO6Z3QIY9iAFh
LQzTDVesf51uDu36sh8w1DVwk7W6fEzXx2bdMibfwA0GdfmYrg+uunVMvcCq
lw9wi2X0vxQdtXdM7wBv+uMHxDG9ekzXwyf98UokUmjmmkPr37ubA4y+dBii
DmH0nXEAe8f0DgihrwwWXYwWaivNv/OY3gHi8zDC93wfbM+r7P35NTE6X3TN
w5FWn3vExyuW68q9uybI5sF1YDXfh8bfDyWTUBZCSEzf3HVgMLdblIzN+WZ3
HP/i7+iOY+CRtpqP+mCphr24U8NtHhwBpHCOHGM3lgO/xX4UBYlTrXkDc9GC
MDxl9IsiS1+nVB74vzJuw1DH+8RtGCix8O7yTnEb728B8mTSjJPneNCkcPxQ
6xfyvnGt+J7QAaJEQ7WKftXnWXGAVu/ktoze/h2dtQgHq//AGcuMnhmrgoyW
0GfNbjCyQ5IJ9oefjpPJayyA632gbb2m+KjZGQGrzagg0qk5ZyTeqja0JXwM
8+07uWCued5iWrFnLl5vTKbvt8vquZMHe+wFfabYf9HZ68CnMYagYrR1ppkH
JJt2jxphnW3JWBwMnmUtweGiYUuqTgXel21YiR6H8vjJUbI7voPaHOLHYJFH
uDBQcW1uCt7CcprQOkviweBh5AjW00SufmgzJzxdU9LJJWsJii9LqsUaw0/O
oLN9hY9m4OiJr4kr8MV8voeKJD3J01Z9wnCgJ2N+n2bN2+Wd1FL3VeMzHh0+
GlM32x7GqHLjtHZlVsZ2WPxuFA6Caa0BKDmLYI4BGktpzBXC/FKyWqlY2PM1
J8JluItjnpyfmxYQPsOvFWI5c6UQ3NIS42pe56uwZJQAV1+AvJVIh9jGXM2z
ogfh+XWWrczKYCUr7Ljh0mfjSONqMuSpyTJ9ky/XS95nugVjYuw5ll9eJHfg
PgG8qiInoAcIPfgZ2BKoCrNM66pltTY07gAmOtZ7BivnGqmmlMkcVJVwvJc8
kBFseYz87fORLacmrjxiruyYMtMd8OOR48fBJRpmmjGv5Xo30YnH+l8BEDSC
o7IO3hOkKFyCNvdCLswGnlUKLYbQx7BoGL1RnHOpOkP5SJ3nmQGFxc/cHhLg
ZPMgCO+jF/zzUnRawc5gvB0UKYlMl07ouB2UWGQN9PpMoGJXa18GmTPJfakP
HNKMsMnpmwusTQW0jiXU3fJ4PQLtxVy2ljG6Hb1enNFHUi5JcIdxCueYcLL0
YZ8WJljp0DAMrbMdM1SGvQ34im6WlLzFpctRs7IeBUeVLihaK737EtvYMsZs
wPW/jWoSgypD0VNVjaSxnGZ1c0YnHsSg+4Iq7NHnrmSmI7RmPYUuW/SI8gzg
EBOLGLs6jXU2Rm0Jej5Ji1ME4TxbWqBrzgxtvNpRZ0V2nmIqfBf1172V+LYC
vOScsrOId9IZGIaF/PRg2JfxKGBBs/AshDuJ70ptgxJYMxq/NktYDrRE//D8
6LFtscMfNka0dSEMhD9KBXpU5qbI5jUGeFUTanQmhULvf7l3j+BDD3oj3CRk
rUwCy2/evI4XcwbdpavGFXEKG8GSrbHNmQoVvitav2sZcaILPexBEYhhjD+P
H8R1qNNuqeo08WAOrrp1SP6Eth8WhdhswZJgIpj3AfS74L68hsfqJXweCAjS
neVOSsUIgChwjbAu53lmiw90Vgz2k++OOUZyN713KCLUJQU/JhzRFnzNXkmy
tGoE4tUQ1ePevHciECp0Lnj/YblwvBbBYYWvgJpvDIRtr7eqBAyjgE9dxdM1
aHelrzd+Xrk68YpUrRYEhx4clBvLKMLFCDhjWaSiyX0x88SM2qrISiIpJ2pw
7fPlihJzVefkc76G9wpedN8KkyIZyunSSlVDHFdh9WrNwg5Jo66WyNZmYVX5
zFQnhltNQQvYQX9FRE/GX5fVUGmSwjkk5TGYd6ya4f1gxOZhEb/DuLg4tzu0
1UoJupHkKNalVRe1X4AR0jLuXpJOSRH1VmjDVEXuzhmbeg1SnDbPciVGB+cV
AxrKRHfoVDys1wXS8bQihPbPtkCvAOfEYsDomoenYz5dOv8GTE/XyW1aUIod
VEvUKuD4wpT+maneQGHGGxAWGhXU0WhSVhzK7LRqc63pUy/SWbbvW6d6AP6i
4oopCFyOol3xYB/oAElHmDNp0sBAdwZVWqtoKFnkmsJM6nSq0K29KnunwkMi
vgdcIVIGfO0ZPHFBxbkiO0Vd3d95nsNJHM0zaLMOytbIoufITFIuIyrIOyC7
5PQjrTU8ZAON4yszBMKpEWYoDXOBA64scc2aFTD8TsmKWIpKHQhXKoE7u7RO
Q539kumCx7cIOv1TIP2lBJDDDZqOQ27KuxsbUe7Kjwlcr6dYuHS3XL/caSO8
De4oab0aGG1evlagIQOnnsqpBNqNIZ1Y1rFWR6aklcmuiqtOcIGGghlRfBMh
dOEG60Z06W+JdgO8h7lLx0jWNM1Fkfcj8sSXOUEG0z3jO0JpDiRPBhVsOYlA
a1Rmm0irJOsarD7dyXRhU8psISsG3vUQKr8HhB7kT7VK/7HOQqVz6pgD2xSp
yZEul240bAysge7bCO4brc7EkkiO1yFiu+5RrmiClwPexH2alX5NRMUaR8b1
qxxis1SlMjqA1iGkhWxI+MRXc3OXI9MDU5Pv3XFLklzQEehrWd0PpSU8FLTy
al22jj+5obMZk5YHeTfeQeQ2xNuZJvF6OfUOyamrRPUcMPYdl3MUHmIeoiNV
rdtGeSmKMuxP90xAs9kQRmRDgVk1WQJurhIFzhIWY7SozMrWZZlhAXAkUSNk
HIkB0z+DtW8VugzI/sIqIlKuHMOVQknUkErj7rs6OeFYJAtNlRgDMIKFycuw
vBEqunASDIMM2LHc0HF0HtvNyQXSsLkIfe5NAFIl5AJXQkiKVPQFhRLEUuD/
AO40OjPjKgEA

-->

</rfc>

