rfc8935xml2.original.xml | rfc8935.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="utf-8"?> | <?xml version='1.0' encoding='UTF-8'?> | |||
<?xml-stylesheet type='text/xsl' href='http://xml2rfc.tools.ietf.org/authoring/r | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
fc2629.xslt' ?> | ||||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | ||||
<?rfc toc="yes"?> | ||||
<?rfc tocompact="yes"?> | ||||
<?rfc tocdepth="3"?> | ||||
<?rfc tocindent="yes"?> | ||||
<?rfc symrefs="yes"?> | ||||
<?rfc sortrefs="yes"?> | ||||
<?rfc comments="yes"?> | ||||
<?rfc inline="yes"?> | ||||
<?rfc compact="yes"?> | ||||
<?rfc subcompact="no"?> | ||||
<rfc category="std" docName="draft-ietf-secevent-http-push-14" ipr="trust200902" | ||||
> | ||||
<front> | ||||
<title abbrev="draft-ietf-secevent-http-push">Push-Based Security Event | ||||
Token (SET) Delivery Using HTTP</title> | ||||
<author fullname="Annabelle Backman" initials="A." surname="Backman" rol | ||||
e="editor"> | ||||
<organization abbrev="Amazon">Amazon</organization> | ||||
<address> | ||||
<email>richanna@amazon.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Michael B. Jones" initials="M." surname="Jones" role=" | ||||
editor"> | ||||
<organization abbrev="Microsoft">Microsoft</organization> | ||||
<address> | ||||
<email>mbj@microsoft.com</email> | ||||
<uri>https://self-issued.info/</uri> | ||||
</address> | ||||
</author> | ||||
<author fullname="Marius Scurtescu" initials="M.S." surname="Scurtescu"> | ||||
<organization abbrev="Coinbase">Coinbase</organization> | ||||
<address> | ||||
<email>marius.scurtescu@coinbase.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Morteza Ansari" initials="M." surname="Ansari"> | ||||
<organization abbrev="Cisco">Cisco</organization> | ||||
<address> | ||||
<email>morteza.ansari@cisco.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Anthony Nadalin" initials="A." surname="Nadalin"> | ||||
<organization abbrev="Microsoft">Microsoft</organization> | ||||
<address> | ||||
<email>tonynad@microsoft.com</email> | ||||
</address> | ||||
</author> | ||||
<date year="2020" month="June" day="26" /> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" | |||
docName="draft-ietf-secevent-http-push-14" ipr="trust200902" obsoletes="" | ||||
updates="" submissionType="IETF" xml:lang="en" tocInclude="true" | ||||
tocDepth="3" symRefs="true" sortRefs="true" version="3" consensus="yes" | ||||
number="8935"> | ||||
<area>Security</area> | <front> | |||
<workgroup>Security Events Working Group</workgroup> | <title abbrev="Push-Based SET Using HTTP">Push-Based Security Event Token (S | |||
<keyword>Internet-Draft</keyword> | ET) Delivery Using HTTP</title> | |||
<seriesInfo name="RFC" value="8935"/> | ||||
<author fullname="Annabelle Backman" initials="A." surname="Backman" role="e | ||||
ditor"> | ||||
<organization>Amazon</organization> | ||||
<address> | ||||
<email>richanna@amazon.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Michael B. Jones" initials="M." surname="Jones" role="edit | ||||
or"> | ||||
<organization>Microsoft</organization> | ||||
<address> | ||||
<email>mbj@microsoft.com</email> | ||||
<uri>https://self-issued.info/</uri> | ||||
</address> | ||||
</author> | ||||
<author fullname="Marius Scurtescu" initials="M." surname="Scurtescu"> | ||||
<organization>Coinbase</organization> | ||||
<address> | ||||
<email>marius.scurtescu@coinbase.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Morteza Ansari" initials="M." surname="Ansari"> | ||||
<organization>Independent</organization> | ||||
<address> | ||||
<email>morteza@sharppics.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Anthony Nadalin" initials="A." surname="Nadalin"> | ||||
<organization>Independent</organization> | ||||
<address> | ||||
<email>nadalin@prodigy.net</email> | ||||
</address> | ||||
</author> | ||||
<date year="2020" month="November"/> | ||||
<area>Security</area> | ||||
<workgroup>Security Events Working Group</workgroup> | ||||
<abstract> | <keyword>JSON Web Token</keyword> | |||
<t> | <keyword>JWT</keyword> | |||
This specification defines how a Security Event Token (SET) | <keyword>Security Event Token</keyword> | |||
can be delivered to an intended recipient using HTTP POST over T | <keyword>SET</keyword> | |||
LS. | <keyword>Delivery</keyword> | |||
The SET is transmitted in the body of an HTTP POST request to an | <keyword>JavaScript Object Notation</keyword> | |||
endpoint operated by the recipient, and the recipient indicates | <keyword>JSON</keyword> | |||
successful or failed transmission via the HTTP response. | ||||
</t> | ||||
</abstract> | ||||
</front> | ||||
<middle> | <abstract> | |||
<section anchor="intro" title="Introduction and Overview" toc="default"> | <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> | ||||
<middle> | ||||
<t> | <section anchor="intro" toc="default" numbered="true"> | |||
<name>Introduction and Overview</name> | ||||
<t> | ||||
This specification defines a mechanism by which a transmitter of a | This specification defines a mechanism by which a transmitter of a | |||
<xref target="RFC8417">Security Event Token (SET)</xref> can del | <xref target="RFC8417" format="default">Security Event Token (SE | |||
iver | T)</xref> can deliver | |||
the SET to an intended SET Recipient via <xref target="RFC7231"> | the SET to an intended SET Recipient via <xref target="RFC7231" | |||
HTTP POST</xref> | format="default">HTTP POST</xref> | |||
over TLS. | over TLS. | |||
This is an alternative SET delivery method to the one defined in | This is an alternative SET delivery method to the one defined in | |||
<xref target="I-D.ietf-secevent-http-poll"/>. | <xref target="RFC8936" format="default"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
Push-based SET delivery over HTTP POST is intended for scenarios where all of | Push-based SET delivery over HTTP POST is intended for scenarios where all of | |||
the following apply: | the following apply: | |||
<list style="symbols"> | </t> | |||
<t>The transmitter of the SET is capable of making outbound | <ul spacing="normal"> | |||
HTTP requests.</t> | <li>The transmitter of the SET is capable of making outbound HTTP reques | |||
<t> | ts.</li> | |||
<li> | ||||
The recipient is capable of hosting a TLS-enabled HTTP e ndpoint that is accessible | The recipient is capable of hosting a TLS-enabled HTTP e ndpoint that is accessible | |||
to the transmitter. | to the transmitter. | |||
</t> | </li> | |||
<t> | <li> | |||
The transmitter and recipient are willing to exchange data with one another. | The transmitter and recipient are willing to exchange data with one another. | |||
</t> | </li> | |||
</list> | </ul> | |||
<t> | ||||
In some scenarios, either push-based or poll-based delivery could be used, | In some scenarios, either push-based or poll-based delivery could be used, | |||
and in others, only one of them would be applicable. | and in others, only one of them would be applicable. | |||
</t> | </t> | |||
<t> | <t> | |||
A mechanism for exchanging configuration metadata such as endpoi nt URLs, | A mechanism for exchanging configuration metadata such as endpoi nt URLs, | |||
cryptographic keys, | cryptographic keys, | |||
and possible implementation constraints such as buffer size limit ations | and possible implementation constraints such as buffer size limit ations | |||
between the transmitter and recipient is | between the transmitter and recipient is | |||
out of scope for this specification. How SETs are defined and th e process | out of scope for this specification. How SETs are defined and th e process | |||
by which security events are identified for SET Recipients are s pecified | by which security events are identified for SET Recipients are s pecified | |||
in <xref target="RFC8417"/>. | in <xref target="RFC8417" format="default"/>. | |||
</t> | </t> | |||
<section anchor="notat" toc="default" numbered="true"> | ||||
<section anchor="notat" title="Notational Conventions" toc="default" | <name>Notational Conventions</name> | |||
> | <t> | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDE | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
D", | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
"MAY", and "OPTIONAL" in this document are to be interpreted | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
as | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | |||
described in BCP 14 <xref target="RFC2119"/> <xref target="R | to be interpreted as described in BCP 14 <xref target="RFC2119"/> | |||
FC8174"/> | <xref target="RFC8174"/> when, and only when, they appear in all capitals, | |||
when, and only when, they appear in all capitals, as shown h | as shown here. | |||
ere. | </t> | |||
</t> | <t> | |||
Throughout this document, all figures may contain spaces and extra | ||||
<t> | line wrapping for readability and due to space limitations. | |||
Throughout this document, all figures may contain spaces and ex | </t> | |||
tra | </section> | |||
line wrapping for readability and due to space limitations. | <section anchor="defs" toc="default" numbered="true"> | |||
</t> | <name>Definitions</name> | |||
</section> | <t> | |||
This specification utilizes the following terms defined in < | ||||
<section anchor="defs" title="Definitions" toc="default"> | xref target="RFC8417" format="default"/>: | |||
<t> | ||||
This specification utilizes the following terms defined in < | ||||
xref target="RFC8417"/>: | ||||
"Security Event Token (SET)", "SET Issuer", "SET Recipient", and "Event Payload", | "Security Event Token (SET)", "SET Issuer", "SET Recipient", and "Event Payload", | |||
as well as the term defined below: | as well as the term defined below: | |||
</t> | </t> | |||
<t> | ||||
<list style="hanging"> | ||||
<t hangText="SET Transmitter"> | ||||
An entity that delivers SETs in its possession to on | ||||
e or more SET | ||||
Recipients. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="Delivery" title="SET Delivery"> | <dl newline="false" spacing="normal"> | |||
<t> | <dt>SET Transmitter:</dt> | |||
<dd> | ||||
An entity that delivers SETs in its possession to one or more SET | ||||
Recipients. | ||||
</dd> | ||||
</dl> | ||||
</section> | ||||
</section> | ||||
<section anchor="Delivery" numbered="true" toc="default"> | ||||
<name>SET Delivery</name> | ||||
<t> | ||||
To deliver a SET to a given SET Recipient, the SET Transmitter | To deliver a SET to a given SET Recipient, the SET Transmitter | |||
makes a SET transmission request to the SET Recipient, with the SET | makes a SET Transmission Request to the SET Recipient, with the SET | |||
itself contained within the request. The SET Recipient replies t o | itself contained within the request. The SET Recipient replies t o | |||
this request with a response either acknowledging successful | this request with a response either acknowledging successful | |||
transmission of the SET or indicating that an error occurred | transmission of the SET or indicating that an error occurred | |||
while receiving, parsing, and/or validating the SET. | while receiving, parsing, and/or validating the SET. | |||
</t> | </t> | |||
<t> | <t> | |||
Upon receipt of a SET, the SET Recipient SHALL validate that all | Upon receipt of a SET, the SET Recipient <bcp14>SHALL</bcp14> va | |||
of | lidate that all of | |||
the following are true: | the following are true: | |||
<list style="symbols"> | </t> | |||
<t>The SET Recipient can parse the SET.</t> | <ul spacing="normal"> | |||
<t> | <li>The SET Recipient can parse the SET.</li> | |||
<li> | ||||
The SET is authentic (i.e., it was issued by the issuer | The SET is authentic (i.e., it was issued by the issuer | |||
specified within the SET, | specified within the SET, | |||
and if signed, was signed by a key belonging to the issue r). | and if signed, was signed by a key belonging to the issue r). | |||
</t> | </li> | |||
<t> | <li> | |||
The SET Recipient is identified as an intended audience of | The SET Recipient is identified as an intended audience of | |||
the SET. | the SET. | |||
</t> | </li> | |||
<t> | <li> | |||
The SET Issuer is recognized as an issuer that the SET R ecipient | The SET Issuer is recognized as an issuer that the SET R ecipient | |||
is willing to receive SETs from (e.g., the issuer is lis ted as allowed | is willing to receive SETs from (e.g., the issuer is lis ted as allowed | |||
by the SET Recipient). | by the SET Recipient). | |||
</t> | </li> | |||
<t> | <li> | |||
The SET Recipient is willing to accept this SET from this S ET Transmitter | The SET Recipient is willing to accept this SET from this S ET Transmitter | |||
(e.g., the SET Transmitter is expected to send SETs | (e.g., the SET Transmitter is expected to send SETs | |||
with the issuer and subject of the SET in question). | with the issuer and subject of the SET in question). | |||
</t> | </li> | |||
</list> | </ul> | |||
</t> | ||||
<t> | <t> | |||
The mechanisms by which the SET Recipient performs this validati on | The mechanisms by which the SET Recipient performs this validati on | |||
are out of scope for this document. SET parsing, issuer identifi cation, | are out of scope for this document. SET parsing, issuer identifi cation, | |||
and audience identification are defined in <xref target="RFC8417" />. | and audience identification are defined in <xref target="RFC8417" format="default"/>. | |||
The mechanism for validating the authenticity of a SET is deploy ment | The mechanism for validating the authenticity of a SET is deploy ment | |||
specific, and may vary depending on the authentication mechanism | specific and may vary depending on the authentication mechanisms | |||
s in | in | |||
use, and whether the SET is signed and/or encrypted (See <xref t | use and whether the SET is signed and/or encrypted (See <xref ta | |||
arget="aa"/>). | rget="aa" format="default"/>). | |||
</t> | </t> | |||
<t> | <t> | |||
SET Transmitters MAY transmit SETs issued by another entity. The | SET Transmitters <bcp14>MAY</bcp14> transmit SETs issued by anot | |||
SET | her entity. The SET | |||
Recipient may accept or reject (i.e., return an error response s uch as | Recipient may accept or reject (i.e., return an error response s uch as | |||
<spanx style="verb">access_denied</spanx>) a SET at its own disc | <tt>access_denied</tt>) a SET at its own discretion. | |||
retion. | </t> | |||
</t> | <t> | |||
<t> | ||||
The SET Recipient persists the SET in a way that | The SET Recipient persists the SET in a way that | |||
is sufficient to meet the SET Recipient's own reliability requir ements. | is sufficient to meet the SET Recipient's own reliability requir ements. | |||
The level and method of retention of SETs | The level and method of retention of SETs | |||
by SET Recipients is out of scope of this specification. | by SET Recipients is out of scope of this specification. | |||
Once the SET has been validated and persisted, the SET Recipient SHOULD | Once the SET has been validated and persisted, the SET Recipient <bcp14>SHOULD</bcp14> | |||
immediately return a response indicating that the SET was succes sfully | immediately return a response indicating that the SET was succes sfully | |||
delivered. The SET Recipient SHOULD NOT perform further processi ng of the SET | delivered. The SET Recipient <bcp14>SHOULD NOT</bcp14> perform f urther processing of the SET | |||
beyond the required validation steps prior to sending this respon se. | beyond the required validation steps prior to sending this respon se. | |||
Any additional steps SHOULD be executed asynchronously from deli very | Any additional steps <bcp14>SHOULD</bcp14> be executed asynchron ously from delivery | |||
to minimize the time the SET Transmitter is waiting for a respons e. | to minimize the time the SET Transmitter is waiting for a respons e. | |||
</t> | </t> | |||
<t> | <t> | |||
The SET Transmitter MAY transmit the same SET to the SET Recipie | The SET Transmitter <bcp14>MAY</bcp14> transmit the same SET to | |||
nt multiple | the SET Recipient multiple | |||
times, regardless of the response from the SET Recipient. The SE T Recipient | times, regardless of the response from the SET Recipient. The SE T Recipient | |||
MUST respond as it would if the SET had not been previously rece | <bcp14>MUST</bcp14> respond as it would if the SET had not been | |||
ived by the | previously received by the | |||
SET Recipient. The SET Recipient MUST NOT expect or depend on a | SET Recipient. The SET Recipient <bcp14>MUST NOT</bcp14> expect | |||
SET Transmitter | or depend on a SET Transmitter | |||
to re-transmit a SET or otherwise make a SET available to the SE | to retransmit a SET or otherwise make a SET available to the SET | |||
T Recipient | Recipient | |||
once the SET Recipient acknowledges that it was received success fully. | once the SET Recipient acknowledges that it was received success fully. | |||
</t> | </t> | |||
<t> | <t> | |||
The SET Transmitter should not re-transmit a SET unless the SET | The SET Transmitter should not retransmit a SET unless the SET T | |||
Transmitter | ransmitter | |||
suspects that previous transmissions may have failed due to pote ntially | suspects that previous transmissions may have failed due to pote ntially | |||
recoverable errors (such as network outage or temporary service interruption at | recoverable errors (such as network outage or temporary service interruption at | |||
either the SET Transmitter or SET Recipient). In all other cases , the SET | either the SET Transmitter or SET Recipient). In all other cases , the SET | |||
Transmitter SHOULD NOT re-transmit a SET. The SET | Transmitter <bcp14>SHOULD NOT</bcp14> retransmit a SET. The SET | |||
Transmitter SHOULD delay retransmission for an appropriate amoun | Transmitter <bcp14>SHOULD</bcp14> delay retransmission for an ap | |||
t of time | propriate amount of time | |||
to avoid overwhelming the SET Recipient (see <xref target="relia | to avoid overwhelming the SET Recipient (see <xref target="relia | |||
bility"/>). | bility" format="default"/>). | |||
</t> | </t> | |||
<section anchor="httpPost" numbered="true" toc="default"> | ||||
<section anchor="httpPost" title="Transmitting a SET"> | <name>Transmitting a SET</name> | |||
<t> | ||||
<t> | ||||
To transmit a SET to a SET Recipient, the SET Transmitter ma kes | To transmit a SET to a SET Recipient, the SET Transmitter ma kes | |||
an HTTP POST request to a TLS-enabled HTTP endpoint provided by the SET Recipient. The | an HTTP POST request to a TLS-enabled HTTP endpoint provided by the SET Recipient. The | |||
<spanx style="verb">Content-Type</spanx> header field of thi | <tt>Content-Type</tt> header field of this request <bcp14>MU | |||
s request MUST | ST</bcp14> | |||
be <spanx style="verb">application/secevent+jwt</spanx> as d | be <tt>application/secevent+jwt</tt> as defined in | |||
efined in | Sections <xref target="RFC8417" | |||
Sections 2.3 and 7.2 of <xref target="RFC8417"/>, and the | sectionFormat="bare" section="2.3"/> and <xref target="RFC841 | |||
<spanx style="verb">Accept</spanx> header field MUST be <spa | 7" | |||
nx style="verb">application/json</spanx>. The | sectionFormat="bare" section="7.2"/> of <xref target="RFC8417 | |||
request body MUST consist of the SET itself, represented as | " | |||
a | sectionFormat="bare"/>, and the | |||
<xref target="RFC7519">JWT</xref>. | <tt>Accept</tt> header field <bcp14>MUST</bcp14> be <tt>appl | |||
</t> | ication/json</tt>. The | |||
<t> | request body <bcp14>MUST</bcp14> consist of the SET itself, | |||
The SET Transmitter MAY include in the request an <spanx sty | represented as a | |||
le="verb">Accept-Language</spanx> | <xref target="RFC7519" format="default">JSON Web Token (JWT) | |||
</xref>. | ||||
</t> | ||||
<t> | ||||
The SET Transmitter <bcp14>MAY</bcp14> include in the reques | ||||
t an <tt>Accept-Language</tt> | ||||
header field to indicate to the SET Recipient the preferred language(s) in which to | header field to indicate to the SET Recipient the preferred language(s) in which to | |||
receive error messages. | receive error messages. | |||
</t> | </t> | |||
<t> | <t> | |||
The mechanisms by which the SET Transmitter determines the H TTP endpoint to | The mechanisms by which the SET Transmitter determines the H TTP endpoint to | |||
use when transmitting a SET to a given SET Recipient are not defined by this | use when transmitting a SET to a given SET Recipient are not defined by this | |||
specification and are deployment specific. | specification and are deployment specific. | |||
</t> | </t> | |||
<figure align="left" anchor="postSet" title="Example SET Transmi | <t keepWithNext="true"> | |||
ssion Request"> | The following is a non-normative example of a SET Transm | |||
<preamble> | ission Request: | |||
The following is a non-normative example of a SET transm | </t> | |||
ission request: | <figure anchor="postSet"> | |||
</preamble> | <name>Example SET Transmission Request</name> | |||
<artwork><![CDATA[ | ||||
<sourcecode name="" type="http-message"><![CDATA[ | ||||
POST /Events HTTP/1.1 | POST /Events HTTP/1.1 | |||
Host: notify.rp.example.com | Host: notify.rp.example.com | |||
Accept: application/json | Accept: application/json | |||
Accept-Language: en-US, en;q=0.5 | Accept-Language: en-US, en;q=0.5 | |||
Content-Type: application/secevent+jwt | Content-Type: application/secevent+jwt | |||
eyJ0eXAiOiJzZWNldmVudCtqd3QiLCJhbGciOiJIUzI1NiJ9Cg | eyJ0eXAiOiJzZWNldmVudCtqd3QiLCJhbGciOiJIUzI1NiJ9Cg | |||
. | . | |||
eyJpc3MiOiJodHRwczovL2lkcC5leGFtcGxlLmNvbS8iLCJqdGkiOiI3NTZFNjk | eyJpc3MiOiJodHRwczovL2lkcC5leGFtcGxlLmNvbS8iLCJqdGkiOiI3NTZFNjk | |||
3MTc1NjUyMDY5NjQ2NTZFNzQ2OTY2Njk2NTcyIiwiaWF0IjoxNTA4MTg0ODQ1LC | 3MTc1NjUyMDY5NjQ2NTZFNzQ2OTY2Njk2NTcyIiwiaWF0IjoxNTA4MTg0ODQ1LC | |||
JhdWQiOiI2MzZDNjk2NTZFNzQ1RjY5NjQiLCJldmVudHMiOnsiaHR0cHM6Ly9zY | JhdWQiOiI2MzZDNjk2NTZFNzQ1RjY5NjQiLCJldmVudHMiOnsiaHR0cHM6Ly9zY | |||
2hlbWFzLm9wZW5pZC5uZXQvc2VjZXZlbnQvcmlzYy9ldmVudC10eXBlL2FjY291 | 2hlbWFzLm9wZW5pZC5uZXQvc2VjZXZlbnQvcmlzYy9ldmVudC10eXBlL2FjY291 | |||
bnQtZGlzYWJsZWQiOnsic3ViamVjdCI6eyJzdWJqZWN0X3R5cGUiOiJpc3Mtc3V | bnQtZGlzYWJsZWQiOnsic3ViamVjdCI6eyJzdWJqZWN0X3R5cGUiOiJpc3Mtc3V | |||
iIiwiaXNzIjoiaHR0cHM6Ly9pZHAuZXhhbXBsZS5jb20vIiwic3ViIjoiNzM3NT | iIiwiaXNzIjoiaHR0cHM6Ly9pZHAuZXhhbXBsZS5jb20vIiwic3ViIjoiNzM3NT | |||
YyNkE2NTYzNzQifSwicmVhc29uIjoiaGlqYWNraW5nIn19fQ | YyNkE2NTYzNzQifSwicmVhc29uIjoiaGlqYWNraW5nIn19fQ | |||
. | . | |||
Y4rXxMD406P2edv00cr9Wf3_XwNtLjB9n-jTqN1_lLc | Y4rXxMD406P2edv00cr9Wf3_XwNtLjB9n-jTqN1_lLc | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="successResponse" numbered="true" toc="default"> | ||||
<section anchor="successResponse" title="Success Response"> | <name>Success Response</name> | |||
<t>If the SET is determined to be valid, the SET Recipient SHALL | <t>If the SET is determined to be valid, the SET Recipient <bcp14>SHALL< | |||
/bcp14> | ||||
acknowledge successful transmission by responding with HTTP | acknowledge successful transmission by responding with HTTP | |||
Response Status Code 202 (Accepted) (see Section 6.3.3 of <x | Response Status Code 202 (Accepted) (see <xref target="RFC72 | |||
ref target="RFC7231"/>). | 31" sectionFormat="of" section="6.3.3"/>). | |||
The body of the response MUST be empty. | The body of the response <bcp14>MUST</bcp14> be empty. | |||
</t> | </t> | |||
<t keepWithNext="true">The following is a non-normative example of a suc | ||||
<figure anchor="goodPostResponse" title="Example Successful Deli | cessful | |||
very Response"> | receipt of a SET.</t> | |||
<preamble>The following is a non-normative example of a succ | <figure anchor="goodPostResponse"> | |||
essful | <name>Example Successful Delivery Response</name> | |||
receipt of a SET.</preamble> | <sourcecode name="" type="http-message"><![CDATA[ | |||
<artwork><![CDATA[ | ||||
HTTP/1.1 202 Accepted | HTTP/1.1 202 Accepted | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="failureResponse" numbered="true" toc="default"> | ||||
<section anchor="failureResponse" title="Failure Response"> | <name>Failure Response</name> | |||
<t>In the event of a general HTTP error condition, the SET Recip | <t>In the event of a general HTTP error condition, the SET Recipient | |||
ient | ||||
responds with the applicable HTTP Status Code, as defined in | responds with the applicable HTTP Status Code, as defined in | |||
Section 6 of <xref target="RFC7231"/>.</t> | <xref target="RFC7231" sectionFormat="of" section="6"/>.</t> | |||
<t> | <t> | |||
When the SET Recipient detects an error parsing, validating, | When the SET Recipient detects an error parsing, | |||
or authenticating | validating, or authenticating a SET transmitted in a SET | |||
a SET transmitted in a SET Transmission Request, the SET Rec | Transmission Request, the SET Recipient | |||
ipient SHALL respond | <bcp14>SHALL</bcp14> respond with an HTTP Response Status | |||
with an HTTP Response Status Code of 400 (Bad Request). The | Code of 400 (Bad Request). The <tt>Content-Type</tt> | |||
<spanx style="verb">Content-Type</spanx> header field of thi | header field of this response <bcp14>MUST</bcp14> be | |||
s response MUST be | <tt>application/json</tt>, and the body <bcp14>MUST</bcp14> | |||
"application/json", and the body MUST be a UTF-8 encoded <xr | be a | |||
ef target="RFC8259">JSON</xref> | UTF-8 encoded <xref target="RFC8259" | |||
object containing the following name/value pairs: | format="default">JSON</xref> object containing the | |||
<list style="hanging"> | following name/value pairs: | |||
<t hangText="err"> | </t> | |||
A Security Event Token Error Code (see <xref target= | <dl newline="false" spacing="normal"> | |||
"error_codes"/>). | <dt>err:</dt> | |||
</t> | <dd> | |||
<t hangText="description"> | A Security Event Token Error Code (see <xref target= | |||
"error_codes" format="default"/>). | ||||
</dd> | ||||
<dt>description:</dt> | ||||
<dd> | ||||
A UTF-8 string containing a human-readable descripti on of the error | A UTF-8 string containing a human-readable descripti on of the error | |||
that may provide additional diagnostic information. The exact content | that may provide additional diagnostic information. The exact content | |||
of this field is implementation specific. | of this field is implementation specific. | |||
</t> | </dd> | |||
</list> | </dl> | |||
</t> | <t> | |||
The response <bcp14>MUST</bcp14> include a | ||||
<t> | <tt>Content-Language</tt> header field whose value | |||
The response MUST include a <spanx style="verb">Content-Lang | indicates the language of the error descriptions included | |||
uage</spanx> header field, whose | in the response body. If the SET Recipient can provide | |||
value indicates the language of the error descriptions inclu | error descriptions in multiple languages, they | |||
ded in the response body. If | <bcp14>SHOULD</bcp14> choose the language to use according | |||
the SET Recipient can provide error descriptions in multiple | to the value of the <tt>Accept-Language</tt> header field | |||
languages, they SHOULD choose | sent by the SET Transmitter in the transmission request, | |||
the language to use according to the value of the <spanx sty | as described in <xref target="RFC7231" sectionFormat="of" | |||
le="verb">Accept-Language</spanx> | section="5.3.5"/>. If the SET Transmitter did not send an | |||
header field sent by the SET Transmitter in the transmission | <tt>Accept-Language</tt> header field, or if the SET | |||
request, as described in Section 5.3.5 | Recipient does not support any of the languages included | |||
of <xref target="RFC7231"/>. If the SET Transmitter did not | in the header field, the SET Recipient <bcp14>MUST</bcp14> | |||
send an | respond with messages that are understandable by an | |||
<spanx style="verb">Accept-Language</spanx> header field, or | English-speaking person, as described in <xref | |||
if the SET Recipient does not support any | target="RFC2277" sectionFormat="of" section="4.5"/>. | |||
of the languages included in the header field, the SET Recip | </t> | |||
ient MUST respond with messages that are | <t keepWithNext="true">The following is a non-normative example error re | |||
understandable by an English-speaking person, as described i | sponse indicating | |||
n Section 4.5 of <xref target="RFC2277"/>. | that the key used to encrypt the SET has been revoked.</ | |||
</t> | t> | |||
<figure anchor="errorResponseInvalidKey"> | ||||
<figure anchor="errorResponseInvalidKey" title="Example Error Re | <name>Example Error Response (invalid_key)</name> | |||
sponse (invalid_key)"> | <sourcecode name="http-message" type=""><![CDATA[ | |||
<preamble>The following is a non-normative example error res | ||||
ponse indicating | ||||
that the key used to encrypt the SET has been revoked.</ | ||||
preamble> | ||||
<artwork><![CDATA[ | ||||
HTTP/1.1 400 Bad Request | HTTP/1.1 400 Bad Request | |||
Content-Language: en-US | Content-Language: en-US | |||
Content-Type: application/json | Content-Type: application/json | |||
{ | { | |||
"err": "invalid_key", | "err": "invalid_key", | |||
"description": "Key ID 12345 has been revoked." | "description": "Key ID 12345 has been revoked." | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t keepWithNext="true">The following is a non-normative example error re | ||||
<figure anchor="errorResponseExpiredToken" title="Example Error | sponse indicating | |||
Response (authentication_failed)"> | that the access token included in the request is expired | |||
<preamble>The following is a non-normative example error res | .</t> | |||
ponse indicating | <figure anchor="errorResponseExpiredToken"> | |||
that the access token included in the request is expired | <name>Example Error Response (authentication_failed)</name> | |||
.</preamble> | <sourcecode name="" type="http-message"><![CDATA[ | |||
<artwork><![CDATA[ | ||||
HTTP/1.1 400 Bad Request | HTTP/1.1 400 Bad Request | |||
Content-Language: en-US | Content-Language: en-US | |||
Content-Type: application/json | Content-Type: application/json | |||
{ | { | |||
"err": "authentication_failed", | "err": "authentication_failed", | |||
"description": "Access token has expired." | "description": "Access token has expired." | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t keepWithNext="true">The following is a non-normative example error re | ||||
<figure anchor="errorResponseBadIssuer" title="Example Error Res | sponse indicating | |||
ponse (access_denied)"> | ||||
<preamble>The following is a non-normative example error res | ||||
ponse indicating | ||||
that the SET Receiver is not willing to accept SETs issu ed by the specified | that the SET Receiver is not willing to accept SETs issu ed by the specified | |||
issuer from this particular SET Transmitter.</preamble> | issuer from this particular SET Transmitter.</t> | |||
<artwork><![CDATA[ | <figure anchor="errorResponseBadIssuer"> | |||
HTTP/1.1 400 Bad Request | <name>Example Error Response (access_denied)</name> | |||
Content-Language: en-US | ||||
Content-Type: application/json | ||||
{ | <sourcecode name="" type="http-message"><![CDATA[ | |||
"err": "invalid_issuer", | HTTP/1.1 400 Bad Request | |||
"description": "Not authorized for issuer https://iss.example.com/." | Content-Language: en-US | |||
} | Content-Type: application/json | |||
]]></artwork> | ||||
</figure> | ||||
</section> | ||||
<section anchor="error_codes" title="Security Event Token Delivery E | { | |||
rror Codes"> | "err": "invalid_issuer", | |||
<t>Security Event Token Delivery Error Codes are strings that id | "description": "Not authorized for issuer https://iss.example.com/" | |||
entify a | } | |||
]]></sourcecode> | ||||
</figure> | ||||
</section> | ||||
<section anchor="error_codes" numbered="true" toc="default"> | ||||
<name>Security Event Token Error Codes</name> | ||||
<t>Security Event Token Error Codes are strings that identify a | ||||
specific category of error that may occur when parsing or va lidating a SET. | specific category of error that may occur when parsing or va lidating a SET. | |||
Every Security Event Token Delivery Error Code MUST have a u | ||||
nique name | ||||
registered in the IANA "Security Event Token Delivery Error | ||||
Codes" | ||||
registry established by <xref target="iana_set_errors"/>.</t | ||||
> | ||||
<t>The following table presents the initial set of Error Codes t | Every Security Event Token Error Code <bcp14>MUST</bcp14> ha | |||
hat are registered | ve a unique name | |||
in the IANA "Security Event Token Delivery Error Codes" regi | registered in the IANA "Security Event Token Error Codes" | |||
stry:</t> | registry established by <xref target="iana_set_errors" forma | |||
<texttable anchor="reqErrors" title="SET Delivery Error Codes"> | t="default"/>.</t> | |||
<ttcol>Error Code</ttcol><ttcol>Description</ttcol> | ||||
<c>invalid_request</c><c>The request body cannot be parsed a | <t>The following table presents the initial set of Error Codes that are | |||
s a SET, or the | registered | |||
Event Payload within the SET does not conform to the eve | in the IANA "Security Event Token Error Codes" registry:</t> | |||
nt's definition.</c> | <table anchor="reqErrors" align="center"> | |||
<c>invalid_key</c><c>One or more keys used to encrypt or sig | <name>SET Error Codes</name> | |||
n the SET is | <thead> | |||
<tr> | ||||
<th align="left">Error Code</th> | ||||
<th align="left">Description</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td align="left">invalid_request</td> | ||||
<td align="left">The request body cannot be parsed as a SET, or th | ||||
e | ||||
Event Payload within the SET does not conform to the eve | ||||
nt's definition.</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">invalid_key</td> | ||||
<td align="left">One or more keys used to encrypt or sign the SET | ||||
is | ||||
invalid or otherwise unacceptable to the SET Recipient ( expired, | invalid or otherwise unacceptable to the SET Recipient ( expired, | |||
revoked, failed certificate validation, etc.).</c> | revoked, failed certificate validation, etc.).</td> | |||
<c>invalid_issuer</c><c>The SET issuer is invalid for the SE | </tr> | |||
T Recipient.</c> | <tr> | |||
<c>invalid_audience</c><c>The SET audience does not correspo | <td align="left">invalid_issuer</td> | |||
nd to the SET Recipient.</c> | <td align="left">The SET Issuer is invalid for the SET Recipient.< | |||
<c>authentication_failed</c><c>The SET Recipient could not a | /td> | |||
uthenticate the | </tr> | |||
SET Transmitter.</c> | <tr> | |||
<c>access_denied</c><c>The SET Transmitter is not authorized | <td align="left">invalid_audience</td> | |||
to transmit the | <td align="left">The SET Audience does not correspond to the SET R | |||
SET to the SET Recipient.</c> | ecipient.</td> | |||
</texttable> | </tr> | |||
<t> | <tr> | |||
<td align="left">authentication_failed</td> | ||||
<td align="left">The SET Recipient could not authenticate the | ||||
SET Transmitter.</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">access_denied</td> | ||||
<td align="left">The SET Transmitter is not authorized to transmit | ||||
the | ||||
SET to the SET Recipient.</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t> | ||||
Other Error Codes may also be received, | Other Error Codes may also be received, | |||
as the set of Error Codes is extensible | as the set of Error Codes is extensible | |||
via the IANA "Security Event Token Delivery Error Codes" regist | via the IANA "Security Event Token Error Codes" registry | |||
ry | established in <xref target="iana_set_errors" format="default"/ | |||
established in <xref target="iana_set_errors"/>. | >. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="aa" title="Authentication and Authorization" toc="defau | ||||
lt"> | ||||
<t>The SET delivery method described in this specification is | ||||
based upon HTTP over TLS <xref target="RFC2818"/> and standard | ||||
HTTP authentication and authorization schemes, as per | ||||
<xref target="RFC7235" />. | ||||
The TLS server certificate MUST be validated using DNS-ID <xref t | ||||
arget="RFC6125"/> | ||||
and/or DANE <xref target="RFC6698"/>. | ||||
</t> | ||||
<t> | <section anchor="aa" toc="default" numbered="true"> | |||
<name>Authentication and Authorization</name> | ||||
<t>The SET delivery method described in this specification is based upon | ||||
HTTP over TLS <xref target="RFC2818" format="default"/> and standard | ||||
HTTP authentication and authorization schemes, as per <xref | ||||
target="RFC7235" format="default"/>. The TLS server certificate | ||||
<bcp14>MUST</bcp14> be validated using DNS-ID <xref target="RFC6125" | ||||
format="default"/> and/or DNS-Based Authentication of Named Entities | ||||
(DANE) <xref target="RFC6698" format="default"/>. | ||||
</t> | ||||
<t> | ||||
Authorization for the eligibility to provide actionable SETs can be determined by | Authorization for the eligibility to provide actionable SETs can be determined by | |||
using the identity of the SET Issuer, | using the identity of the SET Issuer, | |||
the identity of the SET Transmitter, perhaps using mutual TLS, | the identity of the SET Transmitter, perhaps using mutual TLS, | |||
or via other employed authentication methods. | or via other employed authentication methods. | |||
Because SETs are | Because SETs are | |||
not commands, SET Recipients are free to ignore SETs that | not commands, SET Recipients are free to ignore SETs that | |||
are not of interest. | are not of interest. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="reliability" title="Delivery Reliability" toc="default" | <section anchor="reliability" toc="default" numbered="true"> | |||
> | <name>Delivery Reliability</name> | |||
<t> | <t> | |||
Delivery reliability requirements may vary depending upon the us e cases. | Delivery reliability requirements may vary depending upon the us e cases. | |||
This specification defines the response from the SET | This specification defines the response from the SET | |||
Recipient in such a way as to provide the SET Transmitter with t he | Recipient in such a way as to provide the SET Transmitter with t he | |||
information necessary to determine what further action is requir ed, | information necessary to determine what further action is requir ed, | |||
if any, in order to meet their requirements. SET Transmitters w ith | if any, in order to meet their requirements. SET Transmitters w ith | |||
high reliability requirements may be tempted to always retry fai led | high reliability requirements may be tempted to always retry fai led | |||
transmissions. However, it should be noted that for many types o f SET | transmissions. However, it should be noted that for many types o f SET | |||
delivery errors, a retry is extremely unlikely to be successful. For | delivery errors, a retry is extremely unlikely to be successful. For | |||
example, <spanx style="verb">invalid_request</spanx> indicates a structural | example, <tt>invalid_request</tt> indicates a structural | |||
error in the content of the request body that is likely to remai n when | error in the content of the request body that is likely to remai n when | |||
re-transmitting the same SET. Others such as <spanx style="verb | retransmitting the same SET. Others such as <tt>access_denied</ | |||
">access_denied</spanx> | tt> | |||
may be transient, for example if the SET Transmitter refreshes e | may be transient, for example, if the SET Transmitter refreshes | |||
xpired | expired | |||
credentials prior to re-transmission. | credentials prior to retransmission. | |||
</t> | </t> | |||
<t> | <t> | |||
The SET Transmitter may be unaware of whether or not a SET has b een delivered | The SET Transmitter may be unaware of whether or not a SET has b een delivered | |||
to a SET Recipient. For example, a network interruption could pr event the | to a SET Recipient. For example, a network interruption could pr event the | |||
SET Transmitter from receiving the success response, or a servic e outage could | SET Transmitter from receiving the success response, or a servic e outage could | |||
prevent the SET Transmitter from recording the fact that the SET was delivered. | prevent the SET Transmitter from recording the fact that the SET was delivered. | |||
It is left to the implementer to decide how to handle such cases , based on | It is left to the implementer to decide how to handle such cases , based on | |||
their requirements. For example, it may be appropriate for the S ET Transmitter to | their requirements. For example, it may be appropriate for the S ET Transmitter to | |||
re-transmit the SET to the SET Recipient, erring on the side of guaranteeing delivery, | retransmit the SET to the SET Recipient, erring on the side of g uaranteeing delivery, | |||
or it may be appropriate to assume delivery was successful, erri ng on the side of | or it may be appropriate to assume delivery was successful, erri ng on the side of | |||
not spending resources re-transmitting previously delivered SETs . Other options, | not spending resources retransmitting previously delivered SETs. Other options, | |||
such as sending the SET to a "dead letter queue" for manual exam ination may also | such as sending the SET to a "dead letter queue" for manual exam ination may also | |||
be appropriate. | be appropriate. | |||
</t> | </t> | |||
<t> | <t> | |||
Implementers SHOULD evaluate the reliability requirements of the | Implementers <bcp14>SHOULD</bcp14> evaluate the reliability requ | |||
ir use cases and the | irements of their use cases and the | |||
impact of various retry mechanisms and re-transmission policies | impact of various retry mechanisms and retransmission policies o | |||
on the performance | n the performance | |||
of their systems to determine an appropriate strategy for handli ng various error | of their systems to determine an appropriate strategy for handli ng various error | |||
conditions. | conditions. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="Security" title="Security Considerations" toc="default" | <section anchor="Security" toc="default" numbered="true"> | |||
> | <name>Security Considerations</name> | |||
<section anchor="payloadAuthentication" numbered="true" toc="default"> | ||||
<section anchor="payloadAuthentication" title="Authentication Using | <name>Authentication Using Signed SETs</name> | |||
Signed SETs"> | <t> | |||
<t> | ||||
JWS signed SETs can be | JWS signed SETs can be | |||
used (see <xref target="RFC7515"/> and Section 5 of <xref targe | used (see <xref target="RFC7515" format="default"/> and | |||
t="RFC8417"/>) | <xref target="RFC8417" sectionFormat="of" section="5"/>) | |||
to enable the SET Recipient | to enable the SET Recipient | |||
to validate that the SET Issuer is authorized to provide action able SETs. | to validate that the SET Issuer is authorized to provide action able SETs. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="HTTP" numbered="true" toc="default"> | ||||
<section anchor="HTTP" title="HTTP Considerations"> | <name>HTTP Considerations</name> | |||
<t>SET delivery depends on the use of Hypertext Transfer Protocol a | <t>SET delivery depends on the use of Hypertext Transfer Protocol and | |||
nd is thus | is thus subject to the security considerations of HTTP (<xref | |||
subject to the security considerations of HTTP Section 9 of <xref | target="RFC7230" sectionFormat="of" section="9"/>) and its related | |||
target="RFC7230"/> and its related specifications.</t> | specifications.</t> | |||
</section> | </section> | |||
<section anchor="Confidentiality" numbered="true" toc="default"> | ||||
<section anchor="Confidentiality" title="Confidentiality of SETs"> | <name>Confidentiality of SETs</name> | |||
<t> | <t> | |||
SETs may contain sensitive information, including Personally Id | SETs may contain sensitive information, including Personally | |||
entifiable Information (PII), | Identifiable Information (PII), or be distributed through | |||
or be distributed through third parties. | third parties. In such cases, SET Transmitters and SET | |||
In such cases, SET Transmitters and | Recipients <bcp14>MUST</bcp14> protect the confidentiality | |||
SET Recipients MUST protect the confidentiality of the SET c | of the SET contents. TLS <bcp14>MUST</bcp14> be used to | |||
ontents. | secure the transmitted SETs. In some use cases, encrypting | |||
TLS MUST be used to secure the transmitted SETs. | the SET as described in <xref target="RFC7516" | |||
In some use cases, | format="default">JWE</xref> will also be required. The | |||
encrypting the SET as described in <xref target="RFC7516">JWE | Event delivery endpoint <bcp14>MUST</bcp14> support at least | |||
</xref> will also be required. | TLS version 1.2 <xref target="RFC5246" format="default"/> | |||
The Event delivery endpoint MUST support at least TLS | and <bcp14>SHOULD</bcp14> support the newest version of TLS | |||
version 1.2 <xref target="RFC5246"/> and SHOULD support the | that meets its security requirements, which as of the time | |||
newest version | of this publication is TLS 1.3 <xref target="RFC8446" | |||
of TLS that meets its security requirements, | format="default"/>. The client <bcp14>MUST</bcp14> perform | |||
which as of the time of this publication is TLS 1.3 <xref tar | a TLS/SSL server certificate check using DNS-ID <xref | |||
get="RFC8446"/>. | target="RFC6125" format="default"/> and/or DANE <xref | |||
The client MUST | target="RFC6698" format="default"/>. How a SET Transmitter | |||
perform a TLS/SSL server certificate check using DNS-ID <xre | determines the expected service identity to match the SET | |||
f target="RFC6125"/> | Recipient's server certificate against is out of scope for | |||
and/or DANE <xref target="RFC6698"/>. | this document. The implementation security considerations | |||
How a SET Transmitter determines the expected service identi | for TLS in "Recommendations for Secure Use of Transport | |||
ty to match the SET | Layer Security (TLS) and Datagram Transport Layer Security | |||
Recipient's server certificate against is out of scope for t | (DTLS)" <xref target="RFC7525" format="default"/> | |||
his document. | <bcp14>MUST</bcp14> be followed. | |||
The implementation security considerations for TLS in | </t> | |||
"Recommendations for Secure Use of TLS and DTLS" <xref target | </section> | |||
="RFC7525"/> | <section anchor="DoS" numbered="true" toc="default"> | |||
MUST be followed. | <name>Denial of Service</name> | |||
</t> | <t> | |||
</section> | ||||
<section anchor="DoS" title="Denial of Service"> | ||||
<t> | ||||
The SET Recipient may be vulnerable to a denial-of-service a ttack where a | The SET Recipient may be vulnerable to a denial-of-service a ttack where a | |||
malicious party makes a high volume of requests containing i nvalid SETs, | malicious party makes a high volume of requests containing i nvalid SETs, | |||
causing the endpoint to expend significant resources on cryp tographic | causing the endpoint to expend significant resources on cryp tographic | |||
operations that are bound to fail. This may be mitigated by authenticating | operations that are bound to fail. This may be mitigated by authenticating | |||
SET Transmitters with a mechanism such as mutual TLS. | SET Transmitters with a mechanism such as mutual TLS. | |||
Rate-limiting problematic transmitters is also a possible mea ns of mitigation. | Rate-limiting problematic transmitters is also a possible mea ns of mitigation. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="Persisted" numbered="true" toc="default"> | ||||
<section anchor="Persisted" title="Authenticating Persisted SETs"> | <name>Authenticating Persisted SETs</name> | |||
<t> | <t> | |||
At the time of receipt, the SET Recipient can rely upon TLS | At the time of receipt, the SET Recipient can rely upon TLS | |||
mechanisms, HTTP authentication methods, and/or other contex t from the | mechanisms, HTTP authentication methods, and/or other contex t from the | |||
transmission request to authenticate the SET Transmitter and validate the | transmission request to authenticate the SET Transmitter and validate the | |||
authenticity of the SET. However, this context is typically unavailable to | authenticity of the SET. However, this context is typically unavailable to | |||
systems to which the SET Recipient forwards the SET, or to s ystems that | systems to which the SET Recipient forwards the SET, or to s ystems that | |||
retrieve the SET from storage. If the SET Recipient require s the ability to | retrieve the SET from storage. If the SET Recipient require s the ability to | |||
validate SET authenticity outside of the context of the tran smission request, | validate SET authenticity outside of the context of the tran smission request, | |||
then the SET Recipient SHOULD ensure that such SETs have bee | then the SET Recipient <bcp14>SHOULD</bcp14> ensure that suc | |||
n signed in | h SETs have been signed in | |||
accordance with <xref target="RFC7515"/>. | accordance with <xref target="RFC7515" format="default"/>. | |||
Needed context could also be stored with the SET and retrieve d with it. | Needed context could also be stored with the SET and retrieve d with it. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="Privacy" numbered="true" toc="default"> | ||||
<section anchor="Privacy" title="Privacy Considerations"> | <name>Privacy Considerations</name> | |||
<t> | <t> | |||
SET Transmitters should attempt to deliver SETs that are targete d to the specific | SET Transmitters should attempt to deliver SETs that are targete d to the specific | |||
business and protocol needs of subscribers. | business and protocol needs of subscribers. | |||
</t> | </t> | |||
<t>When sharing personally identifiable information or information | ||||
<t>When sharing personally identifiable information or information | ||||
that is otherwise considered confidential to affected users, SET | that is otherwise considered confidential to affected users, SET | |||
Transmitters and Recipients MUST have the appropriate legal agre ements | Transmitters and Recipients <bcp14>MUST</bcp14> have the appropr iate legal agreements | |||
and user consent or terms of service in place. | and user consent or terms of service in place. | |||
Furthermore, data that needs confidentiality protection MUST be e ncrypted, | Furthermore, data that needs confidentiality protection <bcp14>MU ST</bcp14> be encrypted, | |||
at least with TLS | at least with TLS | |||
and sometimes also using JSON Web Encryption (JWE) <xref target=" | and sometimes also using JSON Web Encryption (JWE) <xref target=" | |||
RFC7516"/>. | RFC7516" format="default"/>. | |||
</t> | </t> | |||
<t> | ||||
<t> | ||||
In some cases, subject identifiers themselves may be considered sen sitive | In some cases, subject identifiers themselves may be considered sen sitive | |||
information, such that their inclusion within a SET may be consider ed a violation | information, such that their inclusion within a SET may be consider ed a violation | |||
of privacy. SET Issuers and SET Transmitters should consider the r amifications of sharing a | of privacy. SET Issuers and SET Transmitters should consider the r amifications of sharing a | |||
particular subject identifier with a SET Recipient (e.g., whether d oing so could | particular subject identifier with a SET Recipient (e.g., whether d oing so could | |||
enable correlation and/or de-anonymization of data) and choose appr opriate | enable correlation and/or de-anonymization of data) and choose appr opriate | |||
subject identifiers for their use cases. | subject identifiers for their use cases. | |||
</t> | </t> | |||
</section> | ||||
</section> | <section anchor="IANA" numbered="true" toc="default"> | |||
<name>IANA Considerations</name> | ||||
<section anchor="IANA" title="IANA Considerations"> | <section anchor="iana_set_errors" numbered="true" toc="default"> | |||
<section anchor="iana_set_errors" title="Security Event Token Delive | <name>Security Event Token Error Codes</name> | |||
ry Error Codes"> | <t> | |||
<t> | This document defines Security Event Token Error | |||
This document defines Security Event Token Delivery Error Co | Codes, for which IANA has created and now maintains a | |||
des, for which IANA | new registry titled "Security Event Token Error | |||
is asked to create and maintain a new registry titled "Secur | Codes". Initial values for the "Security Event Token | |||
ity Event Token | Error Codes" registry are defined in <xref | |||
Delivery Error Codes". Initial values for the Security Even | target="reqErrors" format="default"/> and registered | |||
t Token Delivery | below. Future assignments are to be made through the | |||
Error Codes registry are defined in <xref target="reqErrors" | Specification Required registration policy <xref | |||
/> and registered below. Future assignments | target="RFC8126" format="default"/> and shall follow the | |||
are to be made through the Specification Required registrati | template below. | |||
on policy (<xref target="RFC8126"/>) | </t> | |||
and shall follow the template below. | <t> | |||
</t> | Error Codes are intended to be interpreted by automated | |||
<t> | systems; therefore, they <bcp14>SHOULD</bcp14> identify | |||
Error Codes are intended to be interpreted by automated syst | classes of errors to which an automated system could | |||
ems, and therefore SHOULD | respond in a meaningfully distinct way (e.g., by | |||
identify classes of errors to which an automated system coul | refreshing authentication credentials and retrying the | |||
d respond in a meaningfully | request). | |||
distinct way (e.g., by refreshing authentication credentials | </t> | |||
and retrying the request). | <t> | |||
</t> | ||||
<t> | ||||
Error Code names are case sensitive. | Error Code names are case sensitive. | |||
Names may not match other registered names in a case-insensitiv e manner | Names may not match other registered names in a case-insensitiv e manner | |||
unless the Designated Experts state that there is a compelling reason | unless the Designated Experts state that there is a compelling reason | |||
to allow an exception. | to allow an exception. | |||
</t> | </t> | |||
<t> | <t> | |||
Criteria that should be applied by the Designated Experts inclu des | Criteria that should be applied by the Designated Experts inclu des | |||
determining whether the proposed registration duplicates existi ng functionality, | determining whether the proposed registration duplicates existi ng functionality, | |||
whether it is likely to be of general applicability | whether it is likely to be of general applicability | |||
or whether it is useful only for a single application, | or whether it is useful only for a single application, | |||
and whether the registration description is clear. | and whether the registration description is clear. | |||
</t> | </t> | |||
<t> | ||||
It is suggested that multiple Designated Experts be appointed w | ||||
ho are able to | ||||
represent the perspectives of different applications using this | ||||
specification, | ||||
in order to enable broadly informed review of registration deci | ||||
sions. | ||||
In cases where a registration decision could be perceived as | ||||
creating a conflict of interest for a particular Expert, | ||||
that Expert should defer to the judgment of the other Experts. | ||||
</t> | ||||
<section anchor="iana_set_errors_template" title="Registration T | <t> | |||
emplate"> | It is suggested that multiple Designated Experts be | |||
<t> | appointed who are able to represent the perspectives of | |||
<list style="hanging"> | different applications using this specification in order to | |||
<t hangText="Error Code"> | enable broadly informed review of registration decisions. | |||
<vspace/> | In cases where a registration decision could be perceived as | |||
The name of the Security Event Token Delivery Er | creating a conflict of interest for a particular expert, | |||
ror Code, as described | that expert should defer to the judgment of the other | |||
in <xref target="error_codes"/>. The name MUST b | experts. | |||
e a case-sensitive ASCII | </t> | |||
string consisting only of letters, digits, and u | <section anchor="iana_set_errors_template" numbered="true" toc="default" | |||
nderscore; these are the | > | |||
characters whose codes fall within the inclusive | <name>Registration Template</name> | |||
ranges 0x30-39, 0x41-5A, | <dl newline="true" spacing="normal"> | |||
0x5F and 0x61-7A. | <dt>Error Code</dt> | |||
</t> | <dd> | |||
<t hangText="Description"> | The name of the Security Event Token | |||
<vspace/> | Error Code, as described in <xref | |||
A brief human-readable description of the Securi | target="error_codes" format="default"/>. The | |||
ty Event Token Delivery | name <bcp14>MUST</bcp14> be a case-sensitive | |||
ASCII string consisting only of letters, | ||||
digits, and underscore; these are the | ||||
characters whose codes fall within the | ||||
inclusive ranges 0x30-39, 0x41-5A, 0x5F, and | ||||
0x61-7A. | ||||
</dd> | ||||
<dt>Description</dt> | ||||
<dd> | ||||
A brief human-readable description of the Securi | ||||
ty Event Token | ||||
Error Code. | Error Code. | |||
</t> | </dd> | |||
<t hangText="Change Controller"> | <dt>Change Controller</dt> | |||
<vspace/> | <dd> | |||
For error codes registered by the IETF or its wo rking groups, list "IETF". | For error codes registered by the IETF or its wo rking groups, list "IETF". | |||
For all other error codes, list the name of the | For all other error codes, list the name of the | |||
party responsible for the registration. Contact information such as | party responsible for the registration. Contact information such as | |||
mailing address, email address, or phone number may also be provided. | mailing address, email address, or phone number may also be provided. | |||
</t> | </dd> | |||
<t hangText="Defining Document(s)"> | <dt>Reference</dt> | |||
<vspace/> | <dd> | |||
A reference to the document or documents that de fine the Security Event | A reference to the document or documents that de fine the Security Event | |||
Token Delivery Error Code. The definition MUST s pecify the name and | Token Error Code. The definition <bcp14>MUST</bc p14> specify the name and | |||
description of the error code and explain under what circumstances the | description of the error code and explain under what circumstances the | |||
error code may be used. URIs that can be used to retrieve copies of each | error code may be used. URIs that can be used to retrieve copies of each | |||
document at no cost SHOULD be included. | document at no cost <bcp14>SHOULD</bcp14> be inc | |||
</t> | luded. | |||
</list> | </dd> | |||
</t> | </dl> | |||
</section> | </section> | |||
<section anchor="InitialContents" numbered="true" toc="default"> | ||||
<name>Initial Registry Contents</name> | ||||
<dl newline="false" spacing="compact"> | ||||
<dt>Error Code:</dt><dd>invalid_request</dd> | ||||
<section anchor="InitialContents" title="Initial Registry Conten | <dt>Description:</dt><dd>The request body cannot be parsed as a SET | |||
ts"> | or the Event | |||
<t> | Payload within the SET does not conform to the event's | |||
<?rfc subcompact="yes"?> | definition.</dd> | |||
<list style="hanging"> | ||||
<t>Error Code: invalid_request</t> | <dt>Change Controller:</dt><dd>IETF</dd> | |||
<t>Description: The request body cannot be parsed as a SET | ||||
or the event | <dt>Reference:</dt><dd> | |||
payload within the SET does not conform to the event's | <xref target="error_codes" format="default"/> of RFC 8935 | |||
definition.</t> | </dd> | |||
<t>Change Controller: IETF</t> | </dl> | |||
<t>Defining Document(s): | ||||
<xref target="error_codes"/> of [[ this specification ]] | <dl newline="false" spacing="compact"> | |||
</t> | <dt>Error Code:</dt><dd>invalid_key</dd> | |||
</list> | <dt>Description:</dt><dd>One or more keys used to encrypt or sign th | |||
</t> | e SET is invalid | |||
<t> | ||||
<list style="hanging"> | ||||
<t>Error Code: invalid_key</t> | ||||
<t>Description: One or more keys used to encrypt or sign t | ||||
he SET is invalid | ||||
or otherwise unacceptable to the SET Recipient (expire d, revoked, | or otherwise unacceptable to the SET Recipient (expire d, revoked, | |||
failed certificate validation, etc.).</t> | failed certificate validation, etc.).</dd> | |||
<t>Change Controller: IETF</t> | <dt>Change Controller:</dt><dd>IETF</dd> | |||
<t>Defining Document(s): | <dt>Reference:</dt><dd> | |||
<xref target="error_codes"/> of [[ this specification ]] | <xref target="error_codes" format="default"/> of RFC 8935 | |||
</t> | </dd> | |||
</list> | </dl> | |||
</t> | ||||
<t> | <dl newline="false" spacing="compact"> | |||
<list style="hanging"> | <dt>Error Code:</dt><dd>invalid_issuer</dd> | |||
<t>Error Code: invalid_issuer</t> | <dt>Description:</dt><dd>The SET Issuer is invalid for the SET Recip | |||
<t>Description: The SET issuer is invalid for the SET Reci | ient.</dd> | |||
pient.</t> | <dt>Change Controller:</dt><dd>IETF</dd> | |||
<t>Change Controller: IETF</t> | <dt>Reference:</dt><dd> | |||
<t>Defining Document(s): | <xref target="error_codes" format="default"/> of RFC 8935 | |||
<xref target="error_codes"/> of [[ this specification ]] | </dd> | |||
</t> | </dl> | |||
</list> | ||||
</t> | <dl newline="false" spacing="compact"> | |||
<t> | <dt>Error Code:</dt><dd>invalid_audience</dd> | |||
<list style="hanging"> | <dt>Description:</dt><dd>The SET Audience does not correspond to the | |||
<t>Error Code: invalid_audience</t> | SET Recipient.</dd> | |||
<t>Description: The SET audience does not correspond to th | <dt>Change Controller:</dt><dd>IETF</dd> | |||
e SET Recipient.</t> | <dt>Reference:</dt><dd> | |||
<t>Change Controller: IETF</t> | <xref target="error_codes" format="default"/> of RFC 8935 | |||
<t>Defining Document(s): | </dd> | |||
<xref target="error_codes"/> of [[ this specification ]] | </dl> | |||
</t> | ||||
</list> | <dl newline="false" spacing="compact"> | |||
</t> | <dt>Error Code:</dt><dd>authentication_failed</dd> | |||
<t> | <dt>Description:</dt><dd>The SET Recipient could not authenticate th | |||
<list style="hanging"> | e SET Transmitter.</dd> | |||
<t>Error Code: authentication_failed</t> | <dt>Change Controller:</dt><dd>IETF</dd> | |||
<t>Description: The SET Recipient could not authenticate t | <dt>Reference:</dt><dd> | |||
he SET Transmitter.</t> | <xref target="error_codes" format="default"/> of RFC 8935 | |||
<t>Change Controller: IETF</t> | </dd> | |||
<t>Defining Document(s): | </dl> | |||
<xref target="error_codes"/> of [[ this specification ]] | <dl newline="false" spacing="compact"> | |||
</t> | <dt>Error Code:</dt><dd>access_denied</dd> | |||
</list> | <dt>Description:</dt><dd>The SET Transmitter is not authorized to tr | |||
</t> | ansmit the | |||
<t> | SET to the SET Recipient.</dd> | |||
<list style="hanging"> | <dt>Change Controller:</dt><dd>IETF</dd> | |||
<t>Error Code: access_denied</t> | <dt>Reference:</dt><dd> | |||
<t>Description: The SET Transmitter is not authorized to t | <xref target="error_codes" format="default"/> of RFC 8935 | |||
ransmit the | </dd> | |||
SET to the SET Recipient.</t> | </dl> | |||
<t>Change Controller: IETF</t> | ||||
<t>Defining Document(s): | ||||
<xref target="error_codes"/> of [[ this specification ]] | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
<?rfc subcompact="no"?> | ||||
</section> | ||||
</section> | </section> | |||
</middle> | </section> | |||
</section> | ||||
</middle> | ||||
<back> | ||||
<back> | <references> | |||
<references title="Normative References"> | <name>References</name> | |||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | <references> | |||
ence.RFC.2119.xml' ?> | <name>Normative References</name> | |||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
ence.RFC.2277.xml'?><!-- IETF Language Policy --> | FC.2119.xml"/> | |||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
ence.RFC.2818.xml' ?><!-- HTTP over TLS --> | FC.2277.xml"/> | |||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.5246.xml' ?><!-- TLS 1.2 --> | ||||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/referen | |||
ence.RFC.6125.xml' ?><!-- TLS Certs --> | ce.RFC.2818.xml"/> | |||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.6698.xml' ?><!-- DANE --> | ||||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/referen | |||
nce.RFC.7230.xml' ?><!-- HTTP Msg --> | ce.RFC.5246.xml"/> | |||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.7231.xml' ?><!-- HTTP Semantics --> | ||||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.7515.xml' ?><!-- JWS --> | ||||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.7516.xml' ?><!-- JWE --> | ||||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.7519.xml' ?><!-- JWT --> | ||||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.7525.xml' ?><!-- TLS Recos --> | ||||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/referen | |||
ence.RFC.8126.xml' ?> | ce.RFC.6125.xml"/> | |||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8174.xml' ?> | ||||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8259.xml' ?><!-- JSON --> | ||||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8417.xml'?><!-- SET --> | ||||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.8446.xml' ?><!-- TLS 1.3 --> | ||||
</references> | ||||
<references title="Informative References"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/referen | |||
<?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/referen | ce.RFC.6698.xml"/> | |||
ce.I-D.draft-ietf-secevent-http-poll-12.xml" ?> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/referenc | ||||
e.RFC.7230.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7231.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7515.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7516.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7519.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.7525.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8126.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8174.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8259.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/referen | ||||
ce.RFC.8417.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/referenc | ||||
e.RFC.8446.xml"/> | ||||
<?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer ence.RFC.7235.xml' ?><!-- HTTP Auth --> | ||||
</references> | </references> | |||
<references> | ||||
<name>Informative References</name> | ||||
<section anchor="Unencrypted" title="Unencrypted Transport Considerations | <reference anchor="RFC8936" target="https://www.rfc-editor.org/info/rfc8936"> | |||
"> | ||||
<t> | <front> | |||
<title>Poll-Based Security Event Token (SET) Delivery Using HTTP</title> | ||||
<author initials='A' surname='Backman' fullname='Annabelle Backman' role='editor | ||||
'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='M' surname='Jones' fullname='Michael Jones'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='M' surname='Scurtescu' fullname='Marius Scurtescu'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='M' surname='Ansari' fullname='Morteza Ansari'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='A' surname='Nadalin' fullname='Anthony Nadalin'> | ||||
<organization /> | ||||
</author> | ||||
<date month='October' year='2020' /> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8936"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8936"/> | ||||
</reference> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7235.xml"/> | ||||
</references> | ||||
</references> | ||||
<section anchor="Unencrypted" numbered="true" toc="default"> | ||||
<name>Unencrypted Transport Considerations</name> | ||||
<t> | ||||
Earlier versions of this specification made the use of TLS optional | Earlier versions of this specification made the use of TLS optional | |||
and described security and privacy considerations resulting from use | and described security and privacy considerations resulting from use | |||
of unencrypted HTTP as the underlying transport. | of unencrypted HTTP as the underlying transport. | |||
When the working group decided to mandate usage HTTP over TLS, | When the working group decided to mandate usage of HTTP over TLS, | |||
it also decided to preserve the description of these considerations | it also decided to preserve the description of these considerations | |||
in this non-normative appendix. | in this non-normative appendix. | |||
</t> | </t> | |||
<t> | <t> | |||
SETs may contain sensitive information that is considered | SETs may contain sensitive information that is considered | |||
Personally Identifiable Information (PII). | Personally Identifiable Information (PII). | |||
In such cases, SET Transmitters and | In such cases, SET Transmitters and | |||
SET Recipients MUST protect the confidentiality of the SET contents. | SET Recipients <bcp14>MUST</bcp14> protect the confidentiality of the | |||
When TLS is not used, this means that the SET MUST be encrypted | SET contents. | |||
as described in <xref target="RFC7516">JWE</xref>. | When TLS is not used, this means that the SET <bcp14>MUST</bcp14> be | |||
</t> | encrypted | |||
<t> | as described in <xref target="RFC7516" format="default">JWE</xref>. | |||
</t> | ||||
<t> | ||||
If SETs were allowed to be transmitted over unencrypted channels, som e privacy-sensitive | If SETs were allowed to be transmitted over unencrypted channels, som e privacy-sensitive | |||
information about them might leak, even though the SETs themselves ar e encrypted. | information about them might leak, even though the SETs themselves ar e encrypted. | |||
For instance, an attacker may be able to determine whether or not a S ET was accepted and the reason for its rejection | For instance, an attacker may be able to determine whether or not a S ET was accepted and the reason for its rejection | |||
or may be able to derive information from being able to observe the s ize of the encrypted SET. | or may be able to derive information from being able to observe the s ize of the encrypted SET. | |||
(Note that even when TLS is utilized, some information leakage is sti ll possible; | (Note that even when TLS is utilized, some information leakage is sti ll possible; | |||
message padding algorithms to prevent side channels remain an open re search topic.) | message padding algorithms to prevent side channels remain an open re search topic.) | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="Others" title="Other Streaming Specifications"> | ||||
<t>[[ NOTE TO THE RFC EDITOR: This section to be removed prior to pu | ||||
blication ]]</t> | ||||
<t>The following pub/sub, queuing, and streaming systems were review | ||||
ed | ||||
as possible solutions or as input to the current draft:</t> | ||||
<t>Poll-Based Security Event Token (SET) Delivery Using HTTP</t> | ||||
<t>In addition to this specification, the WG is defining a polling-b | ||||
ased | ||||
SET delivery protocol. That protocol <xref target="I-D.ietf-sece | ||||
vent-http-poll"/> | ||||
describes it as:</t> | ||||
<figure><artwork>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.</artwork> | ||||
</figure> | ||||
<t>XMPP Events</t> | ||||
<t>The WG considered XMPP Events and their ability to provide a sing | ||||
le | ||||
messaging solution without the need for both polling and push mo | ||||
des. | ||||
The feeling was the size and methodology of XMPP was too far apa | ||||
rt from | ||||
the current capabilities of the SECEVENTs community, which focus | ||||
es in | ||||
on HTTP based service delivery and authorization.</t> | ||||
<t>Amazon Simple Notification Service</t> | ||||
<t>Simple Notification Service is a pub/sub messaging product from | ||||
AWS. SNS supports a variety of subscriber types: HTTP/HTTPS endp | ||||
oints, | ||||
AWS Lambda functions, email addresses (as JSON or plain text), p | ||||
hone | ||||
numbers (via SMS), and AWS SQS standard queues. It does not dire | ||||
ctly | ||||
support pull, but subscribers can get the pull model by creating | ||||
an | ||||
SQS queue and subscribing it to the topic. Note that this puts t | ||||
he | ||||
cost of pull support back onto the subscriber, just as it is in | ||||
the | ||||
push model. It is not clear that one way is strictly better than | ||||
the | ||||
other; larger, sophisticated developers may be happy to own mess | ||||
age | ||||
persistence so they can have their own internal delivery guarant | ||||
ees. | ||||
The long tail of OIDC clients may not care about that or may fai | ||||
l | ||||
to get it right. Regardless, I think we can learn something from | ||||
the | ||||
Delivery Policies supported by SNS, as well as the delivery cont | ||||
rols | ||||
that SQS offers (e.g., Visibility Timeout, Dead-Letter Queues). | ||||
I am | ||||
not suggesting that we need all of these things in the spec, but | ||||
they give an idea of what features people have found useful.</t> | ||||
<t>Other information:<list style="symbols"> | ||||
<t>API Reference: http://docs.aws.amazon.com/AWSSimpleQueueServi | ||||
ce/latest/APIReference/Welcome.html</t> | ||||
<t>Visibility Timeouts: http://docs.aws.amazon.com/AWSSimpleQueu | ||||
eService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html</t> | ||||
</list></t> | ||||
<t>Apache Kafka</t> | ||||
<t>Apache Kafka is an Apache open source project based upon TCP for | ||||
distributed streaming. It prescribes some interesting general-pu | ||||
rpose | ||||
features that seem to extend far beyond the simpler | ||||
streaming model that SECEVENTs is after. A comment from MS has b | ||||
een that | ||||
Kafka does an acknowledge with poll combination event which seem | ||||
s | ||||
to be a performance advantage. See: https://kafka.apache.org/int | ||||
ro</t> | ||||
<t>Google Pub/Sub</t> | ||||
<t>The Google Pub Sub system favors a model whereby polling and ackn | ||||
owledgement | ||||
of events is done with separate endpoints and as separate functi | ||||
ons.</t> | ||||
<t>Information:<list style="symbols"> | ||||
<t>Cloud Overview - https://cloud.google.com/pubsub/</t> | ||||
<t>Subscriber Overview - https://cloud.google.com/pubsub/docs/su | ||||
bscriber</t> | ||||
<t>Subscriber Pull(poll) - https://cloud.google.com/pubsub/docs/ | ||||
pull</t> | ||||
</list></t> | ||||
</section> | ||||
<section anchor="Acknowledgments" title="Acknowledgments"> | <section anchor="Acknowledgments" numbered="false" toc="default"> | |||
<t> | <name>Acknowledgments</name> | |||
The editors would like to thank the members of the SCIM working group | <t> | |||
, which | The editors would like to thank the members of the SCIM Working Group | |||
, which | ||||
began discussions of provisioning events starting with draft-hunt-sci m-notify-00 in 2015. | began discussions of provisioning events starting with draft-hunt-sci m-notify-00 in 2015. | |||
We would like to thank Phil Hunt and the other authors of draft-ietf- secevent-delivery-02, | We would like to thank <contact fullname="Phil Hunt"/> and the other authors of draft-ietf-secevent-delivery-02, | |||
upon which this specification is based. | upon which this specification is based. | |||
We would like to thank the participants in the SecEvents | We would like to thank the participants in the SecEvents | |||
working group for their contributions to this specification. | Working Group for their contributions to this specification. | |||
</t> | </t> | |||
<t> | <t> | |||
Additionally, we would like to thank the following individuals for th eir reviews of the specification: | Additionally, we would like to thank the following individuals for th eir reviews of the specification: | |||
Joe Clarke, | <contact fullname="Joe Clarke"/>, | |||
Roman Danyliw, | <contact fullname="Roman Danyliw"/>, | |||
Vijay Gurbani, | <contact fullname="Vijay Gurbani"/>, | |||
Benjamin Kaduk, | <contact fullname="Benjamin Kaduk"/>, | |||
Erik Kline, | <contact fullname="Erik Kline"/>, | |||
Murray Kucherawy, | <contact fullname="Murray Kucherawy"/>, | |||
Barry Leiba, | <contact fullname="Barry Leiba"/>, | |||
Yaron Sheffer, | <contact fullname="Yaron Sheffer"/>, | |||
Robert Sparks, | <contact fullname="Robert Sparks"/>, | |||
Valery Smyslov, | <contact fullname="Valery Smyslov"/>, | |||
Éric Vyncke, | <contact fullname="Éric Vyncke"/>, | |||
and | and | |||
Robert Wilton. | <contact fullname="Robert Wilton"/>. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="History" title="Change Log"> | ||||
<t>[[ NOTE TO THE RFC EDITOR: This section to be removed prior to pu | ||||
blication ]]</t> | ||||
<t>Draft 00 - AB - Based on draft-ietf-secevent-delivery-02 with the | </back> | |||
following changes:<list style="symbols"> | ||||
<t>Renamed to "Push-Based SET Token Delivery Using HTTP"</t> | ||||
<t>Removed references to the HTTP Polling delivery method.</t> | ||||
<t>Removed informative reference to RFC6202.</t> | ||||
</list></t> | ||||
<t> | ||||
Draft 01 - AB: | ||||
<list style="symbols"> | ||||
<t>Fixed area and workgroup to match secevent.</t> | ||||
<t>Removed unused definitions and definitions already covere | ||||
d by SET.</t> | ||||
<t>Renamed Event Transmitter and Event Receiver to SET Trans | ||||
mitter and SET Receiver, respectively.</t> | ||||
<t>Added IANA registry for SET Delivery Error Codes.</t> | ||||
<t>Removed enumeration of HTTP authentication methods.</t> | ||||
<t>Removed generally applicable guidance for HTTP, authoriza | ||||
tion tokens, and bearer tokens.</t> | ||||
<t>Moved guidance for using authentication methods as DoS pr | ||||
otection to Security Considerations.</t> | ||||
<t>Removed redundant instruction to use WWW-Authenticate hea | ||||
der.</t> | ||||
<t>Removed further generally applicable guidance for authori | ||||
zation tokens.</t> | ||||
<t>Removed bearer token from example delivery request, and t | ||||
ext referencing it.</t> | ||||
<t>Broke delivery method description into separate request/r | ||||
esponse sections.</t> | ||||
<t>Added missing empty line between headers and body in exam | ||||
ple request.</t> | ||||
<t>Removed inapplicable notes about example formatting.</t> | ||||
<t>Removed text about SET creation and handling.</t> | ||||
<t>Removed duplication in protocol description.</t> | ||||
<t>Added "non-normative example" text to example transmissio | ||||
n request.</t> | ||||
<t>Fixed inconsistencies in use of Error Code term.</t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
Draft 02 - AB: | ||||
<list style="symbols"> | ||||
<t>Rewrote abstract and introduction.</t> | ||||
<t>Rewrote definitions for SET Transmitter, SET Receiver.</t | ||||
> | ||||
<t>Renamed Event Delivery section to SET Delivery.</t> | ||||
<t>Readability edits to Success Response and Failure Respons | ||||
e sections.</t> | ||||
<t>Consolidated definition of error response under Failure R | ||||
esponse section.</t> | ||||
<t>Removed Event Delivery Process section and moved its cont | ||||
ent to parent section.</t> | ||||
<t>Readability edits to SET Delivery section and its subsect | ||||
ions.</t> | ||||
<t>Added callout that SET Receiver HTTP endpoint configurati | ||||
on is out-of-scope.</t> | ||||
<t>Added callout that SET verification mechanisms are out-of | ||||
-scope.</t> | ||||
<t>Added retry guidance, notes regarding delivery reliabilit | ||||
y requirements.</t> | ||||
<t>Added guidance around using JWS and/or JWE to authenticat | ||||
e persisted SETs.</t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
Draft 03 - mbj: | ||||
<list style="symbols"> | ||||
<t> | ||||
Addressed problems identified in my 18-Jul-18 review message ti | ||||
tled | ||||
"Issues for both the Push and Poll Specs". | ||||
</t> | ||||
<t> | ||||
Changes to align terminology with RFC 8417, for instance, | ||||
by using the already defined term SET Recipient rather than SET | ||||
Receiver. | ||||
</t> | ||||
<t> | ||||
Applied editorial and minor normative corrections. | ||||
</t> | ||||
<t> | ||||
Updated Marius' contact information. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
Draft 04 - AB: | ||||
<list style="symbols"> | ||||
<t>Replaced Error Codes with smaller set of meaningfully dif | ||||
ferentiated codes.</t> | ||||
<t>Added more error response examples.</t> | ||||
<t>Removed un-referenced normative references.</t> | ||||
<t>Added normative reference to JSON in error response defin | ||||
ition.</t> | ||||
<t> | ||||
Added text clarifying that the value of the <spanx style | ||||
="verb">description</spanx> | ||||
attribute in error responses is implementation specific. | ||||
</t> | ||||
<t>Added requirement that error descriptions and responses a | ||||
re UTF-8 encoded.</t> | ||||
<t> | ||||
Added error description language preferences and specifi | ||||
cation via <spanx style="verb">Accept-Language</spanx> | ||||
and <spanx style="verb">Content-Language</spanx> headers | ||||
. | ||||
</t> | ||||
<t>Added "recognized issuer" validation requirement in secti | ||||
on 2.</t> | ||||
<t>Added timeouts as an acceptable reason to resend a SET in | ||||
section 2.</t> | ||||
<t>Edited text in section 1 to clarify that configuration is | ||||
out of scope.</t> | ||||
<t>Made minor editorial corrections.</t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
Draft 05 - AB: | ||||
<list style="symbols"> | ||||
<t>Made minor editorial corrections.</t> | ||||
<t>Updated example request with a correct SET header and sig | ||||
nature.</t> | ||||
<t>Revised TLS guidance to allow implementers to provide con | ||||
fidentiality protection via JWE.</t> | ||||
<t>Revised TLS guidance to require *at least* TLS 1.2.</t> | ||||
<t>Revised TLS guidance to recommend supporting the newest v | ||||
ersion of TLS that meets security requirements.</t> | ||||
<t>Revised SET Delivery Error Code format to allow the same | ||||
set of characters as is allowed in error codes in RFC6749.</t> | ||||
<t>Added mention of HTTP Poll spec to list of other streamin | ||||
g specs in appendix.</t> | ||||
<t>Added validation step requiring SET Recipient to verify t | ||||
hat the SET is one which the SET Transmitter is expected to send to the SET Reci | ||||
pient.</t> | ||||
<t>Changed responding to errors with an appropriate HTTP sta | ||||
tus code from optional to recommended.</t> | ||||
<t>Changed Error Codes registry change policy from Expert Re | ||||
view to First Come First Served; added guidance that error codes are meant to be | ||||
consumed by automated systems.</t> | ||||
<t>Added text making clear that it is up to SET Recipients w | ||||
hether or not they will accept SETs where the SET Issuer is different from the S | ||||
ET Transmitter.</t> | ||||
<t>Reworded guidance around signing and/or encrypting SETs f | ||||
or integrity protection.</t> | ||||
<t>Renamed TLS "Support Considerations" section to "Confiden | ||||
tiality of SETs".</t> | ||||
<t>Reworded guidance around subject identifier selection and | ||||
privacy concerns.</t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
Draft 06 - mbj, MS: | ||||
<list style="symbols"> | ||||
<t>Made minor editorial corrections.</t> | ||||
<t>Updated to indicate that failure response should be retur | ||||
ned if errors occur in authenticating the SET.</t> | ||||
<t>Updated reference for JSON from RFC 7159 to RFC 8259.</t> | ||||
<t>Fixed Authentication Using Signed SETs to indicate the SE | ||||
T Transmitter must be authorized to deliver the SET, not the SET Issuer.</t> | ||||
<t>Fixed Authenticating Persisted SETs to put the responsibi | ||||
lity for ensuring the SET is signed on the SET Recipient.</t> | ||||
<t>Fixed error code format definition to match error codes d | ||||
efined in doc.</t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
Draft 07 - AB: | ||||
<list style="symbols"> | ||||
<t>Made minor editorial corrections.</t> | ||||
<t>Removed "SET Recipient" definition and added explicit lis | ||||
t of terms used from RFC8417.</t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
Draft 08 - mbj | ||||
<list style="symbols"> | ||||
<t> | ||||
Addressed area director review comments by Benjamin Kaduk. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
Draft 09 - mbj + AB | ||||
<list style="symbols"> | ||||
<t> | ||||
Corrected editorial nits. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
Draft 10 - AB | ||||
<list style="symbols"> | ||||
<t> | ||||
Addressed area director review comments by Benjamin Kadu | ||||
k: | ||||
<list style="symbols"> | ||||
<t>Added reference to 8417 as definition document fo | ||||
r SETs.</t> | ||||
<t> | ||||
Added text clarifying that determining the SET R | ||||
ecipient's service identity | ||||
is out of scope. | ||||
</t> | ||||
<t> | ||||
Added normative recommendation for transmitters | ||||
to target SETs to specific | ||||
business needs of subscribers. | ||||
</t> | ||||
<t>Minor editorial corrections.</t> | ||||
</list> | ||||
</t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
Draft 11 - mbj | ||||
<list style="symbols"> | ||||
<t> | ||||
Addressed SecDir review comments by Valery Smyslov. | ||||
</t> | ||||
<t> | ||||
Addressed OpsDir review comments by Joe Clarke. | ||||
</t> | ||||
<t> | ||||
Addressed GenArt review comments by Vijay Gurbani. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
Draft 12 - mbj | ||||
<list style="symbols"> | ||||
<t> | ||||
Revised to unambiguously require the use of TLS, | ||||
while preserving descriptions of precautions needed for non-TLS | ||||
use in an appendix. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
Draft 13 - mbj | ||||
<list style="symbols"> | ||||
<t> | ||||
Addressed IESG comments. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
<t> | ||||
Draft 14 - AB | ||||
<list style="symbols"> | ||||
<t> | ||||
Revised normative requirements for SET re-transmission t | ||||
o clarify "at least once" | ||||
delivery expectiations. | ||||
</t> | ||||
<t> | ||||
Added non-normative text to Section 4 - Delivery Reliabi | ||||
lity describing conditions | ||||
where re-transmission of successfully delivered SETs may | ||||
occur. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
</back> | ||||
</rfc> | </rfc> | |||
End of changes. 95 change blocks. | ||||
1061 lines changed or deleted | 749 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |