<?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-aep-api-key-session-credential-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="AEP API Key">API-Key Session Credential Grant Type for the Agent Enrollment Protocol</title>

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

    <date year="2026" month="September" day="04"/>

    
    
    

    <abstract>


<?line 39?>

<t>This document defines the API-key session-credential grant type for the Agent Enrollment Protocol (AEP).  The grant type lets an AEP Service issue an opaque API key through the AEP Grant command for deployments that already operate header-based API-key authentication.</t>



    </abstract>



  </front>

  <middle>


<?line 43?>

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

<t>AEP session credentials allow a Service to issue a stateful credential after an Agent authenticates with a baseline AEP client assertion <xref target="AEP-CORE"/>.  This document defines the <spanx style="verb">api-key</spanx> grant type for Services that want to reuse existing API-key middleware while preserving AEP key possession as the issuance root.  Grant type request and response bodies are JSON objects <xref target="RFC8259"/> carried over HTTP semantics <xref target="RFC9110"/> as defined by AEP.</t>

<t>This grant type does not replace baseline AEP authentication.  Services that implement this grant type <bcp14>MUST</bcp14> continue to accept baseline AEP authentication on authenticated AEP commands.</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="grant-type"><name>Grant Type</name>

<t>The grant type identifier is:</t>

<figure><sourcecode type="text"><![CDATA[
api-key
]]></sourcecode></figure>

<t>A Service that enables this grant type lists <spanx style="verb">api-key</spanx> in <spanx style="verb">commands.grant_types</spanx> and lists <spanx style="verb">grant</spanx> and <spanx style="verb">revoke</spanx> in <spanx style="verb">commands.supported</spanx> in its AEP Inspect document.</t>

</section>
<section anchor="inspect-configuration"><name>Inspect Configuration</name>

<t>A Service <bcp14>MAY</bcp14> publish configuration under <spanx style="verb">commands.grant_types_config.api-key</spanx>:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "commands": {
    "grant_types": ["api-key"],
    "grant_types_config": {
      "api-key": {
        "default_lifetime_seconds": "2592000",
        "header_names": ["x-api-key"],
        "scopes_supported": ["read", "write"],
        "supports_per_credential_revoke": "true"
      }
    },
    "supported": ["enroll", "grant", "inspect", "revoke", "status"]
  }
}
]]></sourcecode></figure>

<t><spanx style="verb">default_lifetime_seconds</spanx> is an AEP-owned numeric value and is therefore represented as a JSON string.</t>

<t><spanx style="verb">header_names</spanx>, when present, lists HTTP header names the Service can issue for API-key presentation. Header names are case-insensitive on the wire, but Services <bcp14>SHOULD</bcp14> publish lowercase names. This field provides issuance guidance only; there is no default API-key header name. The Grant response <spanx style="verb">header</spanx> value is authoritative for each issued credential.</t>

<t><spanx style="verb">scopes_supported</spanx>, when present, lists Service-defined scope strings an Agent can request.</t>

<t><spanx style="verb">supports_per_credential_revoke</spanx> is a string boolean.  If absent, the default is <spanx style="verb">"false"</spanx>.  Every successful Grant response includes <spanx style="verb">credential_id</spanx>.  When this value is <spanx style="verb">"true"</spanx>, the Service <bcp14>MUST</bcp14> support a Revoke request containing both <spanx style="verb">grant_type</spanx> and that <spanx style="verb">credential_id</spanx>.  When this value is <spanx style="verb">"false"</spanx> or absent, the Agent <bcp14>MUST</bcp14> use grant-type or all-grant-types Revoke instead.</t>

</section>
<section anchor="grant-request"><name>Grant Request</name>

<t>The Agent invokes AEP Grant using baseline <spanx style="verb">Authorization: AEP &lt;jwt&gt;</spanx> authentication with <spanx style="verb">op</spanx> equal to <spanx style="verb">grant</spanx>.</t>

<figure><sourcecode type="json"><![CDATA[
{
  "grant_type": "api-key",
  "label": "agent-prod-read",
  "requested_scopes": ["read"]
}
]]></sourcecode></figure>

<t><spanx style="verb">grant_type</spanx> <bcp14>MUST</bcp14> be <spanx style="verb">api-key</spanx>.</t>

<t><spanx style="verb">label</spanx> is <bcp14>OPTIONAL</bcp14> and is an Agent-provided display label.  Services <bcp14>MAY</bcp14> ignore it.</t>

<t><spanx style="verb">requested_scopes</spanx> is <bcp14>OPTIONAL</bcp14>.  A Service <bcp14>MAY</bcp14> grant fewer scopes than requested.  Unsupported requested scopes <bcp14>MAY</bcp14> be omitted from the response <spanx style="verb">scopes</spanx> array.  If the Service cannot issue a useful credential for the requested scopes, it <bcp14>MUST</bcp14> return <spanx style="verb">invalid_request</spanx>.</t>

</section>
<section anchor="grant-response"><name>Grant Response</name>

<t>A successful Grant response is a JSON object:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "api_key": "aep_live_7Jm5Example",
  "credential_id": "key_01HZY8W7Q2F8J7D3P9G9Z1N6TT",
  "expires_at": "2026-12-01T00:00:00Z",
  "header": "x-api-key",
  "scopes": ["read"]
}
]]></sourcecode></figure>

<t><spanx style="verb">api_key</spanx> is <bcp14>REQUIRED</bcp14> and contains the opaque API key value. Services <bcp14>MUST</bcp14> generate API key values with at least 128 bits of entropy. Agents <bcp14>MUST</bcp14> treat the value as an opaque bearer secret.</t>

<t>API key values <bcp14>MUST</bcp14> match the following syntax. Numeric character values and repetition operators are defined by RFC 5234 <xref target="RFC5234"/>.</t>

<figure><sourcecode type="abnf"><![CDATA[
api-key-value = 1*(%x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E)
]]></sourcecode></figure>

<t>This syntax permits visible ASCII characters while excluding whitespace, control characters, double quote, comma, semicolon, and backslash. The restricted character set avoids header parsing ambiguity when API keys are presented in HTTP field values.</t>

<t><spanx style="verb">header</spanx> is <bcp14>REQUIRED</bcp14> and identifies the HTTP header used for presentation.  When <spanx style="verb">header_names</spanx> is advertised, the value <bcp14>MUST</bcp14> be one of the advertised names.</t>

<t><spanx style="verb">expires_at</spanx> is <bcp14>REQUIRED</bcp14> and is an RFC 3339 <xref target="RFC3339"/> timestamp for credential expiry.</t>

<t><spanx style="verb">scopes</spanx> is <bcp14>OPTIONAL</bcp14> and contains the granted scope strings when present.  A missing or <spanx style="verb">null</spanx> value means the API key has no scope-limited authorization.  The Service <bcp14>MAY</bcp14> return an empty array with the same meaning.</t>

<t><spanx style="verb">credential_id</spanx> is <bcp14>REQUIRED</bcp14> and is a stable Service-issued identifier for the issued API key. It follows the Service-wide uniqueness and non-reassignment requirements in the Core Grant command. It is not the API key and is not used for credential presentation. The Agent stores it with the credential and sends it only when targeting that credential in a Revoke request supported by the Service.</t>

<t>Services <bcp14>MUST</bcp14> issue expiring API keys.</t>

</section>
<section anchor="credential-presentation"><name>Credential Presentation</name>

<t>On later protected-resource requests, the Agent presents the API key in exactly the response-selected <spanx style="verb">header</spanx>. AEP does not standardize <spanx style="verb">x-api-key</spanx> or any other API-key header name. The following name is only the Service-selected value in this example:</t>

<t>A field value outside the response-selected <spanx style="verb">header</spanx> is not an API-key credential presentation, even if the value equals an issued API key. If the request contains no other AEP credential presentation, the Service returns the core <spanx style="verb">authentication_required</spanx> error. When the response-selected <spanx style="verb">header</spanx> is present but its value is malformed, expired, revoked, unknown, or bound to a different Agent, the Service returns <spanx style="verb">not_recognized</spanx>.</t>

