<?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-02" category="info" submissionType="IETF" xml:lang="en">
  <front>
    <title abbrev="pushpull">Push And Pull 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="05"/>

    <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 and 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 anchor="example"><name>Example</name>
<t>The following is a non-normative example of a Communication Object</t>

<figure title="Example of a Communication Object" anchor="fig-communication-object-example"><sourcecode type="json"><![CDATA[
{
  "sets": {
    "4d3559ec67504aaba65d40b0363faad8": 
    "eyJhbGciOiJub25lIn0.
    eyJqdGkiOiI0ZDM1NTllYzY3NTA0YWFiYTY1ZDQwYjAzNjNmYWFkOCIsImlhdC
    I6MTQ1ODQ5NjQwNCwiaXNzIjoiaHR0cHM6Ly9zY2ltLmV4YW1wbGUuY29tIiwi
    YXVkIjpbImh0dHBzOi8vc2NpbS5leGFtcGxlLmNvbS9GZWVkcy85OGQ1MjQ2MW
    ZhNWJiYzg3OTU5M2I3NzU0IiwiaHR0cHM6Ly9zY2ltLmV4YW1wbGUuY29tL0Zl
    ZWRzLzVkNzYwNDUxNmIxZDA4NjQxZDc2NzZlZTciXSwiZXZlbnRzIjp7InVybj
    ppZXRmOnBhcmFtczpzY2ltOmV2ZW50OmNyZWF0ZSI6eyJyZWYiOiJodHRwczov
    L3NjaW0uZXhhbXBsZS5jb20vVXNlcnMvNDRmNjE0MmRmOTZiZDZhYjYxZTc1Mj
    FkOSIsImF0dHJpYnV0ZXMiOlsiaWQiLCJuYW1lIiwidXNlck5hbWUiLCJwYXNz
    d29yZCIsImVtYWlscyJdfX19.",
    "3d0c3cf797584bd193bd0fb1bd4e7d30":
    "eyJhbGciOiJub25lIn0.
    eyJqdGkiOiIzZDBjM2NmNzk3NTg0YmQxOTNiZDBmYjFiZDRlN2QzMCIsImlhdC
    I6MTQ1ODQ5NjAyNSwiaXNzIjoiaHR0cHM6Ly9zY2ltLmV4YW1wbGUuY29tIiwi
    YXVkIjpbImh0dHBzOi8vamh1Yi5leGFtcGxlLmNvbS9GZWVkcy85OGQ1MjQ2MW
    ZhNWJiYzg3OTU5M2I3NzU0IiwiaHR0cHM6Ly9qaHViLmV4YW1wbGUuY29tL0Zl
    ZWRzLzVkNzYwNDUxNmIxZDA4NjQxZDc2NzZlZTciXSwic3ViIjoiaHR0cHM6Ly
    9zY2ltLmV4YW1wbGUuY29tL1VzZXJzLzQ0ZjYxNDJkZjk2YmQ2YWI2MWU3NTIx
    ZDkiLCJldmVudHMiOnsidXJuOmlldGY6cGFyYW1zOnNjaW06ZXZlbnQ6cGFzc3
    dvcmRSZXNldCI6eyJpZCI6IjQ0ZjYxNDJkZjk2YmQ2YWI2MWU3NTIxZDkifSwi
    aHR0cHM6Ly9leGFtcGxlLmNvbS9zY2ltL2V2ZW50L3Bhc3N3b3JkUmVzZXRFeH
    QiOnsicmVzZXRBdHRlbXB0cyI6NX19fQ."
  },
  "ack": [
    "f52901c4-3996-11ef-9454-0242ac120002",
    "0636e274-3997-11ef-9454-0242ac120002",
    "d563c724-79a0-4ff0-ba41-657fa5e2cb11"
  ],
  "setErrs": {
    "5c436b19-0958-4367-b408-2dd542606d3b" : {
      "err": "invalid subject",
      "description": "subject format not supported"
    }
  }
}
]]></sourcecode></figure>

</section>
</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. If this field is present, then the Responder MUST NOT include more events than the value of "maxResponseEvents" in its response to the specific request.</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="example-request-and-response"><name>Example Request and Response</name>
<t>The following is a non-normative example of a request and its corresponding response</t>

<section anchor="request"><name>Request</name>

