<?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-02" 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="July" day="23"/>

    
    
    

    <abstract>


<?line 42?>

<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 46?>

<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. Enroll, Grant, Revoke, and Status are authenticated with the baseline <spanx style="verb">Authorization: AEP &lt;jwt&gt;</spanx> form. Session credentials, once issued, <bcp14>MAY</bcp14> be used on commands that allow the selected credential type; Grant and Revoke themselves always use the baseline client assertion.</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. Agents <bcp14>MUST NOT</bcp14> invoke commands absent from this list.</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">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> be non-empty and contain 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><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>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, Status, and protected-resource authentication use a signed client assertion JWT. Inspect is unauthenticated and does not use a client assertion.</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. This document does not define a complete claim catalog. Claim names are strings and claim values are JSON values. 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>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.</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. Concrete session-credential documents <bcp14>MAY</bcp14> define additional fields 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 the <spanx style="verb">Idempotency-Key</spanx> HTTP header. This requirement applies to Enroll, Grant, and Revoke in this document.</t>

<t>Services <bcp14>MUST</bcp14> cache the response associated with <spanx style="verb">(agent_did, Idempotency-Key)</spanx> for at least 1 hour. If a request repeats the same key with the same authenticated Agent and the same 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 with a different 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> identifies the AEP error class using the form <spanx style="verb">urn:aep:error:&lt;code&gt;</spanx>. <spanx style="verb">title</spanx> <bcp14>MAY</bcp14> be omitted from production responses.</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>MUST</bcp14> implement constant-time-shaped response behavior for <spanx style="verb">not_recognized</spanx> paths so that observable latency does not distinguish a known Agent from an unknown Agent or a validly formatted assertion from a bad signature.</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> <bcp14>MAY</bcp14> carry per-grant-type configuration defined by a concrete session-credential document.</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 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 and additive fields they do not understand, unless local policy requires the Agent to refuse enrollment when a required capability is absent.</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>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>MUST</bcp14> shape timing so attackers cannot distinguish an unknown Agent, a bad signature, a wrong audience, a wrong operation, a replay, an expired assertion, or an archived identity.</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="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="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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
l4a65xTUEcZXad+HWiH1Uc9p8LNXooHQWBp+E311r97MEmoBf7NJ9PJasHw0
8W6vbToNRrmmXhdf1Ico3XqZXegDVVm9rFBTr0XlHQqiPukpbaq0YfP8vbO/
Q+3SvbhkqS0UtPEU+vd+8zKjL/qLV7oB+vd/+ezXrwi6YXY/QO/0l89+/eKd
G2fvLdw5vmz2f1qdzd7Z36Ek5p/fqfbl1bNfr3rln6+sUwnDXNN1cfNCky9c
LUlXafIa9eB6Z3+HmpAvTfWxuD6kbZF9jdnfoXzjQVS78Xp1G6+yXefXrLT4
vGvqjCRU39DE38mVJ3/Nooh71ymDeD2oe7/6hVQFICxW6IcLCxRutm0Y6+fN
pG3/4u9I2jaFejYaMvoKJA17KyANN/kSpDSCcykYC6ag4AZLRhSuTG2rTcGF
FhjGKddhKLL0VUqdRv+VEQQGOt4ngsAUtQql6HeKIHh/W4QHk2acPEOUkh7U
Q22FxvfGbad7nNgEiQZqtQ5Tn43flVZ6Jwda9PbvCNeiikz9CGdsBIozltFj
D3r4kxwyZBEjY+BPvxwlk1fYS9N749p6RZE6szMq8TVLuXW9xzNiQ1UbarUf
w5D4Ts6Aa+JbDCsW5+LzxrTufguh4p082KO59hkF/0m41ynkxdXstFpYZ5t5
ExZX7KAaVd3akDs3GDzNWuw6RSYWLhgb+gE2Ve3zlQePHh8m2+PbKF9hJRPs
FweiNvXp5aHgLezMB6Mzzx0MHkYuScUmcjrDmDmVZTVtdVzaEEnruDuycq4w
EOIMJtvVEr5cvHfi22tKCVnG76FW853kaaveSUBobImE79Ou+bq8u1RaSGqk
wKODR2OaZtPDGN9s3Keu1cXYLovfjQITqNO5LQzNLJijUcbSZW+JpVkpbarU
esTzFadkZXiLY96c35v2Ij3Dr7naJ4j9rhy9O1oiXM2rfBm27ZHiwRfAb8Xn
Hls7q3lW2NqRUiruVZYtzclgNyGcGIQwRL5xJHE1GdLUZJG+zherBd8zaYqY
onmOnVxPktsg4XMj+KD48d6vQJZAVJhRbBYOntU60LhTus+R3jM4OTdINaWc
2qCyv6O95AuLSkfH1Zd9Zqyl1ESVR0yVHVFmuAN6PHL0OEh8hZ1mTGu550iE
8diDKSjei2U6Wa7uCZcTKkGXeyEKqCmzLn3qwnK1Y9exrM7GyPhg0cdpcYqV
/c4Wts4sp5s1noPUWZGdp5hf2y0l6t5K/FhBsdOcUj4IDWg7w7Avlu7Rvoy7
wv5A4ba0U7p/V0qFl4BlGKK6XmBjdJBdfnp2uG9H7Fz12lCpbl60gLr0JUa+
PEWM1cDCZU3FrTNpmffg/s5dqkm41xs2I3EwZRKYqfLmVXyYM5guXTauJ0o4
CDYvjA1kvg0myu1IAJC2NxX2DwPFCN1G0m8zqFYdlaYexkWe8YO4B2nabVOa
Jj4P3HU2Nd2FuU9kXEkdC5SyfE09h5teOZMgYEGhSgnHnwRfsw+BbD0aL3SN
0sO9Wap0fNRXVupYh91ZUXQELICvAExuXLbWqgBKKIdReJZqP3A387T07V3P
K9eWV+vKqpblan0GbXG4R7MhAsYeQt04+yJcCcvbqshKukWFGzr7fLGkNDrl
y4xAK3iviDtp8+2Tz5sEe6pu79CVWdCKC5yhoaquFkgvZmET38w0wATJr6AD
7NRqxPp7JR2DnAbunfjXyQkz2GDfMftCGWrE5ispuTaMu73yuEPbVY8KrVHn
d2xcqQ4lfwDUPxtvL0mnxKy9lcxQK9FxDC7S5Vl051q+fGIAQ5l01O505qpX
BcLxtKJ6yp9tKJQAJAk7SaIjDZ6OCWDprKewPT0nd2m0ez08YL9YmR/IC2zp
v2gL2F2YggLXpj1lp4pd2kij7tOqzbX3RH2SzrJdPzr2WzbCnCsCLsUttDYN
L/ZrXSDcxDlshsanhYF8AeKGVodXsMg14ZBEjlQLLfaKNZ3K5InYRvGEqEWr
75GAGBd0RiqyU5RnvFz4DDBxNM9gzDporyCHniMxSbndndTJAKYg2I+w1vCS
TSELX4JcVs2e0kaIodrCqew39xO4Zq11bIUQl1qP2ZMUPFfWIZNdWr28zn7L
9MBjSYuwfwqgv5BwT9AyCB1y0zfY6NG5a5MjxTU9xIJi0nKLXMfm+RocKmmf
eVhtXr7SsiCm+HEqWAmwGxdgYV2axSVSt5cmFyKuxc7l1KW/fCytUS1QuNW2
B/4WqFuhrOr71MuZpnl9kTfBWXjgyxwjg+2eURlIZO8OIXkzWElaMBFgbZHW
IoCXZIGA0ye5VQ82pTh00vRQHsbC1j0lo7HB7DL92yoLpbmpIw5sd6EhR3pc
etFwMXAGem+js6rxfaENiOSYVkdk1z3KpfvPc20csUu70q8JqLhrR8Z9Vlx9
VemeYmQA7ZdFB8md6WP1xSn0op4xNPnZHbUkzgUTgYgEl9Bb+EZoKIi7oLi1
jj65pbOph44HafcZaGzSb52vM03i8zIS1WGPENWDYOyvKufIPESFJpQCRb5R
WoqsDOfTO5MSt2wsILChMIqatKWbi0SBQZnZGB0qk7JVWWbYqBZB1DAZB2JA
9M/g7FstNARgf2EFEWmri8EFISdqSKRR0HSbE4pFvND0TjDlALCBbhm27aip
g7zVFQNyvOQiNySKu0pMji+QNZibJQO26zKlpv8FnoSAFBVnOiFnZswF/g8v
ZMqlvAkBAA==

-->

</rfc>

