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

    
    
    

    <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>.  A Service that returns <spanx style="verb">credential_id</spanx> in a Grant response <bcp14>MUST</bcp14> support Revoke with that <spanx style="verb">credential_id</spanx>.  A Service that does not support per-credential Revoke <bcp14>MUST</bcp14> omit <spanx style="verb">credential_id</spanx> from Grant responses.</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>REQUIRED</bcp14> and contains the granted scope strings.  The Service <bcp14>MAY</bcp14> return an empty array when the API key has no scope-limited authorization.</t>

<t><spanx style="verb">credential_id</spanx>, when present, is a stable identifier for per-key Revoke.  If present, the Service <bcp14>MUST</bcp14> support Revoke with this value.</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>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>To revoke one API key when the Service returned <spanx style="verb">credential_id</spanx>:</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 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="June" day="27"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-kavian-agent-enrollment-protocol-02"/>
</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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
GlNYlYWiz4UMYf8BYfkk+ZQiAAA=

-->

</rfc>

