<?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.17 (Ruby 3.3.3) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-tulshibagwale-pushpull-delivery-00" category="info" submissionType="IETF" xml:lang="en">
  <front>
    <title abbrev="pushpull">PushPull Based Security Event Token (SET) Delivery Using HTTP</title>

    <author initials="A." surname="Tulshibagwale" fullname="Atul Tulshibagwale">
      <organization>SGNL</organization>
      <address>
        <email>atul@sgnl.ai</email>
      </address>
    </author>

    <date year="2024" month="July" day="03"/>

    <area>sec</area>
    
    <keyword>JSON Web Token</keyword> <keyword>JWT</keyword> <keyword>Security Event Token</keyword> <keyword>SET</keyword> <keyword>Delivery</keyword> <keyword>JavaScript Object Notation</keyword> <keyword>JSON</keyword>

    <abstract>


<?line 51?>
<t>In situations where a transmitter of Security Event Tokens (SETs) to a network peer is also a receiver of SETs from the same peer, it is helpful to have an efficient way of sending an receiving SETs in one HTTP transaction. Using current mechanisms such as "Push-Based Delivery of Security Event Tokens (SETs) Using HTTP" or "Poll-Based Delivery of Security Event Tokens (SETs) Using HTTP" both require two or more HTTP connections to exchange SETs between peers. In many cases, such as when using the OpenID Shared Signals Framework (SSF), the situation where each entity is both a transmitter and receiver is getting increasingly common. In addition, this specification enables the transmission and reception of multiple SETs in one HTTP connection.</t>



    </abstract>



  </front>

  <middle>


<?line 53?>

<section anchor="introduction"><name>Introduction</name>
<t>Workloads that exchange SETs <xref target="RFC8417"/> with each other ("Transceivers") can do so efficiently using the protocol defined in this specification. Although this specification works along the lines of the DeliveryPush <xref target="RFC8935"/> and DeliveryPoll <xref target="RFC8936"/> specifications, it makes a few important additions:</t>

<t><list style="symbols">
  <t>A Transceiver initiating a communication can send multiple SETs in one HTTP connection to a Peer</t>
  <t>The Transceiver initiating communication can acknowledge previously received SETs in the same HTTP connection to the Peer</t>
  <t>The Peer responding to the communication can send multiple SETs in its response to a connection from the Transceiver</t>
  <t>The Peer responding to the communication can acknowledge previously received SETs in its response to the Transceiver</t>
</list></t>

</section>
<section anchor="notational-conventions"><name>Notational Conventions</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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>

</section>
<section anchor="terminology"><name>Terminology</name>

<dl>
  <dt>Transceiver</dt>
  <dd>
    <t>A networked workload that can act both as a transmitter of SETs and a receiver of SETs. It communicates with other trusted Transceivers to transmit and receive SETs using the protocol defined herein.</t>
  </dd>
  <dt>Peer</dt>
  <dd>
    <t>Another name for a Transceiver, used to signify the other end of the communication from a Transceiver.</t>
  </dd>
  <dt>Initiator</dt>
  <dd>
    <t>A Transceiver initiating communication with a Peer.</t>
  </dd>
  <dt>Responder</dt>
  <dd>
    <t>A Transceiver responding to communication from a Peer.</t>
  </dd>
  <dt>DeliveryPush</dt>
  <dd>
    <t>The IETF RFC titled "Push-Based Delivery of Security Event Tokens (SETs) Using HTTP" <xref target="RFC8935"/>.</t>
  </dd>
  <dt>DeliveryPoll</dt>
  <dd>
    <t>The IETF RFC titled "Poll-Based Delivery of Security Event Tokens (SETs) Using HTTP" <xref target="RFC8936"/>.</t>
  </dd>
</dl>

</section>
<section anchor="pushpull-endpoint"><name>Pushpull Endpoint</name>
<t>Each Transceiver that supports this specification MUST support a "Pushpull" endpoint. This endpoint MUST be capable of serving HTTP <xref target="RFC9110"/> requests. This endpoint MUST be TLS <xref target="RFC8446"/> enabled and MUST reject any communication not using TLS.</t>