<figure title="Example Pushpull request" anchor="fig-example-request"><sourcecode type="http"><![CDATA[
POST /pushpull-endpoint HTTP/1.1
Host: sharedsignals-transceiver.myorg.example
Content-type: application/json
Authorization: Bearer eyJraWQiOiIyMDIwXzEiLCJJhbGciOiJSUzI1NiJ9...

{
  "ack": [],
  "sets": {
    "4d3559ec67504aaba65d40b0363faad8": 
    "eyJhbGciOiJub25lIn0.
    eyJqdGkiOiI0ZDM1NTllYzY3NTA0YWFiYTY1ZDQwYjAzNjNmYWFkOCIsImlhdC
    I6MTQ1ODQ5NjQwNCwiaXNzIjoiaHR0cHM6Ly9zY2ltLmV4YW1wbGUuY29tIiwi
    YXVkIjpbImh0dHBzOi8vc2NpbS5leGFtcGxlLmNvbS9GZWVkcy85OGQ1MjQ2MW
    ZhNWJiYzg3OTU5M2I3NzU0IiwiaHR0cHM6Ly9zY2ltLmV4YW1wbGUuY29tL0Zl
    ZWRzLzVkNzYwNDUxNmIxZDA4NjQxZDc2NzZlZTciXSwiZXZlbnRzIjp7InVybj
    ppZXRmOnBhcmFtczpzY2ltOmV2ZW50OmNyZWF0ZSI6eyJyZWYiOiJodHRwczov
    L3NjaW0uZXhhbXBsZS5jb20vVXNlcnMvNDRmNjE0MmRmOTZiZDZhYjYxZTc1Mj
    FkOSIsImF0dHJpYnV0ZXMiOlsiaWQiLCJuYW1lIiwidXNlck5hbWUiLCJwYXNz
    d29yZCIsImVtYWlscyJdfX19.",
    "3d0c3cf797584bd193bd0fb1bd4e7d30":
    "eyJhbGciOiJub25lIn0.
    eyJqdGkiOiIzZDBjM2NmNzk3NTg0YmQxOTNiZDBmYjFiZDRlN2QzMCIsImlhdC
    I6MTQ1ODQ5NjAyNSwiaXNzIjoiaHR0cHM6Ly9zY2ltLmV4YW1wbGUuY29tIiwi
    YXVkIjpbImh0dHBzOi8vamh1Yi5leGFtcGxlLmNvbS9GZWVkcy85OGQ1MjQ2MW
    ZhNWJiYzg3OTU5M2I3NzU0IiwiaHR0cHM6Ly9qaHViLmV4YW1wbGUuY29tL0Zl
    ZWRzLzVkNzYwNDUxNmIxZDA4NjQxZDc2NzZlZTciXSwic3ViIjoiaHR0cHM6Ly
    9zY2ltLmV4YW1wbGUuY29tL1VzZXJzLzQ0ZjYxNDJkZjk2YmQ2YWI2MWU3NTIx
    ZDkiLCJldmVudHMiOnsidXJuOmlldGY6cGFyYW1zOnNjaW06ZXZlbnQ6cGFzc3
    dvcmRSZXNldCI6eyJpZCI6IjQ0ZjYxNDJkZjk2YmQ2YWI2MWU3NTIxZDkifSwi
    aHR0cHM6Ly9leGFtcGxlLmNvbS9zY2ltL2V2ZW50L3Bhc3N3b3JkUmVzZXRFeH
    QiOnsicmVzZXRBdHRlbXB0cyI6NX19fQ."
  },
  "setErrs": {
    "5c436b19-0958-4367-b408-2dd542606d3b" : {
      "err": "invalid subject",
      "description": "subject format not supported"
    }
  },
  "maxResponseEvents": 10
}
]]></sourcecode></figure>
<t>In the above example request, the Initiator does acknowledge any previous events. Delivers two SETs and reports an error on a previously received SET.</t>

</section>
<section anchor="response"><name>Response</name>
<t>The following is a non-normative example of a response:</t>

