draft-ietf-secevent-http-push-02.txt   draft-ietf-secevent-http-push-03.txt 
Security Events Working Group A. Backman, Ed. Security Events Working Group A. Backman, Ed.
Internet-Draft Amazon Internet-Draft Amazon
Intended status: Standards Track M. Jones, Ed. Intended status: Standards Track M. Jones, Ed.
Expires: April 4, 2019 Microsoft Expires: April 21, 2019 Microsoft
M. Scurtescu M. Scurtescu
Google Coinbase
M. Ansari M. Ansari
Cisco Cisco
A. Nadalin A. Nadalin
Microsoft Microsoft
October 1, 2018 October 18, 2018
Push-Based SET Token Delivery Using HTTP Push-Based Security Event Token (SET) Delivery Using HTTP
draft-ietf-secevent-http-push-02 draft-ietf-secevent-http-push-03
Abstract Abstract
This specification defines how a Security Event Token (SET) may be This specification defines how a Security Event Token (SET) may be
delivered to an intended recipient using HTTP POST. The SET is delivered to an intended recipient using HTTP POST. The SET is
transmitted in the body of an HTTP POST reqest to an endpoint transmitted in the body of an HTTP POST reqest to an endpoint
operated by the recipient, and the recipient indicates successful or operated by the recipient, and the recipient indicates successful or
failed transmission via the HTTP response. failed transmission via the HTTP response.
Status of This Memo Status of This Memo
skipping to change at page 1, line 41 skipping to change at page 1, line 41
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 4, 2019. This Internet-Draft will expire on April 21, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 34 skipping to change at page 2, line 34
5. Security Considerations . . . . . . . . . . . . . . . . . . . 8 5. Security Considerations . . . . . . . . . . . . . . . . . . . 8
5.1. Authentication Using Signed SETs . . . . . . . . . . . . 8 5.1. Authentication Using Signed SETs . . . . . . . . . . . . 8
5.2. TLS Support Considerations . . . . . . . . . . . . . . . 8 5.2. TLS Support Considerations . . . . . . . . . . . . . . . 8
5.3. Denial of Service . . . . . . . . . . . . . . . . . . . . 8 5.3. Denial of Service . . . . . . . . . . . . . . . . . . . . 8
5.4. Authenticating Persisted SETs . . . . . . . . . . . . . . 8 5.4. Authenticating Persisted SETs . . . . . . . . . . . . . . 8
6. Privacy Considerations . . . . . . . . . . . . . . . . . . . 9 6. Privacy Considerations . . . . . . . . . . . . . . . . . . . 9
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
7.1. Security Event Token Delivery Error Codes . . . . . . . . 9 7.1. Security Event Token Delivery Error Codes . . . . . . . . 9
7.1.1. Registration Template . . . . . . . . . . . . . . . . 9 7.1.1. Registration Template . . . . . . . . . . . . . . . . 9
7.1.2. Initial Registry Contents . . . . . . . . . . . . . . 10 7.1.2. Initial Registry Contents . . . . . . . . . . . . . . 10
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 11
8.1. Normative References . . . . . . . . . . . . . . . . . . 13 8.1. Normative References . . . . . . . . . . . . . . . . . . 11
8.2. Informative References . . . . . . . . . . . . . . . . . 15 8.2. Informative References . . . . . . . . . . . . . . . . . 13
Appendix A. Other Streaming Specifications . . . . . . . . . . . 16 Appendix A. Other Streaming Specifications . . . . . . . . . . . 13
Appendix B. Acknowledgments . . . . . . . . . . . . . . . . . . 17 Appendix B. Acknowledgments . . . . . . . . . . . . . . . . . . 15
Appendix C. Change Log . . . . . . . . . . . . . . . . . . . . . 18 Appendix C. Change Log . . . . . . . . . . . . . . . . . . . . . 15
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17
1. Introduction and Overview 1. Introduction and Overview
This specification defines a mechanism by which a holder of a This specification defines a mechanism by which a transmitter of a
Security Event Token (SET) [RFC8417] may deliver the SET to an Security Event Token (SET) [RFC8417] may deliver the SET to an
intended recipient via HTTP POST [RFC7231]. intended recipient via HTTP POST [RFC7231].
Push-Based SET Delivery over HTTP POST is intended for scenarios Push-Based SET Delivery over HTTP POST is intended for scenarios
where all of the following apply: where all of the following apply:
o The holder of the SET is capable of making outbound HTTP requests. o The transmitter of the SET is capable of making outbound HTTP
requests.
o The recipient is capable of hosting an HTTP endpoint that is o The recipient is capable of hosting an HTTP endpoint that is
accessible to the transmitter. accessible to the transmitter.
o The transmitter and recipient are known to one another. o The transmitter and recipient are known to one another.
o The transmitter and recipient have an out-of-band mechanism for o The transmitter and recipient have an out-of-band mechanism for
exchanging configuration metadata such as endpoint URLs and exchanging configuration metadata such as endpoint URLs and
security key parameters. cryptographic key parameters.
1.1. Notational Conventions 1.1. Notational Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
Throughout this documents all figures may contain spaces and extra Throughout this documents all figures may contain spaces and extra
line-wrapping for readability and space limitations. line-wrapping for readability and due to space limitations.
1.2. Definitions 1.2. Definitions
This specification utilizes terminology defined in [RFC8417], as well This specification utilizes terminology defined in [RFC8417], as well
as the terms defined below: as the terms defined below:
SET Transmitter SET Transmitter
An entity that delivers SETs in its possession to one or more SET An entity that delivers SETs in its possession to one or more SET
Receivers. Recipients.
SET Receiver
An entity that operates an endpoint where it expects to receive
SETs from one or more SET Transmitters.
2. SET Delivery 2. SET Delivery
To deliver a SET to a given SET Receiver, the SET Transmitter makes a To deliver a SET to a given SET Recipient, the SET Transmitter makes
SET Transmission Request to the SET Receiver, with the SET itself a SET Transmission Request to the SET Recipient, with the SET itself
contained within the request. The SET Receiver replies to this contained within the request. The SET Recipient replies to this
request with a response either acknowledging successful transmission request with a response either acknowledging successful transmission
of the SET, or indicating that an error occurred while receiving, of the SET, or indicating that an error occurred while receiving,
parsing, and/or validating the SET. parsing, and/or validating the SET.
Upon receipt of a SET, the SET Receiver SHALL validate that all of Upon receipt of a SET, the SET Recipient SHALL validate that all of
the following are true: the following are true:
o The SET Receiver can parse the SET. o The SET Recipient can parse the SET.
o The SET is authentic (i.e. it was issued by the issuer specified o The SET is authentic (i.e., it was issued by the issuer specified
within the SET). within the SET).
o The SET Receiver is identified as the intended audience of the o The SET Recipient is identified as an intended audience of the
SET. SET.
The mechanisms by which the SET Receiver performs this validation are The mechanisms by which the SET Recipient performs this validation
out-of-scope for this document. SET parsing and issuer and audience are out of scope for this document. SET parsing and issuer and
identification are defined in [RFC8417]. The mechanism for audience identification are defined in [RFC8417]. The mechanism for
validating the authenticity of a SET is implementation specific, and validating the authenticity of a SET is implementation specific, and
may vary depending on the authentication mechanisms in use, and may vary depending on the authentication mechanisms in use, and
whether the SET is signed and/or encrypted (See Section 3). whether the SET is signed and/or encrypted (See Section 3).
The SET Receiver SHOULD ensure that the SET is persisted in a way The SET Recipient SHOULD ensure that the SET is persisted in a way
that is sufficient to meet the SET Receiver's own reliability that is sufficient to meet the SET Recipient's own reliability
requirements, and MUST NOT expect or depend on a SET Transmitter to requirements, and MUST NOT expect or depend on a SET Transmitter to
re-transmit or otherwise make available to the SET Receiver a SET re-transmit or otherwise make available to the SET Recipient a SET
once the SET Receiver acknowledges that it was received successfully. once the SET Recipient acknowledges that it was received
successfully.
Once the SET has been validated and persisted, the SET Receiver Once the SET has been validated and persisted, the SET Recipient
SHOULD immediately return a response indicating that the SET was SHOULD immediately return a response indicating that the SET was
successfully delivered. The SET Receiver SHOULD NOT perform successfully delivered. The SET Recipient SHOULD NOT perform
extensive business logic that processes the event expressed by the extensive business logic that processes the event expressed by the
SET prior to sending this response. Such logic SHOULD be executed SET prior to sending this response. Such logic SHOULD be executed
asynchronously from delivery, in order to minimize the expense and asynchronously from delivery, in order to minimize the expense and
impact of SET delivery on the SET Transmitter. impact of SET delivery on the SET Transmitter.
The SET Transmitter SHOULD NOT re-transmit a SET, unless the response The SET Transmitter SHOULD NOT re-transmit a SET, unless the response
from the SET Receiver in previous transmissions indicated a from the SET Recipient in previous transmissions indicated a
potentially recoverable error (such as server unavailability that may potentially recoverable error (such as server unavailability that may
be transient, or a decryption failure that may be due to be transient, or a decryption failure that may be due to
misconfigured keys on the SET Receiver's side). In the latter case, misconfigured keys on the SET Recipient's side). In the latter case,
the SET Transmitter MAY re-transmit a SET, after an appropriate delay the SET Transmitter MAY re-transmit a SET, after an appropriate delay
to avoid overwhelming the SET Receiver (see Section 4). to avoid overwhelming the SET Recipient (see Section 4).
The SET Transmitter MAY provide an out-of-band mechanism by which a
SET Receiver may be notified of delivery failures, and MAY retain
SETs that it failed to deliver and make them available to the SET
Receiver via other means.
2.1. Transmitting a SET 2.1. Transmitting a SET
To transmit a SET to a SET Receiver, the SET Transmitter makes an To transmit a SET to a SET Recipient, the SET Transmitter makes an
HTTP POST request to an HTTP endpoint provided by the SET Receiver. HTTP POST request to an HTTP endpoint provided by the SET Recipient.
The "Content-Type" header of this request MUST be "application/ The "Content-Type" header of this request MUST be "application/
secevent+jwt" as defined in Sections 2.2 and 6.2 of RFC8417 secevent+jwt" as defined in Sections 2.2 and 6.2 of [RFC8417], and
[RFC8417], and the "Accept" header MUST be "application/json". The the "Accept" header MUST be "application/json". The request body
request body MUST consist of the SET itself, represented as a JWT MUST consist of the SET itself, represented as a JWT [RFC7519].
[RFC7519].
The mechanisms by which the SET Transmitter determines the HTTP The mechanisms by which the SET Transmitter determines the HTTP
endpoint to use when transmitting a SET to a given SET Receiver are endpoint to use when transmitting a SET to a given SET Recipient are
not defined by this specification and may be implementation-specific. not defined by this specification and may be implementation-specific.
The following is a non-normative example of a SET transmission The following is a non-normative example of a SET transmission
request: request:
POST /Events HTTP/1.1 POST /Events HTTP/1.1
Host: notify.examplerp.com Host: notify.rp.example.com
Accept: application/json Accept: application/json
Content-Type: application/secevent+jwt Content-Type: application/secevent+jwt
eyJhbGciOiJub25lIn0 eyJhbGciOiJub25lIn0
. .
eyJwdWJsaXNoZXJVcmkiOiJodHRwczovL3NjaW0uZXhhbXBsZS5jb20iLCJmZWV eyJwdWJsaXNoZXJVcmkiOiJodHRwczovL3NjaW0uZXhhbXBsZS5jb20iLCJmZWV
kVXJpcyI6WyJodHRwczovL2podWIuZXhhbXBsZS5jb20vRmVlZHMvOThkNTI0Nj kVXJpcyI6WyJodHRwczovL2podWIuZXhhbXBsZS5jb20vRmVlZHMvOThkNTI0Nj
FmYTViYmM4Nzk1OTNiNzc1NCIsImh0dHBzOi8vamh1Yi5leGFtcGxlLmNvbS9GZ FmYTViYmM4Nzk1OTNiNzc1NCIsImh0dHBzOi8vamh1Yi5leGFtcGxlLmNvbS9GZ
WVkcy81ZDc2MDQ1MTZiMWQwODY0MWQ3Njc2ZWU3Il0sInJlc291cmNlVXJpcyI6 WVkcy81ZDc2MDQ1MTZiMWQwODY0MWQ3Njc2ZWU3Il0sInJlc291cmNlVXJpcyI6
WyJodHRwczovL3NjaW0uZXhhbXBsZS5jb20vVXNlcnMvNDRmNjE0MmRmOTZiZDZ WyJodHRwczovL3NjaW0uZXhhbXBsZS5jb20vVXNlcnMvNDRmNjE0MmRmOTZiZDZ
skipping to change at page 5, line 38 skipping to change at page 5, line 32
SwidmFsdWVzIjp7ImVtYWlscyI6W3sidHlwZSI6IndvcmsiLCJ2YWx1ZSI6Impk SwidmFsdWVzIjp7ImVtYWlscyI6W3sidHlwZSI6IndvcmsiLCJ2YWx1ZSI6Impk
b2VAZXhhbXBsZS5jb20ifV0sInBhc3N3b3JkIjoibm90NHUybm8iLCJ1c2VyTmF b2VAZXhhbXBsZS5jb20ifV0sInBhc3N3b3JkIjoibm90NHUybm8iLCJ1c2VyTmF
tZSI6Impkb2UiLCJpZCI6IjQ0ZjYxNDJkZjk2YmQ2YWI2MWU3NTIxZDkiLCJuYW tZSI6Impkb2UiLCJpZCI6IjQ0ZjYxNDJkZjk2YmQ2YWI2MWU3NTIxZDkiLCJuYW
1lIjp7ImdpdmVuTmFtZSI6IkpvaG4iLCJmYW1pbHlOYW1lIjoiRG9lIn19fQ 1lIjp7ImdpdmVuTmFtZSI6IkpvaG4iLCJmYW1pbHlOYW1lIjoiRG9lIn19fQ
. .
Figure 1: Example SET Transmission Request Figure 1: Example SET Transmission Request
2.2. Success Response 2.2. Success Response
If the SET is determined to be valid, the SET Receiver SHALL If the SET is determined to be valid, the SET Recipient SHALL
"acknowledge" successful transmission by responding with HTTP "acknowledge" successful transmission by responding with HTTP
Response Status Code 202 (see Section 6.3.3 of RFC7231 [RFC7231]). Response Status Code 202 (Accepted) (see Section 6.3.3 of [RFC7231]).
The body of the response MUST be empty. The body of the response MUST be empty.
The following is a non-normative example of a successful receipt of a The following is a non-normative example of a successful receipt of a
SET. SET.
HTTP/1.1 202 Accepted HTTP/1.1 202 Accepted
Figure 2: Example Successful Delivery Response Figure 2: Example Successful Delivery Response
Note that the purpose of the "acknowledgement" response is to let the Note that the purpose of the "acknowledgement" response is to let the
SET Transmitter know that a SET has been delivered and the SET Transmitter know that a SET has been delivered and the
information no longer needs to be retained by the SET Transmitter. information no longer needs to be retained by the SET Transmitter.
Before acknowledgement, SET Receivers SHOULD ensure they have Before acknowledgement, SET Recipients SHOULD ensure they have
validated received SETs and retained them in a manner appropriate to validated received SETs and retained them in a manner appropriate to
information retention requirements appropriate to the SET event types information retention requirements appropriate to the SET event types
signaled. The level and method of retention of SETs by SET Receivers signaled. The level and method of retention of SETs by SET
is out-of-scope of this specification. Recipients is out of scope of this specification.
2.3. Failure Response 2.3. Failure Response
In the event of a general HTTP error condition, the SET Receiver MAY In the event of a general HTTP error condition, the SET Recipient MAY
respond with an appropriate HTTP Status Code as defined in Section 6 respond with an appropriate HTTP Status Code as defined in Section 6
of RFC7231 [RFC7231]. of [RFC7231].
When the SET Receiver detects an error parsing or validating a SET When the SET Recipient detects an error parsing or validating a SET
transmitted in a SET Transmission Request, the SET Receiver SHALL transmitted in a SET Transmission Request, the SET Recipient SHALL
respond with an HTTP Response Status Code of 400. The "Content-Type" respond with an HTTP Response Status Code of 400 (Bad Request). The
header of this response MUST be "application/json", and the body MUST "Content-Type" header of this response MUST be "application/json",
be a JSON object containing the following name/value pairs: and the body MUST be a JSON object containing the following name/
value pairs:
err A Security Event Token Error Code (see Section 2.4). err A Security Event Token Error Code (see Section 2.4).
description Human-readable text that describes the error and MAY description Human-readable text that describes the error and MAY
contain additional diagnostic information. contain additional diagnostic information.
The following is an example non-normative error response. The following is an example non-normative error response.
HTTP/1.1 400 Bad Request HTTP/1.1 400 Bad Request
Content-Type: application/json Content-Type: application/json
skipping to change at page 7, line 11 skipping to change at page 7, line 11
The following table presents the initial set of Error Codes that are The following table presents the initial set of Error Codes that are
registered in the IANA "Security Event Token Delivery Error Codes" registered in the IANA "Security Event Token Delivery Error Codes"
registry: registry:
+-----------+-------------------------------------------------------+ +-----------+-------------------------------------------------------+
| Error | Description | | Error | Description |
| Code | | | Code | |
+-----------+-------------------------------------------------------+ +-----------+-------------------------------------------------------+
| json | Invalid JSON object. | | json | Invalid JSON object. |
| jwtParse | Invalid or unparsable JWT or JSON structure. | | jwtParse | Invalid or unparsable JWT or JSON structure. |
| jwtHdr | In invalid JWT header was detected. | | jwtHdr | An invalid JWT header was detected. |
| jwtCrypto | Unable to parse due to unsupported algorithm. | | jwtCrypto | Unable to parse due to unsupported algorithm. |
| jws | Signature was not validated. | | jws | Signature was not validated. |
| jwe | Unable to decrypt JWE encoded data. | | jwe | Unable to decrypt JWE encoded data. |
| jwtAud | Invalid audience value. | | jwtAud | Invalid audience value. |
| jwtIss | Issuer not recognized. | | jwtIss | Issuer not recognized. |
| setType | An unexpected Event type was received. | | setType | An unexpected Event type was received. |
| setParse | Invalid structure was encountered such as an | | setParse | Invalid structure was encountered such as an |
| | inability to parse or an incomplete set of Event | | | inability to parse or an incomplete set of Event |
| | claims. | | | claims. |
| setData | SET event claims incomplete or invalid. | | setData | SET claims incomplete or invalid. |
| dup | A duplicate SET was received and has been ignored. | | dup | A duplicate SET was received and has been ignored. |
+-----------+-------------------------------------------------------+ +-----------+-------------------------------------------------------+
Table 1: SET Delivery Error Codes Table 1: SET Delivery Error Codes
3. Authentication and Authorization 3. Authentication and Authorization
The SET delivery method described in this specification is based upon The SET delivery method described in this specification is based upon
HTTP and depends on the use of TLS and/or standard HTTP HTTP and depends on the use of TLS and/or standard HTTP
authentication and authorization schemes as per [RFC7235]. authentication and authorization schemes as per [RFC7235].
Because SET Delivery describes a simple function, authorization for Because SET Delivery describes a simple function, authorization for
the ability to pick-up or deliver SETs can be derived by considering the ability to pick-up or deliver SETs can be derived by considering
the identity of the SET issuer, or via other employed authentication the identity of the SET issuer, or via other employed authentication
methods. Because SETs are not commands (see ), SET Receivers are methods. Because SETs are not commands, SET Recipients are free to
free to ignore SETs that are not of interest. ignore SETs that are not of interest.
4. Delivery Reliability 4. Delivery Reliability
Delivery reliability requirements may vary from implementation to Delivery reliability requirements may vary from implementation to
implementation. This specification defines the response from the SET implementation. This specification defines the response from the SET
Receiver in such a way as to provide the SET Transmitter with the Recipient in such a way as to provide the SET Transmitter with the
information necessary to determine what further action is required, information necessary to determine what further action is required,
if any, in order to meet their requirements. SET Transmitters with if any, in order to meet their requirements. SET Transmitters with
high reliability requirements may be tempted to always retry failed high reliability requirements may be tempted to always retry failed
transmissions, however it should be noted that for many types of SET transmissions, however it should be noted that for many types of SET
delivery errors, a retry is extremely unlikely to be successful. For delivery errors, a retry is extremely unlikely to be successful. For
example, "json", "jwtParse", and "setParse" all indicate structural example, "json", "jwtParse", and "setParse" all indicate structural
errors in the content of the SET that are likely to remain when re- errors in the content of the SET that are likely to remain when re-
transmitting the same SET. Others such as "jws" or "jwe" may be transmitting the same SET. Others such as "jws" or "jwe" may be
transient, for example if cryptographic material has not been transient, for example if cryptographic material has not been
properly distributed to the SET Receiver's systems. properly distributed to the SET Recipient's systems.
Implementers SHOULD evaluate their reliability requirements and the Implementers SHOULD evaluate their reliability requirements and the
impact of various retry mechanisms on the performance of their impact of various retry mechanisms on the performance of their
systems to determine the correct strategy for various error systems to determine the correct strategy for various error
conditions. conditions.
5. Security Considerations 5. Security Considerations
5.1. Authentication Using Signed SETs 5.1. Authentication Using Signed SETs
In scenarios where HTTP authorization or TLS mutual authentication In scenarios where HTTP authorization or TLS mutual authentication
are not used or are considered weak, JWS signed SETs SHOULD be used are not used or are considered weak, JWS signed SETs SHOULD be used
(see [RFC7515] and Security Considerations [RFC8417]). This enables (see [RFC7515] and Security Considerations [RFC8417]). This enables
the SET Receiver to validate that the SET issuer is authorized to the SET Recipient to validate that the SET issuer is authorized to
deliver SETs. deliver the SET.
5.2. TLS Support Considerations 5.2. TLS Support Considerations
SETs contain sensitive information that is considered PII (e.g. SETs may contain sensitive information that is considered PII (e.g.,
subject claims). Therefore, SET Transmitters and SET Receivers MUST subject claims). In such cases, SET Transmitters and SET Recipients
require the use of a transport-layer security mechanism. Event MUST require the use of a transport-layer security mechanism. Event
delivery endpoints MUST support TLS 1.2 [RFC5246] and MAY support delivery endpoints MUST support TLS 1.2 [RFC5246] and MAY support
additional transport-layer mechanisms meeting its security additional transport-layer mechanisms meeting its security
requirements. When using TLS, the client MUST perform a TLS/SSL requirements. When using TLS, the client MUST perform a TLS/SSL
server certificate check, per [RFC6125]. Implementation security server certificate check, per [RFC6125]. Implementation security
considerations for TLS can be found in "Recommendations for Secure considerations for TLS can be found in "Recommendations for Secure
Use of TLS and DTLS" [RFC7525]. Use of TLS and DTLS" [RFC7525].
5.3. Denial of Service 5.3. Denial of Service
The SET Receiver may be vulnerable to a denial-of-service attack The SET Recipient may be vulnerable to a denial-of-service attack
where a malicious party makes a high volume of requests containing where a malicious party makes a high volume of requests containing
invalid SETs, causing the endpoint to expend significant resources on invalid SETs, causing the endpoint to expend significant resources on
cryptographic operations that are bound to fail. This may be cryptographic operations that are bound to fail. This may be
mitigated by authenticating SET Transmitters with a mechanism with mitigated by authenticating SET Transmitters with a mechanism with
low runtime overhead, such as mutual TLS or statically assigned low runtime overhead, such as mutual TLS.
bearer tokens.
5.4. Authenticating Persisted SETs 5.4. Authenticating Persisted SETs
At the time of receipt, the SET Receiver can rely upon transport At the time of receipt, the SET Recipient can rely upon transport
layer mechanisms, HTTP authentication methods, and/or other context layer mechanisms, HTTP authentication methods, and/or other context
from the transmission request to authenticate the SET Transmitter and from the transmission request to authenticate the SET Transmitter and
validate the authenticity of the SET. However, this context is validate the authenticity of the SET. However, this context is
typically unavailable to systems that the SET Receiver forwards the typically unavailable to systems that the SET Recipient forwards the
SET onto, or to systems that retrieve the SET from storage. If the SET onto, or to systems that retrieve the SET from storage. If the
SET Receiver requires the ability to validate SET authenticity SET Recipient requires the ability to validate SET authenticity
outside of the context of the transmission request, then the SET outside of the context of the transmission request, then the SET
Transmitter SHOULD sign the SET in accordance with [RFC7515], or Transmitter SHOULD sign the SET in accordance with [RFC7515] and
encrypt it using an authenticated encryption scheme in accordance optionally also encrypt it in accordance with [RFC7516].
with [RFC7516].
6. Privacy Considerations 6. Privacy Considerations
If a SET needs to be retained for audit purposes, JWS MAY be used to If a SET needs to be retained for audit purposes, a JWS signature MAY
provide verification of its authenticity. be used to provide verification of its authenticity.
When sharing personally identifiable information or information that When sharing personally identifiable information or information that
is otherwise considered confidential to affected users, SET is otherwise considered confidential to affected users, SET
Transmitters and Receivers MUST have the appropriate legal agreements Transmitters and Recipients MUST have the appropriate legal
and user consent or terms of service in place. agreements and user consent or terms of service in place.
The propagation of subject identifiers can be perceived as personally The propagation of subject identifiers can be perceived as personally
identifiable information. Where possible, SET Transmitters and identifiable information. Where possible, SET Transmitters and
Receivers SHOULD devise approaches that prevent propagation -- for Recipients SHOULD devise approaches that prevent propagation -- for
example, the passing of a hash value that requires the subscriber to example, the passing of a hash value that requires the subscriber to
already know the subject. already know the subject.
7. IANA Considerations 7. IANA Considerations
7.1. Security Event Token Delivery Error Codes 7.1. Security Event Token Delivery Error Codes
This document defines Security Event Token Delivery Error Codes, for This document defines Security Event Token Delivery Error Codes, for
which IANA is asked to create and maintain a new registry titled which IANA is asked to create and maintain a new registry titled
"Security Event Token Delivery Error Codes". Initial values for the "Security Event Token Delivery Error Codes". Initial values for the
skipping to change at page 10, line 19 skipping to change at page 10, line 16
Defining Document(s) Defining Document(s)
A reference to the document or documents that define the Security A reference to the document or documents that define the Security
Event Token Delivery Error Code. The definition MUST specify the Event Token Delivery Error Code. The definition MUST specify the
name and description of the error code, and explain under what name and description of the error code, and explain under what
circumstances the error code may be used. URIs that can be used circumstances the error code may be used. URIs that can be used
to retrieve copies of each document at no cost SHOULD be included. to retrieve copies of each document at no cost SHOULD be included.
7.1.2. Initial Registry Contents 7.1.2. Initial Registry Contents
o Error Code: json
Description: Invalid JSON object
Error Code Change Controller: IETF Secevent Working Group
json Defining Document(s): Section 2.4 of this document
Description
Invalid JSON object.
Change Controller
IETF Secevent Working Group
Defining Document(s)
Section 2.4 of this document.
o
Error Code
jwtParse
Description
Invalid or unparsable JWT or JSON structure.
Change Controller
IETF Secevent Working Group
Defining Document(s)
Section 2.4 of this document.
o
Error Code
jwtHdr
Description
An invalid JWT header was detected.
Change Controller
IETF Secevent Working Group
Defining Document(s)
Section 2.4 of this document.
o
Error Code
jwtCrypto
Description
Unable to parse due to unsupported algorithm.
Change Controller
IETF Secevent Working Group
Defining Document(s)
Section 2.4 of this document.
o
Error Code
jws
Description
Signature was not validated.
Change Controller
IETF Secevent Working Group
Defining Document(s)
Section 2.4 of this document.
o
Error Code
jwe
Description
Unable to decrypt JWE encoded data.
Change Controller
IETF Secevent Working Group
Defining Document(s)
Section 2.4 of this document.
o
Error Code
jwtAud
Description
Invalid audience value.
Change Controller
IETF Secevent Working Group
Defining Document(s)
Section 2.4 of this document.
o
Error Code
jwtIss
Description
Issuer not recognized.
Change Controller
Defining Document(s)
Section 2.4 of this document.
o
Error Code
setType
Description
An unexpected Event type was received.
Change Controller
IETF Secevent Working Group
Defining Document(s)
Section 2.4 of this document.
o
Error Code
setParse
Description
Invalid structure was encountered such as an inability to parse
or an incomplete set of Event claims.
Change Controller
IETF Secevent Working Group
Defining Document(s) Error Code: jwtParse
Section 2.4 of this document. Description: Invalid or unparsable JWT or JSON structure
Change Controller: IETF Secevent Working Group
Defining Document(s): Section 2.4 of this document
o Error Code: jwtHdr
Description: An invalid JWT header was detected
Change Controller: IETF Secevent Working Group
Defining Document(s): Section 2.4 of this document
Error Code Error Code: jwtCrypto
setData Description: Unable to parse due to unsupported algorithm
Change Controller: IETF Secevent Working Group
Defining Document(s): Section 2.4 of this document
Description Error Code: jws
SET event claims incomplete or invalid. Description: Signature was not validated
Change Controller: IETF Secevent Working Group
Defining Document(s): Section 2.4 of this document
Change Controller Error Code: jwe
IETF Secevent Working Group Description: Unable to decrypt JWE encoded data
Change Controller: IETF Secevent Working Group
Defining Document(s): Section 2.4 of this document
Defining Document(s) Error Code: jwtAud
Section 2.4 of this document. Description: Invalid audience value
Change Controller: IETF Secevent Working Group
Defining Document(s): Section 2.4 of this document
o Error Code: jwtIss
Description: Issuer not recognized
Change Controller:
Defining Document(s): Section 2.4 of this document
Error Code Error Code: setType
dup Description: An unexpected Event type was received
Change Controller: IETF Secevent Working Group
Defining Document(s): Section 2.4 of this document
Description Error Code: setParse
A duplicate SET was received and has been ignored. Description: Invalid structure was encountered such as an
inability to parse or an incomplete set of Event claims.
Change Controller: IETF Secevent Working Group
Defining Document(s): Section 2.4 of this document
Change Controller Error Code: setData
IETF Secevent Working Group Description: SET claims incomplete or invalid
Change Controller: IETF Secevent Working Group
Defining Document(s): Section 2.4 of this document
Defining Document(s) Error Code: dup
Section 2.4 of this document. Description: A duplicate SET was received and has been ignored.
Change Controller: IETF Secevent Working Group
Defining Document(s): Section 2.4 of this document
8. References 8. References
8.1. Normative References 8.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
skipping to change at page 14, line 35 skipping to change at page 12, line 21
[RFC7159] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data [RFC7159] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data
Interchange Format", RFC 7159, DOI 10.17487/RFC7159, March Interchange Format", RFC 7159, DOI 10.17487/RFC7159, March
2014, <https://www.rfc-editor.org/info/rfc7159>. 2014, <https://www.rfc-editor.org/info/rfc7159>.
[RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer
Protocol (HTTP/1.1): Semantics and Content", RFC 7231, Protocol (HTTP/1.1): Semantics and Content", RFC 7231,
DOI 10.17487/RFC7231, June 2014, DOI 10.17487/RFC7231, June 2014,
<https://www.rfc-editor.org/info/rfc7231>. <https://www.rfc-editor.org/info/rfc7231>.
[RFC7515] Jones, M., Bradley, J., and N. Sakimura, "JSON Web
Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, May
2015, <https://www.rfc-editor.org/info/rfc7515>.
[RFC7516] Jones, M. and J. Hildebrand, "JSON Web Encryption (JWE)",
RFC 7516, DOI 10.17487/RFC7516, May 2015,
<https://www.rfc-editor.org/info/rfc7516>.
[RFC7517] Jones, M., "JSON Web Key (JWK)", RFC 7517, [RFC7517] Jones, M., "JSON Web Key (JWK)", RFC 7517,
DOI 10.17487/RFC7517, May 2015, DOI 10.17487/RFC7517, May 2015,
<https://www.rfc-editor.org/info/rfc7517>. <https://www.rfc-editor.org/info/rfc7517>.
[RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token
(JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015,
<https://www.rfc-editor.org/info/rfc7519>. <https://www.rfc-editor.org/info/rfc7519>.
[RFC7525] Sheffer, Y., Holz, R., and P. Saint-Andre, [RFC7525] Sheffer, Y., Holz, R., and P. Saint-Andre,
"Recommendations for Secure Use of Transport Layer "Recommendations for Secure Use of Transport Layer
skipping to change at page 15, line 16 skipping to change at page 13, line 12
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8417] Hunt, P., Ed., Jones, M., Denniss, W., and M. Ansari, [RFC8417] Hunt, P., Ed., Jones, M., Denniss, W., and M. Ansari,
"Security Event Token (SET)", RFC 8417, "Security Event Token (SET)", RFC 8417,
DOI 10.17487/RFC8417, July 2018, DOI 10.17487/RFC8417, July 2018,
<https://www.rfc-editor.org/info/rfc8417>. <https://www.rfc-editor.org/info/rfc8417>.
8.2. Informative References 8.2. Informative References
[openid-connect-core]
NRI, "OpenID Connect Core 1.0", Nov 2014.
[RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: [RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet:
Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002,
<https://www.rfc-editor.org/info/rfc3339>. <https://www.rfc-editor.org/info/rfc3339>.
[RFC6749] Hardt, D., Ed., "The OAuth 2.0 Authorization Framework", [RFC6749] Hardt, D., Ed., "The OAuth 2.0 Authorization Framework",
RFC 6749, DOI 10.17487/RFC6749, October 2012, RFC 6749, DOI 10.17487/RFC6749, October 2012,
<https://www.rfc-editor.org/info/rfc6749>. <https://www.rfc-editor.org/info/rfc6749>.
[RFC6750] Jones, M. and D. Hardt, "The OAuth 2.0 Authorization [RFC6750] Jones, M. and D. Hardt, "The OAuth 2.0 Authorization
Framework: Bearer Token Usage", RFC 6750, Framework: Bearer Token Usage", RFC 6750,
skipping to change at page 15, line 42 skipping to change at page 13, line 35
[RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer
Protocol (HTTP/1.1): Message Syntax and Routing", Protocol (HTTP/1.1): Message Syntax and Routing",
RFC 7230, DOI 10.17487/RFC7230, June 2014, RFC 7230, DOI 10.17487/RFC7230, June 2014,
<https://www.rfc-editor.org/info/rfc7230>. <https://www.rfc-editor.org/info/rfc7230>.
[RFC7235] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer [RFC7235] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer
Protocol (HTTP/1.1): Authentication", RFC 7235, Protocol (HTTP/1.1): Authentication", RFC 7235,
DOI 10.17487/RFC7235, June 2014, DOI 10.17487/RFC7235, June 2014,
<https://www.rfc-editor.org/info/rfc7235>. <https://www.rfc-editor.org/info/rfc7235>.
[RFC7515] Jones, M., Bradley, J., and N. Sakimura, "JSON Web
Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, May
2015, <https://www.rfc-editor.org/info/rfc7515>.
[RFC7516] Jones, M. and J. Hildebrand, "JSON Web Encryption (JWE)",
RFC 7516, DOI 10.17487/RFC7516, May 2015,
<https://www.rfc-editor.org/info/rfc7516>.
[RFC7521] Campbell, B., Mortimore, C., Jones, M., and Y. Goland, [RFC7521] Campbell, B., Mortimore, C., Jones, M., and Y. Goland,
"Assertion Framework for OAuth 2.0 Client Authentication "Assertion Framework for OAuth 2.0 Client Authentication
and Authorization Grants", RFC 7521, DOI 10.17487/RFC7521, and Authorization Grants", RFC 7521, DOI 10.17487/RFC7521,
May 2015, <https://www.rfc-editor.org/info/rfc7521>. May 2015, <https://www.rfc-editor.org/info/rfc7521>.
[RFC7617] Reschke, J., "The 'Basic' HTTP Authentication Scheme", [RFC7617] Reschke, J., "The 'Basic' HTTP Authentication Scheme",
RFC 7617, DOI 10.17487/RFC7617, September 2015, RFC 7617, DOI 10.17487/RFC7617, September 2015,
<https://www.rfc-editor.org/info/rfc7617>. <https://www.rfc-editor.org/info/rfc7617>.
[saml-core-2.0]
Internet2, "Assertions and Protocols for the OASIS
Security Assertion Markup Language (SAML) V2.0", March
2005.
Appendix A. Other Streaming Specifications Appendix A. Other Streaming Specifications
[[EDITORS NOTE: This section to be removed prior to publication]] [[EDITORS NOTE: This section to be removed prior to publication]]
The following pub/sub, queuing, streaming systems were reviewed as The following pub/sub, queuing, streaming systems were reviewed as
possible solutions or as input to the current draft: possible solutions or as input to the current draft:
XMPP Events XMPP Events
The WG considered the XMPP events ands its ability to provide a The WG considered the XMPP events ands its ability to provide a
single messaging solution without the need for both polling and push single messaging solution without the need for both polling and push
modes. The feeling was the size and methodology of XMPP was to far modes. The feeling was the size and methodology of XMPP was to far
apart from the current capabilities of the SECEVENTs community which apart from the current capabilities of the SECEVENTs community which
focuses in on HTTP based service delivery and authorization. focuses in on HTTP based service delivery and authorization.
Amazon Simple Notification Service Amazon Simple Notification Service
Simple Notification Service, is a pub/sub messaging product from AWS. Simple Notification Service, is a pub/sub messaging product from AWS.
SNS supports a variety of subscriber types: HTTP/HTTPS endpoints, AWS SNS supports a variety of subscriber types: HTTP/HTTPS endpoints, AWS
skipping to change at page 16, line 49 skipping to change at page 14, line 25
numbers (via SMS), and AWS SQS standard queues. It doesn't directly numbers (via SMS), and AWS SQS standard queues. It doesn't directly
support pull, but subscribers can get the pull model by creating an support pull, but subscribers can get the pull model by creating an
SQS queue and subscribing it to the topic. Note that this puts the SQS queue and subscribing it to the topic. Note that this puts the
cost of pull support back onto the subscriber, just as it is in the 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 push model. It is not clear that one way is strictly better than the
other; larger, sophisticated developers may be happy to own message other; larger, sophisticated developers may be happy to own message
persistence so they can have their own internal delivery guarantees. persistence so they can have their own internal delivery guarantees.
The long tail of OIDC clients may not care about that, or may fail to The long tail of OIDC clients may not care about that, or may fail to
get it right. Regardless, I think we can learn something from the get it right. Regardless, I think we can learn something from the
Delivery Policies supported by SNS, as well as the delivery controls Delivery Policies supported by SNS, as well as the delivery controls
that SQS offers (e.g. Visibility Timeout, Dead-Letter Queues). I'm that SQS offers (e.g., Visibility Timeout, Dead-Letter Queues). I'm
not suggesting that we need all of these things in the spec, but they not suggesting that we need all of these things in the spec, but they
give an idea of what features people have found useful. give an idea of what features people have found useful.
Other information: Other information:
o API Reference: o API Reference:
http://docs.aws.amazon.com/AWSSimpleQueueService/latest/ http://docs.aws.amazon.com/AWSSimpleQueueService/latest/
APIReference/Welcome.html APIReference/Welcome.html
o Visibility Timeouts: o Visibility Timeouts:
skipping to change at page 17, line 41 skipping to change at page 15, line 19
o Cloud Overview - https://cloud.google.com/pubsub/ o Cloud Overview - https://cloud.google.com/pubsub/
o Subscriber Overview - https://cloud.google.com/pubsub/docs/ o Subscriber Overview - https://cloud.google.com/pubsub/docs/
subscriber subscriber
o Subscriber Pull(poll) - https://cloud.google.com/pubsub/docs/pull o Subscriber Pull(poll) - https://cloud.google.com/pubsub/docs/pull
Appendix B. Acknowledgments Appendix B. Acknowledgments
The editors would like to thanks the members of the SCIM WG which The editors would like to thank the members of the SCIM working
began discussions of provisioning events starting with: draft-hunt- group, which began discussions of provisioning events starting with:
scim-notify-00 in 2015. draft-hunt-scim-notify-00 in 2015.
The editors would like to thank Phil Hunt and the other authors of The editors would like to thank Phil Hunt and the other authors of
draft-ietf-secevent-delivery-02, on which this draft is based. draft-ietf-secevent-delivery-02, on which this draft is based.
The editor would like to thank the participants in the the SECEVENTS The editors would like to thank the participants in the the SECEVENTS
working group for their support of this specification. working group for their contributions to this specification.
Appendix C. Change Log Appendix C. Change Log
Draft 00 - AB - Based on draft-ietf-secevent-delivery-02 with the Draft 00 - AB - Based on draft-ietf-secevent-delivery-02 with the
following changes: following changes:
o Renamed to "Push-Based SET Token Delivery Using HTTP" o Renamed to "Push-Based SET Token Delivery Using HTTP"
o Removed references to the HTTP Polling delivery method. o Removed references to the HTTP Polling delivery method.
skipping to change at page 19, line 42 skipping to change at page 17, line 18
out-of-scope. out-of-scope.
o Added callout that SET verification mechanisms are out-of-scope. o Added callout that SET verification mechanisms are out-of-scope.
o Added retry guidance, notes regarding delivery reliability o Added retry guidance, notes regarding delivery reliability
requirements. requirements.
o Added guidance around using JWS and/or JWE to authenticate o Added guidance around using JWS and/or JWE to authenticate
persisted SETs. persisted SETs.
Draft 03 - mbj:
o Addressed problems identified in my 18-Jul-18 review message
titled "Issues for both the Push and Poll Specs".
o Changes to align terminology with RFC 8417, for instance, by using
the already defined term SET Recipient rather than SET Receiver.
o Applied editorial and minor normative corrections.
o Updated Marius' contact information.
Authors' Addresses Authors' Addresses
Annabelle Backman (editor) Annabelle Backman (editor)
Amazon Amazon
Email: richanna@amazon.com Email: richanna@amazon.com
Michael B. Jones (editor) Michael B. Jones (editor)
Microsoft Microsoft
Email: mbj@microsoft.com Email: mbj@microsoft.com
URI: http://self-issued.info/ URI: http://self-issued.info/
Marius Scurtescu Marius Scurtescu
Google Coinbase
Email: mscurtescu@google.com
Email: marius.scurtescu@coinbase.com
Morteza Ansari Morteza Ansari
Cisco Cisco
Email: morteza.ansari@cisco.com Email: morteza.ansari@cisco.com
Anthony Nadalin Anthony Nadalin
Microsoft Microsoft
Email: tonynad@microsoft.com Email: tonynad@microsoft.com
 End of changes. 75 change blocks. 
273 lines changed or deleted 160 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/