<?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-00" 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="June" day="27"/>

    
    
    

    <abstract>


<?line 47?>

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

<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 <spanx style="verb">did:web</spanx> identity, 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 authenticated AEP commands. The assertion binds the Agent identity, Service identity, command name, issuance time, expiration time, and replay identifier.</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>
</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 <spanx style="verb">did:web</spanx> 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="RFC8446"/>. 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, <spanx style="verb">did:web</spanx>, Inspect, Enroll, Grant, Revoke, and Status:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "aep_version": "1.0",
  "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/"
  },
  "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">identity.methods</spanx> <bcp14>MUST</bcp14> contain <spanx style="verb">did:web</spanx> when the Service accepts this document's identity method. Other DID methods are out of scope for this document.</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>

</section>
<section anchor="did-method-didweb"><name>DID Method: did:web</name>

<t>This document defines <spanx style="verb">did:web</spanx> <xref target="DID-WEB"/> as the only required identity method. A Service that supports this document advertises:</t>

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

<t>An Agent using this document identifies itself with a <spanx style="verb">did:web</spanx> URI. The Service resolves the DID to obtain the Agent's public verification key:</t>

<t><list style="symbols">
  <t><spanx style="verb">did:web:&lt;host&gt;</spanx> resolves to <spanx style="verb">https://&lt;host&gt;/.well-known/did.json</spanx>.</t>
  <t><spanx style="verb">did:web:&lt;host&gt;:&lt;path&gt;</spanx> resolves to <spanx style="verb">https://&lt;host&gt;/&lt;path&gt;/did.json</spanx>.</t>
</list></t>

<t>The resolved DID document <bcp14>MUST</bcp14> contain a verification method referenced by the JWT <spanx style="verb">kid</spanx> header. The verification method <bcp14>MUST</bcp14> expose a public key in a form the Service can validate against the selected JOSE signing algorithm.</t>

<t>Services <bcp14>MUST</bcp14> resolve <spanx style="verb">did:web</spanx> documents over HTTPS. Services <bcp14>SHOULD</bcp14> cache resolved DID documents and <bcp14>SHOULD</bcp14> honor upstream cache metadata. A default cache lifetime of 300 seconds is <bcp14>RECOMMENDED</bcp14> when no shorter upstream lifetime is provided.</t>

<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 / auth-param
reason-param         = "reason" BWS "=" BWS DQUOTE error-code DQUOTE
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> header field. The <spanx style="verb">AEP-challenge</spanx> form is used in the <spanx style="verb">WWW-Authenticate</spanx> header field. The <spanx style="verb">reason</spanx> parameter, when present, carries an AEP error code.</t>

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

<t>Enroll, Grant, Revoke, and Status use a signed client assertion JWT for Agent authentication. 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 command being invoked. The values defined by this document are <spanx style="verb">enroll</spanx>, <spanx style="verb">grant</spanx>, <spanx style="verb">revoke</spanx>, and <spanx style="verb">status</spanx>.</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">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>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": "false",
  "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>

</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[
{
  "owner_action_required": "false",
  "requirements_pending": [],
  "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><spanx style="verb">requirements_pending</spanx> lists claim names the Agent should provide to satisfy current Service requirements.</t>

<t><spanx style="verb">owner_action_required</spanx> is a JSON string boolean. A value of <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>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="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,
  "type": "https://aep.example/errors/not_recognized"
}
]]></sourcecode></figure>

<t>The <spanx style="verb">code</spanx> field is the canonical machine-readable AEP error code. <spanx style="verb">type</spanx> <bcp14>SHOULD</bcp14> identify stable documentation for the error class. <spanx style="verb">title</spanx> <bcp14>MAY</bcp14> be omitted from production responses.</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>
</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">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>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="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>

</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="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>
</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>
<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">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 a command. <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>The <spanx style="verb">did:web</spanx> method relies on the HTTPS origin that publishes the DID document. A Service that accepts an Agent's <spanx style="verb">did:web</spanx> identity trusts the corresponding web origin to publish the correct verification method. Services <bcp14>SHOULD</bcp14> cache DID documents for operational stability but <bcp14>MUST</bcp14> ensure that cache lifetimes do not prevent timely key replacement after compromise.</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>A <spanx style="verb">did:web</spanx> Agent identity can be correlatable if the same DID is reused across Services. Platforms or Agent operators that require unlinkability <bcp14>SHOULD</bcp14> use a distinct <spanx style="verb">did:web</spanx> URI and signing key per Service enrollment. The URI path component <bcp14>SHOULD</bcp14> be opaque and <bcp14>SHOULD NOT</bcp14> reveal the Agent's master identity, account identifier, or target Service.</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 <spanx style="verb">did:web</spanx> 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="RFC8446">
  <front>
    <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
    <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
    <date month="August" year="2018"/>
    <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 updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8446"/>
  <seriesInfo name="DOI" value="10.17487/RFC8446"/>
</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="DID-WEB" target="https://w3c-ccg.github.io/did-method-web/">
  <front>
    <title>The did:web Method Specification</title>
    <author >
      <organization>W3C Credentials Community Group</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


