<?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-03" 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="August" day="24"/>

    
    
    

    <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>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>, 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="August" day="24"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-kavian-agent-enrollment-protocol-03"/>
</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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

-->

</rfc>

