<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-deshpande-secevent-http-multi-set-push-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Push-multi-SET">Push-Based Delivery For Multiple Security Event Tokens (SET) Using HTTP</title>
    <seriesInfo name="Internet-Draft" value="draft-deshpande-secevent-http-multi-set-push-03"/>
    <author fullname="Apoorva Deshpande">
      <organization>Okta</organization>
      <address>
        <email>apoorva.deshpande@okta.com</email>
      </address>
    </author>
    <author fullname="Aaron Parecki">
      <organization>Okta</organization>
      <address>
        <email>aaron@parecki.com</email>
      </address>
    </author>
    <date year="2026" month="August" day="24"/>
    <area>Security</area>
    <workgroup>Security Events</workgroup>
    <keyword>security event</keyword>
    <keyword>secevent</keyword>
    <abstract>
      <?line 49?>

<t>This specification defines how multiple Security Event Tokens (SETs) can be
delivered to an intended recipient using HTTP POST over TLS.  The SETs
are transmitted in the body of an HTTP POST request to an endpoint
operated by the recipient, and the recipient indicates successful or
failed transmission via the HTTP response.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://appsdesh.github.io/draft-deshpande-secevent-http-multi-set-push/draft-deshpande-secevent-http-multi-set-push.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-deshpande-secevent-http-multi-set-push/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Security Events Working Group mailing list (<eref target="mailto:id-event@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/id-event/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/id-event/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/appsdesh/draft-deshpande-secevent-http-multi-set-push"/>.</t>
    </note>
  </front>
  <middle>
    <?line 57?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This specification defines a mechanism by which a Transmitter of a Security Event Token (SET) <xref target="RFC8417"/> can deliver multiple SETs to an intended SET Recipient via HTTP POST <xref target="RFC9110"/> over TLS in a single POST request. <xref target="RFC8935"/> focuses on the delivery of the single SET to the Recipient. When sending a large number of SETs, sending them one by one is inefficient. This specification defines a way to send batches of SETs in a single POST request for more efficient transport.</t>
      <t>Push-Based delivery for multiple SETs is intended to help in the following scenarios:</t>
      <ul spacing="normal">
        <li>
          <t>The Transmitter of the SET has multiple outstanding SETs to be communicated to the Recipient</t>
        </li>
        <li>
          <t>The Transmitter wants to reduce the number of outbound requests to the same Recipient to optimize performance and avoid being rate-limited when the number of SETs to be communicated is high</t>
        </li>
        <li>
          <t>The Recipient wants to optimize processing multiple SETs</t>
        </li>
        <li>
          <t>The Recipient wants to acknowledge or provide error responses to previously received SETs, but wants to do so asynchronously, rather than within the response to the same HTTP POST in which it received the SET</t>
        </li>
      </ul>
      <t>This specification will handle all the use cases and scenarios for the <xref target="RFC8935"/> and make it more extensible to support multiple SETs per one outbound POST request.</t>
      <t>Similar to <xref target="RFC8935"/>, this specification does not define how the Transmitter and Recipient exchange configuration metadata, such as endpoint URLs, cryptographic keys, and implementation constraints like buffer size limitations.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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="push-endpoint-to-receive-multiple-sets">
      <name>Push endpoint to receive multiple SETs</name>
      <t>Each Recipient that supports this specification <bcp14>MUST</bcp14> support a new push endpoint that receives multiple SETs in a single request. This endpoint <bcp14>MUST</bcp14> be capable of serving HTTP POST <xref target="RFC9110"/> requests. This endpoint <bcp14>MUST</bcp14> be TLS <xref target="RFC9846"/> enabled and <bcp14>MUST</bcp14> reject any communication not using TLS.
How the Transmitter obtains this endpoint from the Recipient is outside the scope of this specification.</t>
    </section>
    <section anchor="set-delivery-semantics">
      <name>SET Delivery Semantics</name>
      <t>In this SET delivery using HTTP over TLS, a Transmitter delivers zero or more SETs in a JavaScript Object Notation (JSON) <xref target="RFC8259"/> document