<reference anchor="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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
IPvIgaXMat1sUR/mSQ2jPtwKcApO64OXnRoHClgfmHAxdqtGskMT7k4oPzCN
yVoMh2VXUx07zEG3anmeRuo16UZo88oYn3ZwMLHHfDCFiXdsRPBzu8iGEXTA
6qcWlYVMcDboYTG9B9nexwtmM/u6AcRytD3TMzxEMo0GI1UPRaFDNW7yDH9K
nrELVtS2F6d6MUGz0HFVpwCh0xMYst7kiFKmXhaoO+bZ3KArCiFxb38fRgbA
A4BgIYETvQt755lE2x0VmSXuaGWPci6BQ5aXrE4A2Nm2GdtojV0mod/rX3+V
iA+w+wSUJAEc2+/s8ZGbGp/QMo61kCPwZHaY/S1YhqV85+Zn2zUeKsCXrAHV
cW5PXv0qQT1iwem94HVJ1jYuGAEHhoGcvUZuTTRsZuKHlnP4c7OFJX3leh8/
Ref4N5Ogz5ItHQyC4R8jFQvajUQV7vQyfopa3A2d8TthP1brwiYprcdBJ6Jx
HS+F4d7jI0fP1uQciXFpNFhuDLy+ttQ9M1o862Z4oReYRiMNuc0EnSNIL1Dj
aGJfyV9en7xwpwlOvIWkS0PKYoM9tiuuvf/iZKTaBM9k3gsqNqzkvWVZAKPa
rEHJNHrV4g4hhfMvt6HuonRE7Pp37dGa5oiaFL1h88AZ7qMpijZVEoNAmeBN
8MDn2WX8JG16REtlSEFvlsZ6rpEpTKD3Mx+cMSFug8YFMc6jOEzlBMCxkjNf
90477IfeCexNeHFCLyXyE/F2xjrUcWEOrBMPreqLH/767vXpiwkrlpMT7AGE
zU2qcNgnjYiG/gr7+/b9ie3sNXxs97bbYTYKbAY0ZwLHISj4FCipDr46oWOP
NWiWyS+X9SD4TJFvX5Pd+/D+psoVWhc7vg38cyXtDr76UnWMjGSPTQ11Z8Bz
WoJRa4qFUa4dT+zvPLXoHYbJQPX/g+EAPmpvuEd/e1qqO+rnQd9zGBVjskBZ
4u93ld+CQfRLME1+vqe+xUG/5r+898qg6yGZlamRJ4PgiQo6yWfOdCOouO93
Bu6jilp4E061bbg7gbHW2u+JcwqQa0FoMXY5W6bKFpYYdBG0dvTy/v37JPSd
9HbE0JooAiOop9WQuY5wjyG5WTJ2CyN9EsAUAozIWg7+jkLFaTC42fO+If4v
h4O9JyXkkSBGFnODkdrt8+fTdasB8Rg9fnBceO+YWS3LTT/Ld3QqopA9GIB2
QrQYFpBh/CSzM2IFGLkLOhQ6KCWID0SBZnHG2zSkvuQouzaNa/cEvejk1APw
aTo3l7F940iOd+3nfIFGlJh/+ARMFXwCI/L385aZRYfggaHFT+rxweG9L0B8
Jwd7zuqCzjtKeVdAe0krGmFXUaMlyK+gQeNkJ+IM2r/3CBVQ0qzRdJ044DyW
506h9Aff3vgVswcA1zWMJ7H9x4oGR0zKK77v9rmo0FRRFkBswfu4V9sVkBf6
q2iXgrk4I80eEXnMd2LboSkaJRPYLDHGoMkE9ozstfMeY8gqpvZYEU+ixPWM
6lalFxKxh4ukDerV2oSj9KpBvGZ8QrsIjQCReTKs7PEhplNL8E1LZLgNYOOK
jVRvplY3bWH+tcgMHXwqqjJuwzi3awC24nU+B3qnJPqx7hqal27g0cGj+4/v
Hz5+vL8vjpV18PAhP/ylybDxk/ljfT89NMnB7N40uT9/YJLH00c62Q/+eTKL
4SbogKcFPQBH9CCDt7Uj0amzR2rU4WITu/+YBrst151e+0+q2SRgF23kAW8H
1dkDsaF1WAydu0LULTn3IieFbgQKAFnWwV6xX/g5mgzWJRwNicgV8NKx077B
WJzxKeq7IvugzLqcLXtdycVmNTUVh6NgUL2EG1UUs2U+IL+hUJIycFeHpyvW
d51IbAYYU2VKId1tq4X0a0/9KJsJRB/WKlG0eADfAoR4w2FnRWhOdM0ZPmwG
i2JVVsa+79YPhJuXM9jFGfw5V/W5QU/BBNDTsxvyUIDBD6hFIcHMroymcBAr
YlvLWOGxLNuTElPDVhAIDol1AmsE9BDg8l8CMg8VjHhn4jzIXkY7s2edb5jB
OeZOU05wyt7HcVoyN9v2qAFda4bjS97oSk7SEU2sJPa8qCN5D0eg3zgzyM81
Ay7IopC1kZ1CA/1xbMYts2nW9JAFRZm8FQvWeiAcp6f3ieFSNMgJCyzm185Q
7+HqFB7yE8OH13sSruuh+5FYzZD5zJA9Z0MKUIH/RxQcMvEJcRK2ROFLtJba
zET7Oiq28XTmOsthSH+Ka5kI/Na2JUX/tNTcjsoFUccvAGanfKjqxv1ChYca
cr4fRZDguG2N0ofpCVsLgkhtuI3tAvaBgpLsqbK3qYOjN9QZfUDg/68jNu/I
gt0FPjI5BDbx+gc5zgY20H/UyydyInntsjrnQlHEc4y57uWlRjJwbgLql8Lx
yj4NXTSwyAnTHrZuY1kI8B4fbazXVSahvepf0dTMkUHSBrNaZIVaxi4W6jr1
DXB5FERIfhhGNYn1cJgm3zkviDJhikAnEidkpElaaDnPx+6zbg4si6LGrCAd
4dB8LNOHcBjaoYIwguuQDZ3aMG5ySrmWvSi300Q6Ts1qXULz2Tb5wWzH6mm5
1rA+MZ7eBpjRNVgQTGfts58bFbf2AV98VDdGra3+U/v4yJ5T2cmegZi6vXrm
ZnyNGixqVWcvY4ZLXJX0adZmhgqYdEl6gy6E8ztV3mvjocN1GgjKaSfGscff
Z2WV1fIYkBPnDOCDE9GufPhwp++OxnhTHLVNoBOlCgZsdF6CYhSex6OiJaf5
QVxmcPxPuhZ/b+siBDtk88yNRbBvCgrYYe1Hjkpc0BlrYcyYJi3EIPGO0fiE
ysheQVLA85GiQBJSyN0p+KRFAs4hQ9oyckTyzNASnP+lwUS8yCtPBrV2Xs/B
4MQH9zgeE0XXCLNHP3S9LWbLqiwwMy/KOCW50CE8OVcG9Md8igvjEPx43pOw
ipp20H8o5WN9a9dwqCpXZ5wgdhacsu/NdV4bMd/clCSCix+Hg53ZX/rO5z96
qSiO8jIIjAW+CapoVbjILe0CY4P1IrvnNEQQnAQYe6z6Cx1LTJwQkG6dEJDv
Vg7H5BJF2nr9N46HjzwDv4ucEHuKQjN7Q58kJ+RTIpV8MNQNYof0HJQ6PPq1
Ks61XjeBaI+CEZOGg3wfaXwWJoaR4CHK/cx4itYktjjcP3yY7D9IDh+fHhyO
9/fhf//RRuUWdbnQTqta9WU5YDYhIYrEd7mEpMGV+okOuzF4VZPeFoSswq8O
Z68IfZybKbM8QVypnNRDMTEjCgidyCon6irMq0UeeKkz9iDt4gDSAyjYNjCt
b/wGOWSlqwxszOBVIgZZYGK1f0xsXGOeP8ZrsiO7llHqTY1TRYvh+jFAv8f+
SXb5+IVgvg2lmemmvysAENA1fMeuTGJ1O/R3UGvHEKDt0S7IkAXETWDnEW0m
1hzBMymsAsEOC/z08SOlqMDOr9YcKG1UjrYz4wLleGZWWvVhqAtICSSqR656
WW7y1KXpA3uwmRGWObUywyQPYjDppZhJEM4nzo5pWQKHLVAYcUgG+gv3sErH
HnqaUuJzEpwa+jA5d2u1qRuvJKDk3TRJOU+m5PTlzGLR3ptwr/AkWTg2RZ+u
yB9BZOB4NcdJO1bNX80HzKNfUKjubrY638E6fxf+zG4wkt5d3txxH2PCUJhk
Tsv4ZBuAxvojmgA+pIoU9zB0znFN/453WGGItpCJ1RC9JyYKfwqDtkDh/ARh
V5ND3equaZpJMqTdb46JFJ92Twi2C3j9nJBgVqXxFMMLX6eHSVimto4gO55p
xda6GOYoqKIVALQrolny5rZRcr8Eqwlnm5qlvsjKytGYpBQ4IpPvPt+n7sv0
wWGhG0ziDdLqGLN/DwoT//Lnkhgv4pNpTAoz/A+RqW+3NjBm6FKbqCxQzTnv
AQZQ94CoC5feaDFBnD89avJvo2KJaEbWzlUvQPyEqVk0UanyUNpqGzjtPgSG
6RtyI95m/sMotEaYRc9pbn4WhxazNA1OZKMXRCa3xTEZrL3vWukcT8dRhYsI
DTEDrSG//jP0Tu8MBZSdj897OxOpS+8wo+BYnyKIQN+dJuiq9VhfrmQ5Zg1p
t/gFI8CMeHkFYfw+4cRXOscYC+My8AQKYeCndqAhFrPaNBsq0gIaRL6pUUdl
jBqSvicFXyayjDNpO4mNFjdan9HCB92FxAAHbD1CkY9dL7B4QNEEtWJpR94S
ephWWnzaIUzNBwofI74ecJwBszkfKk2uGtijBMDBwKZz6HCraz23nhOXftl1
lZAHxYcXZlHxIGaRHP7YCj4JsiY73ul2lCA7jCOJCXKjnGU+N3TypfPsDVVr
knJm5U6zDhSgXUVB2x43KrM2NtabvDhU6cSum570GfwsqOWFkCP0huXRzgZ+
arccnF6Bgi8DrCN9v6uV+EDCnbOpDAlajiy0IPAr0UBqczp7aj5xrpP7+0+Q
Wc9B0DVyKjHBKKNQSoe+t5l9V7Qr5/gKeCWydcDV0nOojvcO98tmjRBwvKhF
n+rKYE6qGCNrzDipm2jJ9nAhSBxGx0Pg/aPKX7tcekRaREOcFfe9HFvxmlpp
uABwNAex9F6nshqHF8IvWFFGjnRQJRAYcsRXj1Li0nbv7x+od4WtyWTSa1SQ
MD9v0A4yG0u5EzTGv96LT+/2mBPF0gsniCKr9WrsH4HZ2TAletlGOIM2ZA8A
7tLBX323PWTA/kJgWAMbJElZZOj2tcXNsC4al3yKw93UhCWbHErJ+esW2Ru+
bZmKy/Wj7qU9GOg1doAFEic2H1yyWDmPZO2K0wWZAbvi8bHneYmONpea7Sda
kwOIy2ak6APiSFSbPdz1CI2dW8h7OM/YJYFui/sgbK7Un/G8P5tFRd/k3JZj
EkLKRs4Oq0CMhb8zjMLiwjPiFWnLPDfK6bLN3FxcYk3uSd47EC9T9MnQOXsd
CGcq20V9y0jt4+MrQvQr9W41rUyea4V2S2IoHoP7Y0Di/jEIghIi7nQcy7il
GZ6sD72PbCjBDUPyzyQchQBvVoBWFyZNgrKNldoULtlGSlxyqTTrv7Ivn0WO
rPv79xyQXO27z/ZsuTFiF9eNg9zk83L9tlx9t5r9Tb6/2N0X+bk2BUCUBjw8
VFe2yFgahulQbTTRAiN86TtF8HMPXJ5l5XNeIl8e+6G9j6q3Z8QQ0Eh7JrnT
fYo5OlHH3cj9OMdHIAPbeia15ni4J7IJUhDlw4xL3gUln1ClpibOZeuQ9SzU
8R1vIFUZIBLrxtRpZBRcGwfjsacr5GkonPhRj8aha9ZH0uuVD3KvxvoeKdNt
FkEqgQ5ifIDz2OPCyAGf4S+XsFULGxQjXyg0hpmBkYiYiCmoi6zMbfVPyx+i
XgOId+o1qXRTSWWzKC2eTrlY37XTJSSl8Lve8imto1G05eB1Qwc+mODPFj0G
uBFrsm7qXih2WDqC0TNmNE6Gjux8krAYRNJa2DsZfDEQOnxfXE1UZ2CGQMip
bCt348oo0cEVq5g2eoX5+yV5ubm+GK3YQjkRVODEE65401pvhvRHTIDKS2gs
QoubWy/1OtS1re+LQNFBM0zKqtGo5cJtUwy4JG6HhU0Qt/3ZOAeIb7IakTtE
RNIcQNOL0ZNc0QQIAAmnlnLwonNWU7MYyUeu9IFzXpJiSdu4yZsM1myZbo8a
P1uWpURuse3DYKVjUwR4q6xFy1QmRbk1Ia7SJggjrNtFL7WAOSQ49UkB1q05
m3ma5bDB1+lUvrQZefFqWw7UuWVJi+dyA5zU5xOlwyTjoC6b79IX4Ko9CnW5
IPban0cc9PopycRefjYgTzaLZaeM0M6xzrjsG2uqXGcDy9LSGwm5rqK6cKH7
+tNOiXlk2tSROyoaukcu6d6Gv8hzm6AvExOrLjzICmbCRUmdkw+HPPLOvaZc
JzngaO5iVMTdJ8q5TmXj5xvCxqCfQRhHJvEk/dvMiQgpH1BK/01QWJnK3FCx
+uH1ISj+fK5BT+McWW6giV96ymVNR681Yzu5+igzvMPGmN2L25Pd/zZZDRi/
LxxoebRYEDYICcnZ2xw7Q7pHlvpsWVgLD6yx8WnOWZwsd+9LwEVqBXsyKRSX
UTw+f4Ht3JaIRUGbIQby6WJLobW2kfBt4uMUS/us/9wD07jJqPLVQB/gOuOz
EAqhjTWiaybEeN52evppPrKFc5xUkU4cY2L717cAxvcesCGo2K5OqCoPAl6C
GcNi7tbRED3Et0KPdYDciIO+HMpyuwYk1FzRuF0Z5RLmkQQFCFsJdkmUYEfm
+osAteKBmGZwxYmtitg3ZJDYd206H4/WS70udG5al/kG0PTd2+M6rEDTT/Ti
H7CBzO/evuL0vAmIrrE26zE0Gz8VT0uz/Wb8FFnXN19cfP1Uapp8w2Lr+OjV
EfrEsKQ1M9pahJcENXs9J6w1X8sZHD3ZosJnXRLWYYBeJLz/QJKp4BMlpX7x
xbUZujSdLAz3I17Exl+fS6I/i1eslr3dQ9V7bvbkyuB6PS6mJYpk6e1AvUK/
5ZXkCXMhM4mEJ9snFP/466sSjx2vrqkX3y0tFY97RdB7j0HbP9gCS7eDGFZk
kmpZFkJxd7eBCnZ2wp1hsI8tPveMAhmUVKbIYQ5XdF/KJ4DoLZZFM1h1Si7S
wEVfA7BORDVD6EeTZlqhS/F20FlRO2ZBAh3f1W0gg++TqkCA8U5NKbG3mTbR
Cy4OnmEg4tX7pBQiT0GDqNe2FHL/zy8kx4dTPh1Fwysn5GWX1KKg2BVPycw2
FQWwtJuhh89Va+Nq+KwPhUaqu6iD6/ruvASAlaVaBgPOSkFEF17dVRxCf2wV
V5kGVRnB43AA5bZ9jElOMdIUZTC5wqHJEusqa7vfhsDpFwsqFcUlcrML7RUh
Vgha6QbGwyhmltTDG+mh9ZNw0NqVmvT6CtdzdLX/WY3qQN/t6xtXzDCqbttL
RUce4eRMwVWnCTD8ytvluALRNp3JgDiEe48dfmczOAPhejv8ClTiLKJtv0DA
IOR4WPqZri8BDQ6du7jt4nVgd+mmIiSKuyH+8jQz9eJPmWnmo7JafONAjH5N
AIFe4KKx7AVMkCkNVTq7Q4V7xc2Jgx9C9iW8bdbD25DxIMCs1vNWmMUOFkQC
k0LL9oJWAZOxESfB9S6ir0NX0UVHoVuvXWkCxe5IPTds8JI2AfjW2Pp1wYQu
bI6Wxqo+ly4VJRb6NlRHfgxDcmJZFd+54up2FGlLA0ZVMnC1Rd6M1pFuUGUc
sSTSUzEqBrMDYbjKpRLVEaN+TgS9FkkasmtfhfWlUwBRmQyLctP2R12oE6yX
4kCR+t9GHVF3wqc3Me26xDnyGR7TDQA5rSDjDINWidh49KD7TqHYiVRvQ4+m
refoPCl0ZmNNtwxzF/qYiCsYeyWYTMf07YzxdjpRb082yvhK/ZUugemNMY7L
P/d3JJXFgOS4YllvJGRvS1uIzBWb7XVUdptaopZixqGVczv67nbwByJ1XwC5
h9TddS4hsbvK/S5xscMAKIkHGOrQpSPb/OOh0O6Kr68RF2u/BvKb6Lpn1z6L
xC18/qtIvHeet6B2PKee2CPY8Haf+FaD3ejtLdPPRvC+Lv5AKO6N6H4kX/Y7
14ZBZq4VNUOvrYqjhXwINhQpDVy5rsthS1y1cD5UQn9H/O/dVlBrAk+DCzBw
Bxe2zW5y8ID6rQQR4yNjVC2RUeJYwFvi3BmFs9uc9zfwjHtsJlA/Q6fMLXHY
NfwjYW7go8KXhb4T+GPozB5jffoLDAOWXZRZypXwvNMNLK8wFIFjJoZyZxCR
gy0jF8Z0CLcWFY4MiXbs9W/RwCiGxPPm7mKiIBlsQ5Nz5eqf90zZv9uLxpLj
/1+ltvmomGCSN/H0ccTYPytSZocKtDMa5seeuBaLkjv62hXvctQOcwmPOW+Y
3jWhKG/7Azncmzd12Rd5sqNP/+pNnfaGnezstTfkZKey+juEmfR1fH3YyU83
xZfc2GUn3uSnGyNLoMUuKPSGlLx1USMupmRH+5vCSd4F5/7t0JIwKnsXFlwT
PnLcih35xLiRneoZT4+circTaL7hH0igBQc9O3WxvgO2Ye8J2nDnRQh8OURf
9pDs8g5lrOXZQj06vFyqAUJecNxAbvQ5fP5Nki/Y289zPwSHmf/t2pjfWjA3
dtzYhYDjK7v6kiha5U3djWThwfgXu1yxg0Hnep9WePPOkmA77/75hPt+2tfS
ucshsAYV9JlR9I6/eNM7Xl1qCZ1DbDAXaYnF51rljzi0S6oguTJkIykv7q+n
8wdH3fu+RpyMtuNlV3lmJKWVMBOOHcKFDSdLN+xWpuy0kWoXRZuWGzkn3tQc
D4IltGyUoFsy5+ScZ2tK+mjHfl0CRUmp8fZF06BP5T210s+NWffU7qq5mnG7
EkhNOV+gy36gW3kJ/iSj0RN/gZdGzneUNsOADYM+55kJ6p1LR5Id4Ms+uxrW
lC5SFg4TTwCxskUmF2naK4p8xW9/QNBKY7LV7q0PLro2zukaTbWpJetjVlbM
KQnx4TU3cmnH9e/Nmt7aXTsKVcf1qZFBBin8FKnOxxnILbgsTYHX+iq5CSgs
TV3bIBVBOMKa3IpNoKCZZN7MmdGswPYGfcfWIt1ZXjMuLqP4NJt5BmyKuaCU
zm6kSlDP05fODGNpMjpPIJKhDRn6RCNqTw/jxrDmSwxdj8NSu/c/SJhowWlt
uyt5Xl+4s3N2JjvHp5xUbm5Kl36Lv3VNV9kjEPjM5tHhAzqmbx15i/Luyw+G
Sn5Wn7eBOYPh9Lo2fRYAl49v2xA+YQvFOuIBFVYr8dZTPTvHc86ZLjqRiq2w
xGE7wA8fcMCsD6a3T4KgelszcMi1Fdei9bgyfpzR1I6i3bqLMCkvsD+pmDAA
Lx+cosqB0jD6ma140t+LW6Rl9x3eEfiwdLuttGPSWLgSFcBP9SenrPqoqFDT
sNQ7bCVqW+UI9ibVDOo4UduHLUXpmBj+EsXhc5ZkEMQdaOSUN7br7iyYQc43
XTu84Ut4V2s6YLTCVi5ugHZSTdT3wrtfS8FEiWx25Co5pRx34PkRHY1H2drd
Ox674R108TOBQaDhivGAiUA58tG629wYNaOEjaFPv+aI4x/oWjdMsbIuHQ+A
xN1aq6ck6b3NFXArsTQCWqTNC8mdQ8UYYoBDRvL/O7kwXPdeT0spktF/mE4V
4+3tOR0GWDiLGJZn4eQ2jVbvKkFz7RFgL7Ckf5jg3nlUC+1dHj3l+uQmksIs
ykacX9BqDiJq7HunO3BsiCTRB8eYSgCEjd7gyf6bnaArhIKVBHFioJxgSWKJ
DLZokdnTbNJXtC0X1qsTdQJflRjTCCFKJowu0TJR0kluFu62bTIn8OLcJDXQ
ZxWF1gvQM2QmmjOxJJYChIJQP+JazVMOgh069RfZV1kLM3SXa/tLkD4xlJdy
wluRvL9zfbajQPdqYSJXgGGtCgwIIoosyHOlinwulUTPqhJG9Ahr7yUn9iOB
9nLnuVCSTAgnmxXnVtUKwgG1ECWgbnTXjCspi+BF/WodHAr77Wf3gLu6D1lc
iWlYdghMKeQydMHFJEFSR1hMZ6XJPvQ5aVhLcxMFktB+cZEDH5zeweigtq9N
0ZJd0ll1ify3dfG0KzAlOAYQXNraxZ7EfZFEoW3A3pWuxB7gGitY/JNvEOe9
oooRJRmEaB/gDdU9cZkxlMLSHsJu2KlCXSbuHhpBGthrgIFFhQTv12mXZMuY
ouR+Tvcqx5pfZDYNYUyrcpfdI3JyDojUJ/I3l3IuTqBV2MwtAiSXEdhZV9Ep
74igfnTHf0kWwkCgdOElUX3hVsKVLYJYjuemTpaN4ntTYdJLMCClABNvp1Zt
eHXNo96b1euwaJPdAXaBFliowGb38K2cm6a2fBrFJI4cFFjGqDL2LhAC0SFJ
RSEWt1e3Il8Wi0g2BIlNborCYEY9ImsgwByy2TrPNtANCOAyVHKkbKUvTOwn
geqSRVK3OOGGJGeDsP8gCAukSruqcUV1FPoKhNMaxArl+sk2EjC0JFNJO8/8
fWYSjn6JkBDkouDAOTm/2xLm/wE+4l2MQpAAAA==

-->

</rfc>

