rfc-8935

Push-Based Security Event Token (SET) Delivery Using HTTP

A. Backman (Editor), M. Jones (Editor), M. Scurtescu, M. Ansari, A. Nadalin
date2020-11 streamIETF areasec wgsecevent statusPROPOSED STANDARD pages15 canonicalhttps://www.rfc-editor.org/rfc/rfc8935 doi10.17487/RFC8935
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.

Extracted elements (25)

design-rationale §A

Earlier versions made TLS optional and described unencrypted-transport considerations. The working group decided to mandate HTTP over TLS and moved the unencrypted considerations to a non-normative appendix, reflecting that SET confidentiality cannot be reliably ensured without TLS.

tls, security, privacy

design-rationale §7.1

Error codes are intended for automated processing and SHOULD identify distinct error classes to which an automated system can respond in a meaningfully different way (e.g., refreshing credentials and retrying for authentication_failed, vs. not retrying for invalid_request which represents a structural error unlikely to be resolved by retransmission).

http, registry

design-rationale §2

The SET Recipient is designed to respond immediately after validation and persistence, deferring further processing asynchronously. This minimizes the time the SET Transmitter waits for a response, reducing the risk of timeouts and spurious retransmission.

http

interoperability-note §1

Configuration metadata exchange (endpoint URLs, cryptographic keys, buffer size limitations) between the transmitter and recipient is explicitly out of scope for this specification and is deployment specific.

http, security

interoperability-note §1

Push-based delivery (this specification) is one of two SET delivery methods; poll-based delivery is defined in RFC 8936. Push is applicable when the transmitter can make outbound HTTP requests and the recipient can host a TLS-enabled endpoint accessible to the transmitter.

http

normative-requirement §2.4 MUST

Every Security Event Token Error Code MUST have a unique name registered in the IANA 'Security Event Token Error Codes' registry.

registry

normative-requirement §2.2 REQUIRED

If the SET is valid, the SET Recipient SHALL acknowledge successful transmission by responding with HTTP 202 (Accepted). The body of the response MUST be empty.

http

normative-requirement §2 SHOULD

Once a SET has been validated and persisted, the SET Recipient SHOULD immediately return a success response and SHOULD NOT perform further processing of the SET prior to sending this response; additional steps SHOULD be executed asynchronously.

http

normative-requirement §5.3 MUST

SET Transmitters and SET Recipients MUST protect SET confidentiality when SETs contain sensitive or PII data. TLS MUST be used; in some cases, JWE encryption of the SET is also required.

tls, security, privacy

normative-requirement §2.1 MUST

The Content-Type header field of the SET Transmission Request MUST be 'application/secevent+jwt', the Accept header MUST be 'application/json', and the request body MUST consist of the SET represented as a JWT.

http, json, jose

normative-requirement §5.3 MUST

The event delivery endpoint MUST support at least TLS 1.2 and SHOULD support the newest version meeting its security requirements (TLS 1.3 at time of publication). The client MUST perform a TLS/SSL server certificate check using DNS-ID and/or DANE. RFC 7525 recommendations MUST be followed.

tls, security

normative-requirement §2.3 MUST

The failure response MUST include a Content-Language header. If no acceptable language is negotiated via Accept-Language, the SET Recipient MUST respond with messages understandable by an English-speaking person.

http

normative-requirement §2 MUST

The SET Recipient MUST respond to a retransmitted SET as it would if the SET had not been previously received. The SET Recipient MUST NOT depend on a SET Transmitter to retransmit a SET once the SET Recipient has acknowledged successful receipt.

http

normative-requirement §3 MUST

The TLS server certificate MUST be validated using DNS-ID (RFC 6125) and/or DANE (RFC 6698). Authorization may be determined using the SET Issuer identity, SET Transmitter identity, mutual TLS, or other authentication methods.

tls, security, pkix

normative-requirement §2 REQUIRED

Upon receipt of a SET, the SET Recipient SHALL validate that the SET is parsable, authentic (issued by the stated issuer and properly signed), that the recipient is an intended audience, that the issuer is trusted, and that the transmitter is authorized to send that SET.

security, http

normative-requirement §2.3 REQUIRED

When a SET parsing, validation, or authentication error is detected, the SET Recipient SHALL respond with HTTP 400 (Bad Request). The Content-Type MUST be 'application/json' and the body MUST be a UTF-8 JSON object containing 'err' (error code) and 'description' fields.

http, json

privacy-consideration §6

Subject identifiers in SETs may themselves be sensitive; their inclusion could enable correlation or de-anonymization. SET Issuers and Transmitters should consider these ramifications and choose appropriate subject identifiers for their use cases.

privacy

privacy-consideration §6 MUST

When sharing PII or confidential user information, SET Transmitters and Recipients MUST have appropriate legal agreements and user consent in place. Data requiring confidentiality MUST be encrypted, at minimum with TLS and optionally with JWE.

privacy, tls, jose

protocol-element §2.1

A SET Transmission Request is an HTTP POST to a TLS-enabled endpoint operated by the SET Recipient. The SET Transmitter MAY include an Accept-Language header to indicate preferred language(s) for error messages.

http

protocol-element §2.4

Security Event Token Error Codes are case-sensitive ASCII strings consisting only of letters, digits, and underscores. Initial codes are: invalid_request, invalid_key, invalid_issuer, invalid_audience, authentication_failed, and access_denied.

http, registry, security

registry §7.1

IANA has created the 'Security Event Token Error Codes' registry. Future assignments require Specification Required registration policy. Error codes SHOULD identify distinct error classes to which automated systems can respond differently (e.g., by refreshing credentials and retrying).

registry, security

security-consideration §5.1

JWS-signed SETs (per RFC 7515 and RFC 8417 Section 5) enable the SET Recipient to validate that the SET Issuer is authorized to provide actionable SETs, providing an authentication mechanism independent of transport-layer context.

security, jose, crypto

security-consideration §5.4

The SET Recipient may be vulnerable to denial-of-service attacks where a malicious party sends high volumes of invalid SETs, exhausting resources on cryptographic operations. Mitigations include mutual TLS for transmitter authentication and rate-limiting problematic transmitters.

security, tls

security-consideration §5.5

When a SET is forwarded or retrieved from storage, TLS and HTTP authentication context used at delivery time is typically unavailable. If authenticity validation outside the delivery context is required, the SET Recipient SHOULD ensure SETs are signed per RFC 7515.

security, jose

wire-format §2.3

The error response body is a UTF-8 encoded JSON object with two fields: 'err' (a Security Event Token Error Code string) and 'description' (a UTF-8 human-readable string whose exact content is implementation specific).

http, json