<figure title="Example Pushpull response" anchor="fig-example-response"><sourcecode type="http"><![CDATA[
HTTP/1.1 200 OK
Content-type: application/json

{
  "ack": [
    "3d0c3cf797584bd193bd0fb1bd4e7d30"
  ],
  "sets": {
    "756E69717565206964656E746966696572":
    "eyJ0eXAiOiJzZWNldmVudCtqd3QiLCJhbGciOiJIUzI1NiJ9Cg.
  eyJpc3MiOiJodHRwczovL2lkcC5leGFtcGxlLmNvbS8iLCJqdGkiOiI3NTZFNjk
  3MTc1NjUyMDY5NjQ2NTZFNzQ2OTY2Njk2NTcyIiwiaWF0IjoxNTA4MTg0ODQ1LC
  JhdWQiOiI2MzZDNjk2NTZFNzQ1RjY5NjQiLCJldmVudHMiOnsiaHR0cHM6Ly9zY
  2hlbWFzLm9wZW5pZC5uZXQvc2VjZXZlbnQvcmlzYy9ldmVudC10eXBlL2FjY291
  bnQtZGlzYWJsZWQiOnsic3ViamVjdCI6eyJzdWJqZWN0X3R5cGUiOiJpc3Mtc3V
  iIiwiaXNzIjoiaHR0cHM6Ly9pZHAuZXhhbXBsZS5jb20vIiwic3ViIjoiNzM3NT
  YyNkE2NTYzNzQifSwicmVhc29uIjoiaGlqYWNraW5nIn19fQ.
  Y4rXxMD406P2edv00cr9Wf3_XwNtLjB9n-jTqN1_lLc"
  }
}
]]></sourcecode></figure>
<t>In the above example, the Responder acknowledges one of the SETs it previously received and provides a SET to deliver to the initiator. There are no errors reported by the Responder.</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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
rViRtqryvHSO9HbgV8sLcA0ZhGCxAMtOYR3SnoJSIFTGFFwclA/xp/xCvQRQ
ifJIRrTVDConyQMGJ6BP1VpKdVDlKByjGR2VSv42j/lvRNHSEARuoQZu9Zlq
mBVHygW0kanFUE1gYKGEaol2HOAEcViRDEKN3RCfbIYs6apWHU0gUZ7pPN3U
wn6D0UGQL6oJ9i2KdGkkBcWcLVWJzE+1/Pyg0PSjVCFTQy6t2Nqa2hYtvmJA
i8/8JYBNGKlxP6yZDxOWrbYOMrKrH7Cj8yj6vzal72hVJp0Mo9Dh0Kc5XUH4
TyQ8ocogBjtMCOVR+6a4DyRyqRlVDE4hOoQrZF55IbgcISyK4P95VSFtyGIA
mLFKk/WessytM6AUU8o9tZE2SxljbgVpqiRrqU+5dkyVvS49GtC0WkuJ/yHJ
T5/I+Sv1IZWW6edWEClwAAibHXIBfTlQbcEhuDWM33//ncxBMuMN2Csh7JTa
5E0elpTqbq3RaDGnedQw65TatNlw66Zt1pq1KaXuVxipBrL19cy+dHifXye2
1fA6gVmRX+DDN/dyAR865uSsW+0NPW+8Gdd6w2NzPLrg4+G4Ojm7W43nx5ve
vOfDu0X/tCM6vjdzTyWJTrM7vKv2z+4avfndqne64vSpt+nMQ06v7k3nqtu8
Wbc2Y8uLb/zH+nhUXdmXD8nYasUdvlKnPuOnx0VnvrQ7/sx0r042ff71xbF6
S3vQ8NjlRexcvno3fu/FHrQuJ6PHhbP+2uhf3lW78zurO5IkJrPe6JqPN8+1
/vCh0bU6td7mwcQVvsfFjTnxFInR/eZm87jobcar3tnDa8/vvE7OjusgFvwF
fjYTbzJ0+NNgxSdPE88O7kHM5VEneFzbc0liuZw83fv94GTm+MD2ZilX7PuP
1mTUMPt+bz0ZXZiTQacJiofnMe5I6F7dr5xN+CJJ3NR6czoyk8nTbGY/nYjJ
oDG3LfPl8annOUH3pXd27/fm52bXh4WGEz45m8zG8/ErcAb6kCRgiwa4RReg
zOvlOHg0J09d3vcEp6M7fnN6nYD8HurGRaKLxswePeD71Rh2Th0LWq31RO7z
YzweecJZX7vTp2qrAmWNtKiaazo1Z3rUOmp8rdtutVWzXXNqV223zo7cmllq
/7jlbSZnJ/Ou1fN7mwVY3rM59u9e+8MeyHbij+cX8Pfe61l3m+7Hlne87g3+
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
NbdokUDT+B8nK6TZcjkAAA==

-->

</rfc>

