draft-ietf-secevent-http-push-08.txt   draft-ietf-secevent-http-push-09.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: August 8, 2020 Microsoft Expires: August 10, 2020 Microsoft
M. Scurtescu M. Scurtescu
Coinbase Coinbase
M. Ansari M. Ansari
Cisco Cisco
A. Nadalin A. Nadalin
Microsoft Microsoft
February 5, 2020 February 7, 2020
Push-Based Security Event Token (SET) Delivery Using HTTP Push-Based Security Event Token (SET) Delivery Using HTTP
draft-ietf-secevent-http-push-08 draft-ietf-secevent-http-push-09
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 request to an endpoint transmitted in the body of an HTTP POST request 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 August 8, 2020. This Internet-Draft will expire on August 10, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the Copyright (c) 2020 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 6, line 27 skipping to change at page 6, line 27
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 signaled. The level and method of retention of SETs by SET
Recipients 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 Recipient In the event of a general HTTP error condition, the SET Recipient
SHOULD respond with an appropriate HTTP Status Code as defined in SHOULD respond with an appropriate HTTP Status Code as defined in
Section 6 of [RFC7231]. Section 6 of [RFC7231].
When the SET Recipient detects an error parsing, validating or When the SET Recipient detects an error parsing, validating, or
authenticating a SET transmitted in a SET Transmission Request, the authenticating a SET transmitted in a SET Transmission Request, the
SET Recipient SHALL respond with an HTTP Response Status Code of 400 SET Recipient SHALL respond with an HTTP Response Status Code of 400
(Bad Request). The "Content-Type" header of this response MUST be (Bad Request). The "Content-Type" header of this response MUST be
"application/json", and the body MUST be a UTF-8 encoded JSON "application/json", and the body MUST be a UTF-8 encoded JSON
[RFC8259] object containing the following name/value pairs: [RFC8259] 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 A UTF-8 string containing a human-readable description description A UTF-8 string containing a human-readable description
of the error that MAY provide additional diagnostic information. of the error that MAY provide additional diagnostic information.
The exact content of this field is implementation-specific. The exact content of this field is implementation specific.
The response MUST include a "Content-Language" header, whose value The response MUST include a "Content-Language" header, whose value
indicates the language of the error descriptions included in the indicates the language of the error descriptions included in the
response body. If the SET Recipient can provide error descriptions response body. If the SET Recipient can provide error descriptions
in multiple languages, they SHOULD choose the language to use in multiple languages, they SHOULD choose the language to use
according to the value of the "Accept-Language" header sent by the according to the value of the "Accept-Language" header sent by the
SET Transmitter in the transmission request, as described in SET Transmitter in the transmission request, as described in
Section 5.3.5 of [RFC7231]. If the SET Transmitter did not send an Section 5.3.5 of [RFC7231]. If the SET Transmitter did not send an
"Accept-Language" header, or if the SET Recipient does not support "Accept-Language" header, or if the SET Recipient does not support
any of the languages included in the header, the SET Recipient MUST any of the languages included in the header, the SET Recipient MUST
skipping to change at page 8, line 39 skipping to change at page 8, line 39
Table 1: SET Delivery Error Codes Table 1: SET Delivery Error Codes
Implementations SHOULD expect that other Error Codes MAY also be Implementations SHOULD expect that other Error Codes MAY also be
received, as the set of Error Codes is extensible via the IANA received, as the set of Error Codes is extensible via the IANA
"Security Event Token Delivery Error Codes" registry established in "Security Event Token Delivery Error Codes" registry established in
Section 7.1. Section 7.1.
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 and HTTP over TLS [RFC2818] and/or standard HTTP HTTP and HTTP over TLS [RFC2818] and/or standard HTTP authentication
authentication and authorization schemes, as per [RFC7235]. The TLS and authorization schemes, as per [RFC7235]. The TLS server
server certificate MUST be validated, per [RFC6125]. certificate MUST be validated, per [RFC6125].
Authorization for the eligibility to provide actionable SETs can be Authorization for the eligibility to provide actionable SETs can be
determined by using the identity of the SET Issuer, the identity of determined by using the identity of the SET Issuer, the identity of
the SET Transmitter, perhaps using mutual TLS, or via other employed the SET Transmitter, perhaps using mutual TLS, or via other employed
authentication methods. Because SETs are not commands, SET authentication methods. Because SETs are not commands, SET
Recipients are free to ignore SETs that are not of interest. Recipients are free to ignore SETs that are not of interest.
4. Delivery Reliability 4. Delivery Reliability
Delivery reliability requirements may vary depending upon the use Delivery reliability requirements may vary depending upon the use
skipping to change at page 10, line 50 skipping to change at page 10, line 50
agreements and user consent or terms of service in place. agreements and user consent or terms of service in place.
Furthermore, data that needs confidentiality protection MUST be Furthermore, data that needs confidentiality protection MUST be
encrypted, either via TLS or using JSON Web Encryption (JWE) encrypted, either via TLS or using JSON Web Encryption (JWE)
[RFC7516], or both. [RFC7516], or both.
In some cases, subject identifiers themselves may be considered In some cases, subject identifiers themselves may be considered
sensitive information, such that their inclusion within a SET may be sensitive information, such that their inclusion within a SET may be
considered a violation of privacy. SET Transmitters should consider considered a violation of privacy. SET Transmitters should consider
the ramifications of sharing a particular subject identifier with a the ramifications of sharing a particular subject identifier with a
SET Recipient (e.g., whether doing so could enable correlation and/or SET Recipient (e.g., whether doing so could enable correlation and/or
de-anonymization of data), and choose appropriate subject identifiers de-anonymization of data) and choose appropriate subject identifiers
for their use cases. for their use cases.
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
Security Event Token Delivery Error Codes registry are defined in Security Event Token Delivery Error Codes registry are defined in
skipping to change at page 11, line 27 skipping to change at page 11, line 27
Error Codes are intended to be interpreted by automated systems, and Error Codes are intended to be interpreted by automated systems, and
therefore SHOULD identify classes of errors to which an automated therefore SHOULD identify classes of errors to which an automated
system could respond in a meaningfully distinct way (e.g., by system could respond in a meaningfully distinct way (e.g., by
refreshing authentication credentials and retrying the request). refreshing authentication credentials and retrying the request).
7.1.1. Registration Template 7.1.1. Registration Template
Error Code Error Code
The name of the Security Event Token Delivery Error Code, as The name of the Security Event Token Delivery Error Code, as
described in Section 2.4. The name MUST be a case-sensitive ASCII described in Section 2.4. The name MUST be a case-sensitive ASCII
string consisting only of letters, digits and underscore, these string consisting only of letters, digits, and underscore; these
are the characters whose codes fall within the inclusive ranges are the characters whose codes fall within the inclusive ranges
0x30-39, 0x41-5A, 0x5F and 0x61-7A. 0x30-39, 0x41-5A, 0x5F and 0x61-7A.
Description Description
A brief human-readable description of the Security Event Token A brief human-readable description of the Security Event Token
Delivery Error Code. Delivery Error Code.
Change Controller Change Controller
For error codes registered by the IETF or its working groups, list For error codes registered by the IETF or its working groups, list
"IETF SecEvent Working Group". For all other error codes, list "IETF SecEvent Working Group". For all other error codes, list
the name of the party responsible for the registration. Contact the name of the party responsible for the registration. Contact
information such as mailing address, email address, or phone information such as mailing address, email address, or phone
number may also be provided. number may also be provided.
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
Error Code: invalid_request Error Code: invalid_request
Description: The request body cannot be parsed as a SET or the Description: The request body cannot be parsed as a SET or the
event payload within the SET does not conform to the event's event payload within the SET does not conform to the event's
definition. definition.
Change Controller: IETF Change Controller: IETF
skipping to change at page 14, line 48 skipping to change at page 14, line 48
http-poll) describes it as: http-poll) describes it as:
This specification defines how a series of Security Event Tokens This specification defines how a series of Security Event Tokens
(SETs) may be delivered to an intended recipient using HTTP POST over (SETs) may be delivered to an intended recipient using HTTP POST over
TLS initiated as a poll by the recipient. The specification also TLS initiated as a poll by the recipient. The specification also
defines how delivery can be assured, subject to the SET Recipient's defines how delivery can be assured, subject to the SET Recipient's
need for assurance. need for assurance.
XMPP Events XMPP Events
The WG considered the XMPP events ands its ability to provide a The WG considered XMPP Events and their ability to provide a single
single messaging solution without the need for both polling and push messaging solution without the need for both polling and push modes.
modes. The feeling was the size and methodology of XMPP was to far The feeling was the size and methodology of XMPP was too far apart
apart from the current capabilities of the SECEVENTs community which 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
Lambda functions, email addresses (as JSON or plain text), phone Lambda functions, email addresses (as JSON or plain text), phone
numbers (via SMS), and AWS SQS standard queues. It doesn't directly numbers (via SMS), and AWS SQS standard queues. It does not 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 am
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:
http://docs.aws.amazon.com/AWSSimpleQueueService/latest/ http://docs.aws.amazon.com/AWSSimpleQueueService/latest/
SQSDeveloperGuide/sqs-visibility-timeout.html SQSDeveloperGuide/sqs-visibility-timeout.html
Apache Kafka Apache Kafka
Apache Kafka is an Apache open source project based upon TCP for Apache Kafka is an Apache open source project based upon TCP for
distributed streaming. It prescribes some interesting general distributed streaming. It prescribes some interesting general-
purpose features that seem to extend far beyond the simpler streaming purpose features that seem to extend far beyond the simpler streaming
model SECEVENTs is after. A comment from MS has been that Kafka does model that SECEVENTs is after. A comment from MS has been that Kafka
an acknowledge with poll combination event which seems to be a does an acknowledge with poll combination event which seems to be a
performance advantage. See: https://kafka.apache.org/intro performance advantage. See: https://kafka.apache.org/intro
Google Pub/Sub Google Pub/Sub
Google Pub Sub system favours a model whereby polling and The Google Pub Sub system favors a model whereby polling and
acknowledgement of events is done as separate endpoints as separate acknowledgement of events is done with separate endpoints and as
functions. separate functions.
Information: Information:
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 thank the members of the SCIM working The editors would like to thank the members of the SCIM working
group, which began discussions of provisioning events starting with group, which began discussions of provisioning events starting with
draft-hunt-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 editors would like to thank the participants in the the SecEvents The editors 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.
Appendix C. Change Log Appendix C. Change Log
[[ NOTE TO THE RFC EDITOR: This section to be removed prior to [[ NOTE TO THE RFC EDITOR: This section to be removed prior to
publication ]] publication ]]
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:
skipping to change at page 17, line 22 skipping to change at page 17, line 22
o Removed bearer token from example delivery request, and text o Removed bearer token from example delivery request, and text
referencing it. referencing it.
o Broke delivery method description into separate request/response o Broke delivery method description into separate request/response
sections. sections.
o Added missing empty line between headers and body in example o Added missing empty line between headers and body in example
request. request.
o Removed unapplicable notes about example formatting. o Removed inapplicable notes about example formatting.
o Removed text about SET creation and handling. o Removed text about SET creation and handling.
o Removed duplication in protocol description. o Removed duplication in protocol description.
o Added "non-normative example" text to example transmission o Added "non-normative example" text to example transmission
request. request.
o Fixed inconsistencies in use of Error Code term. o Fixed inconsistencies in use of Error Code term.
skipping to change at page 18, line 50 skipping to change at page 18, line 50
attribute in error responses is implementation specific. attribute in error responses is implementation specific.
o Added requirement that error descriptions and responses are UTF-8 o Added requirement that error descriptions and responses are UTF-8
encoded. encoded.
o Added error description language preferences and specification via o Added error description language preferences and specification via
"Accept-Language" and "Content-Language" headers. "Accept-Language" and "Content-Language" headers.
o Added "recognized issuer" validation requirement in section 2. o Added "recognized issuer" validation requirement in section 2.
o Added time outs as an acceptable reason to resend a SET in section o Added timeouts as an acceptable reason to resend a SET in section
2. 2.
o Edited text in section 1 to clarify that configuration is out of o Edited text in section 1 to clarify that configuration is out of
scope. scope.
o Made minor editorial corrections. o Made minor editorial corrections.
Draft 05 - AB: Draft 05 - AB:
o Made minor editorial corrections. o Made minor editorial corrections.
skipping to change at page 20, line 35 skipping to change at page 20, line 35
o Made minor editorial corrections. o Made minor editorial corrections.
o Removed "SET Recipient" definition and added explicit list of o Removed "SET Recipient" definition and added explicit list of
terms used from RFC8417. terms used from RFC8417.
Draft 08 - mbj Draft 08 - mbj
o Addressed area director review comments by Benjamin Kaduk. o Addressed area director review comments by Benjamin Kaduk.
Draft 09 - mbj + AB
o Corrected editorial nits.
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
 End of changes. 22 change blocks. 
29 lines changed or deleted 33 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/