<t>The dedicated <spanx style="verb">AEP-Authorization</spanx> carrier does not apply to this grant type because its normal presentation does not use <spanx style="verb">Authorization</spanx>. Agents <bcp14>MUST NOT</bcp14> synthesize a generic API-key scheme; they continue using the issued <spanx style="verb">header</spanx> exactly.</t>

<figure><sourcecode type="http-message"><![CDATA[
x-api-key: aep_live_7Jm5Example
]]></sourcecode></figure>

<t>Authenticated AEP command endpoints <bcp14>MUST</bcp14> continue to accept baseline AEP authentication.</t>

</section>
<section anchor="revoke"><name>Revoke</name>

<t>The Agent invokes AEP Revoke using baseline <spanx style="verb">Authorization: AEP &lt;jwt&gt;</spanx> authentication with <spanx style="verb">op</spanx> equal to <spanx style="verb">revoke</spanx>.</t>

<t>To revoke all API keys of this type for the authenticated Agent:</t>

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

<t>When the Service advertises per-credential Revoke, the Agent can revoke one API key:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "credential_id": "key_01HZY8W7Q2F8J7D3P9G9Z1N6TT",
  "grant_type": "api-key"
}
]]></sourcecode></figure>

<t>Revoke returns an empty JSON object on success.  The Service <bcp14>MUST</bcp14> return success regardless of whether a matching key existed.</t>

<t>To revoke all session credentials of every grant type, Agents use the core <spanx style="verb">all_grant_types</spanx> Revoke request.</t>

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

<t>This grant type uses the AEP error vocabulary defined by the core protocol. An API key presented in the response-selected <spanx style="verb">header</spanx> that is expired, malformed, revoked, unknown, or bound to a different Agent fails as <spanx style="verb">not_recognized</spanx>.</t>

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

<t>This document requests registration of <spanx style="verb">api-key</spanx> in the AEP Grant Types registry.</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Value</ttcol>
      <c>Grant Type</c>
      <c><spanx style="verb">api-key</spanx></c>
      <c>Description</c>
      <c>Opaque API key issued through AEP Grant</c>
      <c>Reference</c>
      <c>This document</c>
</texttable>

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

<t>API keys are bearer secrets.  Services <bcp14>MUST</bcp14> store only salted hashes or equivalent one-way verifiers.  Services <bcp14>MUST NOT</bcp14> log raw API-key values, and Services <bcp14>MUST</bcp14> support AEP Revoke for every advertised grant type.  Agents that suspect key disclosure <bcp14>SHOULD</bcp14> call AEP Revoke using baseline AEP authentication and then fall back to per-request signed client assertions until a new key is issued.</t>

<t>Services <bcp14>MUST</bcp14> validate only the configured API-key header for this grant type.  Services <bcp14>SHOULD</bcp14> reject ambiguous requests that present multiple API-key headers or multiple non-baseline bearer credentials when that ambiguity would affect authorization semantics.</t>

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

<t>API keys can become correlation handles if reused outside the issuing Service.  Agents <bcp14>MUST NOT</bcp14> present AEP-issued API keys to other Services.  Services <bcp14>MUST NOT</bcp14> log raw API-key values in ordinary logs or telemetry.</t>

</section>


  </middle>

  <back>



    <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="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="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="AEP-CORE" target="https://datatracker.ietf.org/doc/draft-kavian-agent-enrollment-protocol/">
  <front>
    <title>The Agent Enrollment Protocol</title>
    <author initials="N." surname="Kavian" fullname="N. Kavian">
      <organization></organization>
    </author>
    <date year="2026" month="August" day="27"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-kavian-agent-enrollment-protocol-04"/>
</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>





  </back>

<!-- ##markdown-source:
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
BVq6NWEdJgAA

-->

</rfc>

