<?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-04" 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="September" day="04"/>

    
    
    

    <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>MUST</bcp14> return the current enrollment lifecycle representation. It <bcp14>MUST NOT</bcp14> treat
the request as renewal or replacement, rerun enrollment policy, reset lifecycle
timestamps, or replace the existing record. This requirement applies when the
request uses a new idempotency key and is distinct from replaying a request with
the same idempotency key.</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>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 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 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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
1MdS4P8AyvRQxzIkAQA=

-->

</rfc>