to the SET Recipient. The Recipient either acknowledges the successful receipt of the SETs or indicates failure in processing of one or more SETs in a JSON document to the Transmitter.</t>
      <t>The Transmitter <bcp14>SHOULD</bcp14> periodically send a request with zero SETs to allow the Recipient to respond back with an ack or err for previously transmitted SETs that have not yet been acknowledged.</t>
      <t>After successful (acknowledged) SET delivery, SET Transmitters are not required to retain or record SETs for retransmission. Once a SET is acknowledged, the SET Recipient <bcp14>SHALL</bcp14> be responsible for retention, if needed. Transmitters may also discard undelivered SETs under deployment-specific conditions, such as if they have not been acknowledged (success or failure) for too long a period of time or if an excessive amount of storage is needed to retain them. If a Transmitter receives an acknowledgement or error for a SET it has no record of, the Transmitter <bcp14>MUST</bcp14> ignore that acknowledgement or error.</t>
      <t>Upon receiving a SET, the SET Recipient reads the SET and validates it in the manner described in <xref section="2" sectionFormat="of" target="RFC8935"/>. The SET Recipient <bcp14>MUST</bcp14> acknowledge receipt to the SET Transmitter, and <bcp14>SHOULD</bcp14> do so in a timely fashion (e.g., milliseconds). The SET Recipient <bcp14>SHALL NOT</bcp14> use the event acknowledgement mechanism to report event errors other than those relating to the parsing and validation of the SET.</t>
      <section anchor="acknowledgement-for-all-sets">
        <name>Acknowledgement for all SETs</name>
        <t>A Recipient <bcp14>MUST</bcp14> ensure that it includes the <tt>jti</tt> value of each SET it receives, either in an ack or a setErrs value, to the Transmitter from which it received the SETs. A Transmitter <bcp14>SHOULD</bcp14> retry sending the same SET again if it was never responded to either in an ack value or in a setErrs value by a Recipient in a reasonable time period. A Transmitter <bcp14>MAY</bcp14> limit the number of times it retries sending a SET. A Transmitter <bcp14>MAY</bcp14> publish the retry time period and maximum number of retries to its peers, but such publication is outside the scope of this specification.</t>
      </section>
      <section anchor="uniqueness-of-sets">
        <name>Uniqueness of SETs</name>
        <t>A Transmitter <bcp14>MUST NOT</bcp14> send two SETs with the same <tt>jti</tt> value if the SET has been either acknowledged through ack value or produced an error indicated by a setErrs value. If a Transmitter wishes to re-send an event after it has received an error response through a setErrs value, then it <bcp14>MUST</bcp14> generate a new SET that has a new (and unique) jti value.</t>
        <t>This specification does not mandate replay protection on the Recipient. However, if a Recipient receives a SET with a <tt>jti</tt> value that it has already acknowledged or reported an error for, it <bcp14>MAY</bcp14> silently drop the duplicate rather than reprocessing it.</t>
      </section>
      <section anchor="transmitting-sets">
        <name>Transmitting SETs</name>
        <t>To transmit a SET to a SET Recipient, the SET Transmitter makes an HTTP POST request to a TLS-enabled HTTP endpoint provided by the SET Recipient. The body of this request is of the content type <tt>"application/secevents+json"</tt> (see <xref target="media-type-registration"/>) and the Accept header field <bcp14>MUST</bcp14> be <tt>"application/json"</tt>.</t>
        <t>A Transmitter may initiate communication with the Recipient in order to:</t>
        <ul spacing="normal">
          <li>
            <t>Send SETs to the Recipient</t>
          </li>
          <li>
            <t>Receive acknowledgement of SETs in response</t>
          </li>
        </ul>
        <t>The body of this request <bcp14>MUST</bcp14> contain the following fields:</t>
        <section anchor="sets">
          <name>The <tt>sets</tt> Field</name>
          <t><bcp14>REQUIRED</bcp14>. A JSON object containing key-value pairs in which the key of a field is a string that contains the <tt>jti</tt> claim of the SET that is specified in the value of the field. This field <bcp14>MAY</bcp14> be an empty object to indicate that no SETs are being delivered by the initiator in this communication. The maximum number of SETs in a push <bcp14>MAY</bcp14> be set by the Transmitter for itself and <bcp14>SHOULD</bcp14> be communicated offline to the Recipients.</t>
          <t>The following is a non-normative example of a request.</t>
          <artwork><![CDATA[
  POST /push HTTP/1.1
  Host: recipient.example.com
  Content-Type: application/secevents+json
  Accept: application/json

  {
    "sets": {
      "4d3559ec67504aaba65d40b0363faad8":
      "eyJhbGciOiJub25lIn0.
      eyJqdGkiOiI0ZDM1NTllYzY3NTA0YWFiYTY1ZDQwYjAzNjNmYWFkOCIsImlhdC
      I6MTQ1ODQ5NjQwNCwiaXNzIjoiaHR0cHM6Ly9zY2ltLmV4YW1wbGUuY29tIiwi
      YXVkIjpbImh0dHBzOi8vc2NpbS5leGFtcGxlLmNvbS9GZWVkcy85OGQ1MjQ2MW
      ZhNWJiYzg3OTU5M2I3NzU0IiwiaHR0cHM6Ly9zY2ltLmV4YW1wbGUuY29tL0Zl
      ZWRzLzVkNzYwNDUxNmIxZDA4NjQxZDc2NzZlZTciXSwiZXZlbnRzIjp7InVybj
      ppZXRmOnBhcmFtczpzY2ltOmV2ZW50OmNyZWF0ZSI6eyJyZWYiOiJodHRwczov
      L3NjaW0uZXhhbXBsZS5jb20vVXNlcnMvNDRmNjE0MmRmOTZiZDZhYjYxZTc1Mj
      FkOSIsImF0dHJpYnV0ZXMiOlsiaWQiLCJuYW1lIiwidXNlck5hbWUiLCJwYXNz
      d29yZCIsImVtYWlscyJdfX19.",
      "3d0c3cf797584bd193bd0fb1bd4e7d30":
      "eyJhbGciOiJub25lIn0.
      eyJqdGkiOiIzZDBjM2NmNzk3NTg0YmQxOTNiZDBmYjFiZDRlN2QzMCIsImlhdC
      I6MTQ1ODQ5NjAyNSwiaXNzIjoiaHR0cHM6Ly9zY2ltLmV4YW1wbGUuY29tIiwi
      YXVkIjpbImh0dHBzOi8vamh1Yi5leGFtcGxlLmNvbS9GZWVkcy85OGQ1MjQ2MW
      ZhNWJiYzg3OTU5M2I3NzU0IiwiaHR0cHM6Ly9qaHViLmV4YW1wbGUuY29tL0Zl
      ZWRzLzVkNzYwNDUxNmIxZDA4NjQxZDc2NzZlZTciXSwic3ViIjoiaHR0cHM6Ly
      9zY2ltLmV4YW1wbGUuY29tL1VzZXJzLzQ0ZjYxNDJkZjk2YmQ2YWI2MWU3NTIx
      ZDkiLCJldmVudHMiOnsidXJuOmlldGY6cGFyYW1zOnNjaW06ZXZlbnQ6cGFzc3
      dvcmRSZXNldCI6eyJpZCI6IjQ0ZjYxNDJkZjk2YmQ2YWI2MWU3NTIxZDkifSwi
      aHR0cHM6Ly9leGFtcGxlLmNvbS9zY2ltL2V2ZW50L3Bhc3N3b3JkUmVzZXRFeH
      QiOnsicmVzZXRBdHRlbXB0cyI6NX19fQ."
    }
  }
]]></artwork>
          <t><em>Figure 1: Example of SET Transmission</em></t>
          <t>In the above example, the Transmitter is sending 2 SETs to the Recipient.</t>
          <artwork><![CDATA[
  POST /push HTTP/1.1
  Host: recipient.example.com
  Content-Type: application/secevents+json
  Accept: application/json

  {
    "sets": {}
  }
]]></artwork>
          <t><em>Figure 2: Example of empty SET transmission</em></t>
          <t>In the above example, the Transmitter is sending zero SETs to the Recipient. This placeholder/empty request allows the Recipient to respond back with ack/err for previously transmitted SETs.</t>
          <t>The SET Transmitter <bcp14>MAY</bcp14> include in the request an Accept-Language header field to indicate to the SET Recipient the preferred language(s) in which to receive error message descriptions.</t>
        </section>
      </section>
      <section anchor="response-communication">
        <name>Response Communication</name>
        <t>A Recipient <bcp14>MUST</bcp14> respond to the communication by sending an HTTP response. The body of this response is of the content type <tt>"application/json"</tt>. It contains the following fields:</t>
        <t><tt>ack</tt>
          <bcp14>REQUIRED</bcp14>. An array of strings, in which each string is the <tt>jti</tt> value of a previously received SET that is acknowledged in this object. This array <bcp14>MAY</bcp14> be empty to indicate that no previously received SETs are being acknowledged in this communication.</t>
        <t><tt>setErrs</tt>
          <bcp14>OPTIONAL</bcp14>. A JSON object containing key-value pairs in which the key of a field is a string that contains the <tt>jti</tt> value of a previously received SET that the sender of the communication object was unable to process. The value of the field is a JSON object that has the following fields:</t>
        <t><tt>err</tt>
          <bcp14>REQUIRED</bcp14>. The short reason why the specified SET failed to be processed. Error codes are described in Section 2.4 of <xref target="RFC8935"/>. Note that the <tt>authentication_failed</tt> and <tt>access_denied</tt> codes described therein apply to the SET Transmission Request as a whole rather than to an individual SET, and therefore <bcp14>MUST NOT</bcp14> be used in a setErrs value; such failures <bcp14>MUST</bcp14> instead be reported using the <tt>err</tt> field described in <xref target="failure-response"/>.</t>
        <t><tt>description</tt>
          <bcp14>OPTIONAL</bcp14>. An explanation of why the SET failed to be processed.</t>
        <t>If the response contains a <tt>description</tt>, then the response <bcp14>MUST</bcp14> include a Content-Language header field whose value indicates the language of the error descriptions included in the response body. If the SET Recipient can provide error descriptions in multiple languages, they <bcp14>SHOULD</bcp14> choose the language to use according to the value of the Accept-Language header field sent by the SET Transmitter in the transmission request, as described in <xref section="12.5.4" sectionFormat="of" target="RFC9110"/>. If the SET Transmitter did not send an Accept-Language header field, or if the SET Recipient does not support any of the languages included in the header field, the SET Recipient <bcp14>MUST</bcp14> respond with messages that are understandable by an English-speaking person, as described in Section 4.5 of <xref target="RFC2277"/>.</t>
        <section anchor="success-response">
          <name>Success Response</name>
          <t>If the Recipient is successful in accepting the request, it <bcp14>MUST</bcp14> return the HTTP status code 202 (Accepted). The response <bcp14>MUST</bcp14> have the content-type <tt>"application/json"</tt>.</t>
          <artwork><![CDATA[
  HTTP/1.1 202 Accepted
  Content-type: application/json

  {
    "ack": [
      "3d0c3cf797584bd193bd0fb1bd4e7d30"
    ]
  }
]]></artwork>
          <t><em>Figure 3: Example of SET Transmission response with ack</em></t>
          <t>In the above example, the Recipient acknowledges one of the SETs it previously received. There are no errors reported by the Recipient.</t>
          <artwork><![CDATA[
  HTTP/1.1 202 Accepted
  Content-type: application/json

  {
     "ack": [
      "f52901c499611ef94540242ac12000322",
      "0636e274399711ef9454-0242ac120002",
      "d563c72479a04ff0ba415657fa5e2cb11"
     ],
     "setErrs": {
      "4d3559ec67504aaba65d40b0363faad8" : {
        "err": "invalid_key",
        "description": "Failed validation"
      }
     }
  }
]]></artwork>
          <t><em>Figure 4: Example of SET Transmission response, ack and errors</em></t>
          <t>In the above example, the Recipient acknowledges three of the SETs it previously received. There are errors reported by the Recipient for acknowledging one SET.</t>
        </section>
        <section anchor="failure-response">
          <name>Failure Response</name>
          <t>In the event of a general HTTP error condition that is not specific to an individual SET, the SET Recipient responds with the applicable HTTP status code, as defined in <xref section="15" sectionFormat="of" target="RFC9110"/>.</t>
          <t>When the SET Recipient rejects the request as a whole (for example, because the request is malformed, or the Transmitter is not authenticated or authorized), the SET Recipient <bcp14>SHOULD</bcp14> describe the failure using the problem details format defined in <xref target="RFC9457"/>. The Content-Type header field of such a response <bcp14>MUST</bcp14> be <tt>"application/problem+json"</tt>. In addition to the members defined in <xref target="RFC9457"/>, the response <bcp14>MAY</bcp14> include the following extension member:</t>
          <t><tt>err</tt>
            <bcp14>OPTIONAL</bcp14>. A short, machine-readable code identifying the reason the request failed. This code is not specific to any individual SET; it indicates a request-level or service-level failure.</t>
          <t>Note that failure responses in this specification are not specific to failures related to any individual SET. SET-specific errors are communicated in a success response payload as defined in the <xref target="success-response"/> Section.</t>
          <t>Example values for the <tt>err</tt> extension member that can indicate request-level failures include, but are not limited to:</t>
          <ul spacing="normal">
            <li>
              <t><tt>invalid_request</tt> (request is malformed)</t>
            </li>
            <li>
              <t><tt>authentication_failed</tt> (authentication token provided by the Transmitter is expired, revoked or invalid)</t>
            </li>
            <li>
              <t><tt>access_denied</tt> (the Transmitter does not have adequate permissions to invoke this API)</t>
            </li>
            <li>
              <t><tt>too_many_sets</tt> (the Transmitter included too many SETs in a single request; this is an indication for the Transmitter to make a request with a lower number of SETs or to comply with the maximum SET count that the Recipient published outside of this specification)  </t>
              <artwork><![CDATA[
HTTP/1.1 400 Bad Request
Content-Language: en-US
Content-Type: application/problem+json

{
  "type": "https://example.com/probs/authentication-failed",
  "title": "Authentication failed",
  "status": 400,
  "detail": "Access token has expired.",
  "err": "authentication_failed"
}
]]></artwork>
            </li>
          </ul>
          <t><em>Figure 5: Example Error Response (authentication_failed)</em></t>
          <t>The non-normative example above indicates that the access token included in the request is expired.</t>
          <section anchor="out-of-order-delivery">
            <name>Out of order delivery</name>
            <t>A Response may contain <tt>jti</tt> values in its ack or setErrs that do not correspond to the SETs received in the same Request to which the Response is being sent. They <bcp14>MAY</bcp14> consist of values received in previous Requests.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="authn-and-authz">
      <name>Authentication and Authorization</name>
      <t>The Transmitter <bcp14>MUST</bcp14> verify the identity of the Recipient by validating