</section>
<section anchor="communication-object"><name>Communication Object</name>
<t>A Communication Object is a JSON object <xref target="RFC8259"/>, and is a unit of communication used in this specification used both in requests and responses. When used in a request, the Initiator MAY have additional fields defined the later sections below. The common fields of this object are:</t>

<dl>
  <dt>sets</dt>
  <dd>
    <t>OPTIONAL. A JSON object containing key-value pairs in which the key of a field is a string that contains the <spanx style="verb">jti</spanx> value of the SET that is specified in the value of the field. This field MAY be omitted to indicate that no SETs are being delivered by the initiator in this communication.</t>
  </dd>
  <dt>ack</dt>
  <dd>
    <t>OPTIONAL. An array of strings, in which each string is the <spanx style="verb">jti</spanx> value of a previously received SET that is acknowledged in this object. This array MAY be empty or this field MAY be omitted to indicate that no previously received SETs are being acknowledged in this communication.</t>
  </dd>
  <dt>setErrs</dt>
  <dd>
    <t>OPTIONAL. A JSON object containing key-value pairs in which the key of a field is a string that contains the <spanx style="verb">jti</spanx> 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>

    <dl>
      <dt>err</dt>
      <dd>
        <t>OPTIONAL. The short reason why the specified SET failed to be processed.</t>
      </dd>
      <dt>description</dt>
      <dd>
        <t>OPTIONAL. An explanation of why the SET failed to be processed.</t>
      </dd>
    </dl>
  </dd>
</dl>

</section>
<section anchor="initiating-communication"><name>Initiating Communication</name>

<t>A Transceiver can initiate communication with a Peer in order to:</t>

<t><list style="symbols">
  <t>Acknowledge previously received SETs from the Peer.</t>
  <t>Send SETs to the Peer.</t>
  <t>Both acknowledge previously received SETs from the Peer and send SETs to the Peer.</t>
</list></t>

<t>To initiate communication, the Initiator makes a HTTP POST request to the Responder's Pushpull Endpoint <xref target="pushpull-endpoint"/>. The body of this request is of the content type "application/json". It contains a Communication Object <xref target="communication-object"/>, and the following additional field MAY be present:</t>

<dl>
  <dt>maxResponseEvents</dt>
  <dd>
    <t>OPTIONAL. A number which specifies the maximum number of events the Responder can include in its response to the Initiator. If this field is absent in the request, the Responder MAY include any number of events in the response.</t>
  </dd>
</dl>

</section>
<section anchor="response-communication"><name>Response Communication</name>

<t>A Responder MUST respond to a communication from an Initiator by sending an HTTP Response.</t>

<section anchor="success-response"><name>Success Response</name>
<t>If the Responder is successful in processing the request, it MUST return the HTTP status code 200 (OK). The response MUST have the content-type "application/json" and the response MUST include a Communication Object <xref target="communication-object"/>.</t>

</section>
<section anchor="error-response"><name>Error Response</name>
<t>The Responder MUST respond with an error response if it is unable to process the request. The error response MUST include the appropriate error code as described in Section 2.4 of DeliveryPush <xref target="RFC8935"/>.</t>

</section>
</section>
<section anchor="authn-and-authz"><name>Authentication and Authorization</name>
<t>The Initiator MUST verify the identity of the Responder by validating the TLS certification presented by the Responder, and verifying that it is the intended recipient of the request, before sending the Communication Object <xref target="communication-object"/>.</t>

<t>The Initiator MUST attempt to obtain the OAuth Protected Resource Metadata <xref target="OPRM"/> for the Responder endpoint. If such metadata is found, the Initiator MUST obtain an access token using the metadata. If no such metadata is found, then the Initiator MAY use any means to authorize itself to the Responder.</t>