the TLS certificate presented by the Recipient during the TLS handshake, and verifying that
it is the intended recipient of the request, before sending the SETs.</t>
      <t>How the Transmitter and Recipient agree on authorization of the request is out of scope of this document.</t>
      <t>This section describes server-side authentication of the Recipient by the Transmitter. Authentication of the Transmitter by the Recipient (e.g., via OAuth tokens, mutual TLS, or other mechanisms) is out of scope of this document and is expected to be defined by profiles of this specification.</t>
    </section>
    <section anchor="delivery-reliability">
      <name>Delivery Reliability</name>
      <t>A Transmitter <bcp14>MUST</bcp14> attempt to deliver any SETs it has previously attempted to deliver to a Recipient until:</t>
      <ul spacing="normal">
        <li>
          <t>It receives an acknowledgement through the ack value for that SET in a subsequent communication with the Recipient</t>
        </li>
        <li>
          <t>It receives a setErrs object for that SET in a subsequent communication with the Recipient</t>
        </li>
        <li>
          <t>It has attempted to deliver the SET a maximum number of times and has failed to communicate either due to communication errors or lack of inclusion in ack or setErrs in subsequent communications that were conducted for the maximum number of times. The maximum number of attempts <bcp14>MAY</bcp14> be set by the Transmitter for itself and <bcp14>SHOULD</bcp14> be communicated offline to the Recipients</t>
        </li>
      </ul>
      <t>Additionally consider Delivery Reliability aspects discussed in <xref section="4" sectionFormat="of" target="RFC8935"/>.</t>
      <section anchor="event-ordering-and-processing-guarantees">
        <name>Event Ordering and Processing Guarantees</name>
        <t>This specification is a transport efficiency mechanism and it does not address transactional aspects of the request. Every SET is an independent event in the request to the Recipient. The event ordering in the request does not imply any chronological dependence. For chronological dependence, the Recipient should look at the time-related event claims.</t>
        <t>A Transmitter should not assume the ordered processing of the SETs by the Recipient sub-systems. This specification does not add any transactional requirements on the Recipient.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The Security Considerations of <xref target="RFC8935"/>, <xref target="RFC9846"/>, and <xref section="17" sectionFormat="of" target="RFC9110"/> apply to this specification.</t>
      <section anchor="too-many-sets-in-the-request">
        <name>Too many SETs in the request</name>
        <t>This mechanism allows a Transmitter to send a large number of SETs in a single request. A malicious or misconfigured Transmitter could send an extremely large payload, attempting to exhaust memory or CPU resources on the Recipient during JSON parsing or SET validation.</t>
        <t>Recipients <bcp14>MUST</bcp14> protect themselves against such attacks. It is <bcp14>RECOMMENDED</bcp14> that Recipients establish and document a reasonable upper limit on both the number of SETs and the total size, in bytes, of the request body they will process in a single request. Limiting the number of SETs alone is insufficient, since a request containing few but excessively large SETs can still exhaust memory or CPU resources. The Transmitter <bcp14>MUST</bcp14> obey the maximum number of SETs and maximum request body size communicated by the Recipient. This will avoid any potential truncations/loss of information at the Recipient.</t>
        <t>If a Recipient receives a request exceeding either limit, it <bcp14>SHOULD</bcp14> reject the entire request with a <tt>413 Payload Too Large</tt> HTTP status code.</t>
        <t>How the Recipient conveys these upper limits to Transmitters is outside the scope of this specification (see <xref target="sets"/> for the <tt>sets</tt> field definition).</t>
      </section>
      <section anchor="authentication-and-authorization">
        <name>Authentication and Authorization</name>
        <t>The Transmitter <bcp14>MUST</bcp14> follow the procedures described in section <xref target="authn-and-authz"/> in order to securely authenticate and authorize the Recipient.</t>
      </section>
      <section anchor="http-and-tls">
        <name>HTTP and TLS</name>
        <t>The Transmitter <bcp14>MUST</bcp14> use TLS <xref target="RFC9846"/> to communicate with the Recipient and is subject to the security considerations of HTTP <xref section="17" sectionFormat="of" target="RFC9110"/>.</t>
        <t>Failure to properly validate the Recipient's TLS certificate could allow a Transmitter to send SETs to an impersonating endpoint, resulting in the disclosure of sensitive security event information to an unauthorized party.</t>
      </section>
      <section anchor="event-delivery-latency">
        <name>Event Delivery Latency</name>
        <t>The primary purpose of security event tokens is the timely communication of security-sensitive information. While this specification enables batching for efficiency, Transmitters <bcp14>MUST NOT</bcp14> unduly delay the transmission of events in an attempt to create larger batches.</t>
        <t>Delaying the transmission of a time-sensitive event, such as a credential compromise or session revocation, defeats the purpose of the protocol and provides an adversary with a larger window of opportunity to act.</t>
        <t>It is <bcp14>RECOMMENDED</bcp14> that Transmitters implement a batching policy that sends a pending batch of SETs when either of the following conditions is met:</t>
        <ul spacing="normal">
          <li>
            <t>The number of SETs in the batch reaches a configured size limit.</t>
          </li>
          <li>
            <t>A configured amount of time (e.g., 1-2 seconds) has elapsed since the oldest SET in the batch was generated.</t>
          </li>
        </ul>
        <t>This ensures a balance between network efficiency and the real-time nature of the communication.</t>
      </section>
      <section anchor="information-disclosure-in-error-responses">
        <name>Information Disclosure in Error Responses</name>
        <t>The <tt>setErrs</tt> is designed for debugging and provides valuable feedback. However, if implemented incorrectly, it can become a source of information leakage, disclosing internal details or enabling enumeration type attacks.</t>
        <t>It is <bcp14>RECOMMENDED</bcp14> that <tt>setErrs</tt> information be designed to be helpful without revealing sensitive information about internal architecture. For example, a <tt>description</tt> <bcp14>SHOULD NOT</bcp14> echo back tenant identifiers, internal user identifiers, or other values that could enable an attacker to enumerate valid accounts or infer details of the Recipient's internal architecture, such as stack traces or database identifiers.</t>
        <t>Additional security considerations in <xref section="5" sectionFormat="of" target="RFC8935"/>.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Privacy Considerations from <xref section="6" sectionFormat="of" target="RFC8935"/> apply.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers the <tt>application/secevents+json</tt> media type in the "Media Types" registry <xref target="IANA.media-types"/>.</t>
      <section anchor="media-type-registration">
        <name>Media Type Registration</name>
        <section anchor="registry-contents">
          <name>Registry Contents</name>
          <t>This section registers the <tt>application/secevents+json</tt> media type <xref target="RFC6838"/> in the "Media Types" registry <xref target="IANA.media-types"/> in the manner described in <xref target="RFC6838"/>. This media type is used to indicate that the content is a JSON <xref target="RFC8259"/> object carrying a batch of Security Event Tokens (SETs), as described in <xref target="sets"/>.</t>
          <ul spacing="normal">
            <li>
              <t>Type name: application</t>
            </li>
            <li>
              <t>Subtype name: secevents+json</t>
            </li>
            <li>
              <t>Required parameters: N/A</t>
            </li>
            <li>
              <t>Optional parameters: N/A</t>
            </li>
            <li>
              <t>Encoding considerations: 8bit; the content is a JSON object as defined in <xref target="RFC8259"/> and is always encoded using UTF-8</t>
            </li>
            <li>
              <t>Security considerations: See <xref target="security-considerations"/> of this document and <xref section="5" sectionFormat="of" target="RFC8935"/></t>
            </li>
            <li>
              <t>Interoperability considerations: N/A</t>
            </li>
            <li>
              <t>Published specification: <xref target="sets"/> of this document</t>
            </li>
            <li>
              <t>Applications that use this media type: Applications that deliver batches of Security Event Tokens (SETs) over HTTP</t>
            </li>
            <li>
              <t>Fragment identifier considerations: N/A</t>
            </li>
            <li>
              <t>Additional information:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Magic number(s): N/A</t>
                </li>
                <li>
                  <t>File extension(s): N/A</t>
                </li>
                <li>
                  <t>Macintosh file type code(s): N/A</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Person &amp; email address to contact for further information: Apoorva Deshpande, apoorva.deshpande@okta.com</t>
            </li>
            <li>
              <t>Intended usage: COMMON</t>
            </li>
            <li>
              <t>Restrictions on usage: none</t>
            </li>
            <li>
              <t>Author: Apoorva Deshpande, apoorva.deshpande@okta.com</t>
            </li>
            <li>
              <t>Change controller: IETF</t>
            </li>
            <li>
              <t>Provisional registration? No</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8417">
          <front>
            <title>Security Event Token (SET)</title>
            <author fullname="P. Hunt" initials="P." role="editor" surname="Hunt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="W. Denniss" initials="W." surname="Denniss"/>
            <author fullname="M. Ansari" initials="M." surname="Ansari"/>
            <date month="July" year="2018"/>
            <abstract>
              <t>This specification defines the Security Event Token (SET) data structure. A SET describes statements of fact from the perspective of an issuer about a subject. These statements of fact represent an event that occurred directly to or about a security subject, for example, a statement about the issuance or revocation of a token on behalf of a subject. This specification is intended to enable representing security- and identity-related events. A SET is a JSON Web Token (JWT), which can be optionally signed and/or encrypted. SETs can be distributed via protocols such as HTTP.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8417"/>
          <seriesInfo name="DOI" value="10.17487/RFC8417"/>
        </reference>
        <reference anchor="RFC8935">
          <front>
            <title>Push-Based Security Event Token (SET) Delivery Using HTTP</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="M. Jones" initials="M." role="editor" surname="Jones"/>
            <author fullname="M. Scurtescu" initials="M." surname="Scurtescu"/>
            <author fullname="M. Ansari" initials="M." surname="Ansari"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <date month="November" year="2020"/>
            <abstract>
              <t>This specification defines how a Security Event Token (SET) can be delivered to an intended recipient using HTTP POST over TLS. The SET is transmitted in the body of an HTTP POST request to an endpoint operated by the recipient, and the recipient indicates successful or failed transmission via the HTTP response.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8935"/>
          <seriesInfo name="DOI" value="10.17487/RFC8935"/>
        </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="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="RFC9846">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="July" year="2026"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document obsoletes RFC 8446, which specified TLS 1.3. This document obsoletes RFC 5246 (specifying TLS 1.2) and RFCs 5077, 6961, 7627, and 8422, all of which pertain to TLS 1.2 or earlier, and updates RFCs 5705 and 6066. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9846"/>
          <seriesInfo name="DOI" value="10.17487/RFC9846"/>
        </reference>
        <reference anchor="RFC9728">
          <front>
            <title>OAuth 2.0 Protected Resource Metadata</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <author fullname="A. Parecki" initials="A." surname="Parecki"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client or authorization server can use to obtain the information needed to interact with an OAuth 2.0 protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9728"/>
          <seriesInfo name="DOI" value="10.17487/RFC9728"/>
        </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="RFC2277">
          <front>
            <title>IETF Policy on Character Sets and Languages</title>
            <author fullname="H. Alvestrand" initials="H." surname="Alvestrand"/>
            <date month="January" year="1998"/>
            <abstract>
              <t>This document is the current policies being applied by the Internet Engineering Steering Group (IESG) towards the standardization efforts in the Internet Engineering Task Force (IETF) in order to help Internet protocols fulfill these requirements. 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="18"/>
          <seriesInfo name="RFC" value="2277"/>
          <seriesInfo name="DOI" value="10.17487/RFC2277"/>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </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 anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="IANA.media-types" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
      </references>
    </references>
    <?line 395?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to acknowledge the following individuals
who contributed ideas, feedback, and wording that shaped and formed the final specification:</t>
      <t>Atul Tulshibagwale, Yair Sarig, Yaron Sheffer.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
4G+8+fh8KvFKQ7Bq/wP/5FVIElwAAA==

-->

</rfc>