<t>The Responder MUST verify the identity and authorization of the Initiator. The Responder MAY use OAuth Protected Resource Metadata <xref target="OPRM"/> for this purpose, but the Responder MAY use other means to authorize the Initiator, which are beyond the scope of this specification.</t>

</section>
<section anchor="delivery-reliability"><name>Delivery Reliability</name>
<t>A Transceiver MUST attempt to deliver any SETs it has previously attempted to deliver to a Peer until:
* It receives an acknowledgement through the <spanx style="verb">ack</spanx> value for that SET in a subsequent communication with the Peer
* It receives a <spanx style="verb">setErrs</spanx> object for that SET in a subsequent communication with the Peer
* 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 <spanx style="verb">ack</spanx> or <spanx style="verb">setErrs</spanx> in subsequent communications that were conducted for the maximum number of times. The maximum number of attempts MAY be set by the Transceiver for itself and SHOULD be communicated offline to the Peers.</t>

<t>If a Transceiver previously attempted to deliver a SET in a response to a Peer's request, the Transceiver MAY Initiate a request to the Peer in order to retry delivery of the SET. A Peer MUST be able to either provide <spanx style="verb">ack</spanx>s or <spanx style="verb">setErrs</spanx> for the same SETs either through requests or responses.</t>

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

<section anchor="authentication-and-authorization"><name>Authentication and Authorization</name>
<t>Transceivers MUST follow the procedures described in section <xref target="authn-and-authz"/> in order to securely authenticate and authorize Peers</t>

</section>
<section anchor="http-and-tls"><name>HTTP and TLS</name>
<t>Transceivers MUST use TLS <xref target="RFC8446"/> to communicate with Peers and is subject to the security considerations of HTTP <xref target="RFC9110"/> Section 17.</t>

</section>
<section anchor="denial-of-service"><name>Denial of Service</name>
<t>A Responder may be vulnerable to denial of service attacks wherein a large number of spurious requests need to be processed. Having efficient authorization mechanisms such as OAuth 2.0 <xref target="RFC6749"/> can mitigate such attacks by leveraging standard infrastructure that is designed to handle such attacks.</t>

</section>
</section>
<section anchor="privacy-considerations"><name>Privacy Considerations</name>
<t>SETs may contain confidential information, and Transceivers receiving SETs must be careful not to log such content or ensure that sensitive information from the SET is redacted before logging.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>
<t>This specification does not add any new IANA considerations.</t>

</section>


  </middle>

  <back>


    <references title='Normative References' anchor="sec-normative-references">



<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="RFC6749">
  <front>
    <title>The OAuth 2.0 Authorization Framework</title>
    <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
    <date month="October" year="2012"/>
    <abstract>
      <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6749"/>
  <seriesInfo name="DOI" value="10.17487/RFC6749"/>
</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>

<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="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="RFC8446">
  <front>
    <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
    <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
    <date month="August" year="2018"/>
    <abstract>
      <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
      <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8446"/>
  <seriesInfo name="DOI" value="10.17487/RFC8446"/>
</reference>

<reference anchor="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="RFC8936">
  <front>
    <title>Poll-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 series of Security Event Tokens (SETs) can be delivered to an intended recipient using HTTP POST over TLS initiated as a poll by the recipient. The specification also defines how delivery can be assured, subject to the SET Recipient's need for assurance.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8936"/>
  <seriesInfo name="DOI" value="10.17487/RFC8936"/>
</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="OPRM" target="https://datatracker.ietf.org/doc/draft-ietf-oauth-resource-metadata/">
  <front>
    <title>OAuth 2.0 Protected Resource Metadata</title>
    <author initials="M. B." surname="Jones" fullname="Michael B. Jones">
      <organization></organization>
    </author>
    <author initials="P." surname="Hunt" fullname="Phil Hunt">
      <organization></organization>
    </author>
    <author initials="A." surname="Parecki" fullname="Aaron Parecki">
      <organization></organization>
    </author>
    <date year="2024" month="May"/>
  </front>
</reference>


    </references>




  </back>

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

-->

</rfc>

