22title : OpenID Shared Signals Framework Specification 1.0 - draft 02
33abbrev : SharedSignals
44docname : openid-sharedsignals-framework-1_0
5- date : 2023-03-21
5+ date : 2023-06-23
66
77ipr : none
88cat : std
@@ -207,8 +207,8 @@ This spec also directly profiles several IETF Security Events drafts:
207207
208208* Security Event Token (SET) {{RFC8417}}
209209* Subject Identifiers for Security Event Tokens {{SUBIDS}}
210- * Push-Based SET Token Delivery Using HTTP {{DELIVERYPUSH}}
211- * Poll-Based SET Token Delivery Using HTTP {{DELIVERYPOLL}}
210+ * Push-Based SET Token Delivery Using HTTP {{DELIVERYPUSH}}
211+ * Poll-Based SET Token Delivery Using HTTP {{DELIVERYPOLL}}
212212
213213--- middle
214214
@@ -313,7 +313,7 @@ Below is a non-normative example of a Complex Subject claim in a SSF event.
313313 " sub" : "1234"
314314 }
315315}
316- ~~~
316+ ~~~
317317{: # complex-subject-ex title="Example: Complex Subject"}
318318
319319# ## Complex Subject Interpretation {#complex-subject-interpretation}
@@ -338,7 +338,7 @@ scope of this specification.
338338
339339# # Additional Subject Identifier Formats {#additional-subject-id-formats}
340340
341- The following new subject identifier formats are defined :
341+ The following new subject identifier formats are defined :
342342
343343# ## JWT ID Subject Identifier Format {#sub-id-jwt-id}
344344
@@ -356,21 +356,21 @@ jti
356356> REQUIRED. The "jti" (JWT token ID) claim of the JWT being identified, defined
357357 in {{RFC7519}}
358358
359- The "JWT ID" Subject Identifier Format is identified by the name "jwt-id ".
359+ The "JWT ID" Subject Identifier Format is identified by the name "jwt_id ".
360360
361- Below is a non-normative example of Subject Identifier for the "jwt-id " Subject
361+ Below is a non-normative example of Subject Identifier for the "jwt_id " Subject
362362Identifier Format.
363363
364364~~~ json
365365{
366- " format " : " jwt-id " ,
366+ " format " : " jwt_id " ,
367367 " iss " : " https://idp.example.com/123456789/" ,
368368 " jti " : " B70BA622-9515-4353-A866-823539EECBC8"
369369}
370370~~~
371- {: # sub-id-jwtid title="Example: 'jwt-id ' Subject Identifier"}
371+ {: # sub-id-jwtid title="Example: 'jwt_id ' Subject Identifier"}
372372
373- # ## SAML Assertion ID Subject Identifier Format {#sub-id-saml-assertion-id}
373+ # ## SAML Assertion ID Subject Identifier Format {#sub-id-saml-assertion-id}
374374
375375The "SAML Assertion ID" Subject Identifier Format specifies a SAML 2.0
376376{{OASIS.saml-core-2.0-os}} assertion identifier. Subject Identifiers of this
@@ -416,7 +416,7 @@ Additional members about an event may be included in the "events" claim. Some
416416of these members are required and specified as such in the respective event
417417types specs. If a Transmitter determines that it needs to include additional
418418members that are not specified in the event types spec, then the name of such
419- members MUST be a URI. The discoverability of all additional members is
419+ members MUST be a URI. The discoverability of all additional members is
420420specified in the Discovery {{discovery}} section.
421421
422422# Example SETs that conform to the Shared Signals Framework {#events-examples}
@@ -816,8 +816,8 @@ delivery
816816 parameters for the SET delivery method. The actual delivery method is
817817 identified by the special key "method" with the value being a URI as defined
818818 in {{delivery-meta}}. The value of the "delivery" field contains two
819- sub-fields :
820-
819+ sub-fields :
820+
821821> method
822822
823823> > **Receiver-Supplied**, the specific delivery method to be used. This can be
@@ -1130,7 +1130,7 @@ Errors are signaled with HTTP status codes as follows:
11301130| 403 | if the Event Receiver is not allowed to read the stream configuration |
11311131| 404 | if there is no Event Stream with the given "stream_id" for this Event Receiver |
11321132{: title="Read Stream Configuration Errors" # tabreadconfig}
1133-
1133+
11341134# ### Updating a Stream’s Configuration {#updating-a-streams-configuration}
11351135An Event Receiver updates the current configuration of a stream by making an
11361136HTTP PATCH request to the Configuration Endpoint. The PATCH body contains a
@@ -1311,7 +1311,7 @@ Pending conditions or errors are signaled with HTTP status codes as follows:
13111311# ### Deleting a Stream {#deleting-a-stream}
13121312An Event Receiver deletes a stream by making an HTTP DELETE request to the
13131313Configuration Endpoint. On receiving a request the Event Transmitter responds
1314- with an empty "204 OK " response if the configuration was successfully removed.
1314+ with an empty "204 No Content " response if the configuration was successfully removed.
13151315
13161316The DELETE request MUST include the "stream_id" as a parameter in order to
13171317identify the correct Event Stream.
@@ -1676,14 +1676,14 @@ identified by a Phone Number Subject Identifier:
16761676POST /ssf/subjects:remove HTTP/1.1
16771677Host : transmitter.example.com
16781678Authorization : Bearer eyJ0b2tlbiI6ImV4YW1wbGUifQo=
1679-
1679+
16801680{
16811681 " stream_id " : " f67e39a0a4d34d56b3aa1bc4cff0069f" ,
16821682 " subject " : {
16831683 " format " : " phone" ,
16841684 " phone_number " : " +12065550123"
16851685 }
1686- }
1686+ }
16871687~~~
16881688{: title="Example: Remove Subject Request" # figremovereq}
16891689
@@ -1707,7 +1707,7 @@ Errors are signaled with HTTP status codes as follows:
17071707| 429 | if the Event Receiver is sending too many requests in a given amount of time |
17081708{: title="Remove Subject Errors" # tabremoveerr}
17091709
1710- # ## Verification {#verification}
1710+ # ## Verification {#verification}
17111711In some cases, the frequency of event transmission on an Event Stream will be
17121712very low, making it difficult for an Event Receiver to tell the difference
17131713between expected behavior and event transmission failure due to a misconfigured
@@ -1720,7 +1720,7 @@ delivery is working, including signature verification and encryption.
17201720An Event Transmitter MAY send a Verification Event at any time, even if one was
17211721not requested by the Event Receiver.
17221722
1723- # ### Verification Event {#verification-event}
1723+ # ### Verification Event {#verification-event}
17241724The Verification Event is a standard SET with the following attributes :
17251725
17261726event type
@@ -1870,11 +1870,11 @@ subject
18701870 " format " : " iss_sub" ,
18711871 " iss" : "http://example.com/idp1",
18721872 " sub" : "1234"
1873- }
1874- },
1873+ }
1874+ },
18751875 " status " : " paused" ,
18761876 " reason " : " License is not valid"
1877- }
1877+ }
18781878 }
18791879}
18801880~~~
@@ -1888,9 +1888,9 @@ The receiver may obtain an access token using the Client
18881888Credential Grant {{CLIENTCRED}}, or any other method suitable for the Receiver and the
18891889Transmitter.
18901890
1891- # Security Considerations {#management-sec}
1891+ # Security Considerations {#management-sec}
18921892
1893- # # Subject Probing {#management-sec-subject-probing}
1893+ # # Subject Probing {#management-sec-subject-probing}
18941894It may be possible for an Event Transmitter to leak information about subjects
18951895through their responses to add subject requests. A "404" response may indicate
18961896to the Event Receiver that the subject does not exist, which may inadvertently
@@ -1904,7 +1904,7 @@ to the subject, and Event Receivers MUST NOT assume that a 204 response means
19041904that they will receive events related to the subject.
19051905
19061906
1907- # # Information Harvesting {#management-sec-information-harvesting}
1907+ # # Information Harvesting {#management-sec-information-harvesting}
19081908SETs may contain personally identifiable information (PII) or other non-public
19091909information about the event transmitter, the subject (of an event in the SET),
19101910or the relationship between the two. It is important for Event Transmitters to
@@ -1922,7 +1922,7 @@ transmitting the event. The mechanisms by which such validation is performed
19221922are outside the scope of this specification.
19231923
19241924
1925- # # Malicious Subject Removal {#management-sec-malicious-subject-removal}
1925+ # # Malicious Subject Removal {#management-sec-malicious-subject-removal}
19261926A malicious party may find it advantageous to remove a particular subject from a
19271927stream, in order to reduce the Event Receiver’s ability to detect malicious
19281928activity related to the subject, inconvenience the subject, or for other reasons.
@@ -1937,9 +1937,9 @@ from the stream, and MUST NOT report these events as errors to the Event
19371937Transmitter.
19381938
19391939
1940- # Privacy Considerations {#privacy-considerations}
1940+ # Privacy Considerations {#privacy-considerations}
19411941
1942- # # Subject Information Leakage {#sub-info-leakage}
1942+ # # Subject Information Leakage {#sub-info-leakage}
19431943Event issuers and recipients SHOULD take precautions to ensure that they do not
19441944leak information about subjects via Subject Identifiers, and choose appropriate
19451945Subject Identifier Types accordingly. Parties SHOULD NOT identify a subject
@@ -1950,34 +1950,34 @@ Identifier Type and the same claim values to identify a given subject when
19501950communicating with a given party in order to reduce the possibility of
19511951information leakage.
19521952
1953- # # Previously Consented Data {#previously-consented-data}
1953+ # # Previously Consented Data {#previously-consented-data}
19541954If SSF events contain new values for attributes of Subject Principals that were
19551955previously exchanged between the Transmitter and Receiver, then there are no
19561956additional privacy considerations introduced by providing the updated values in
19571957the SSF events, unless the attribute was exchanged under a one-time consent
19581958obtained from the user.
19591959
1960- # # New Data {#new-data}
1960+ # # New Data {#new-data}
19611961Data that was not previously exchanged between the Transmitter and the Receiver,
19621962or data whose consent to exchange has expired has the following considerations :
19631963
1964- # ## Organizational Data {#organizational-data}
1964+ # ## Organizational Data {#organizational-data}
19651965If a user has previously agreed with a Transmitter that they agree to release
19661966certain data to third-parties, then the Transmitter MAY send such data in SSF
19671967events without additional consent of the user. Such data MAY include
19681968organizational data about the Subject Principal that was generated by the
19691969Transmitter.
19701970
1971- # ## Consentable Data {#consentable-data}
1971+ # ## Consentable Data {#consentable-data}
19721972If a Transmitter intends to include data in SSF events that is not previously
19731973consented to be released by the user, then the Transmitter MUST obtain consent
19741974to release such data from the user in accordance with the Transmitter's privacy
19751975policy.
19761976
1977- # Profiles {#profiles}
1977+ # Profiles {#profiles}
19781978This section is a profile of the following IETF SecEvent specifications :
19791979
1980- * Security Event Token (SET) {{RFC8417}}
1980+ * Security Event Token (SET) {{RFC8417}}
19811981* Push-Based SET Token Delivery Using HTTP {{DELIVERYPUSH}}
19821982* Poll-Based SET Token Delivery Using HTTP {{DELIVERYPOLL}}
19831983
@@ -1987,20 +1987,20 @@ RISC Use Cases {{USECASES}}.
19871987The CAEP use cases that set the requirements are described in CAEP Use Cases (TODO : Add
19881988 reference when file is added to repository.)
19891989
1990- # # Security Event Token Profile {#set-profle}
1990+ # # Security Event Token Profile {#set-profle}
19911991This section provides SSF profiling specifications for the Security Event Token (SET)
19921992{{RFC8417}} spec.
19931993
1994- # ## Signature Key Resolution {#signature-key-resolution}
1994+ # ## Signature Key Resolution {#signature-key-resolution}
19951995The signature key can be obtained through "jwks_uri", see {{discovery}}.
19961996
1997- # ## SSF Event Subject {#event-subjects}
1997+ # ## SSF Event Subject {#event-subjects}
19981998The subject of a SSF event is identified by the "subject" claim within the event
19991999payload, whose value is a Subject Identifier. The "subject" claim is REQUIRED
20002000for all SSF events. The JWT "sub" claim MUST NOT be present in any SET containing
20012001a SSF event.
20022002
2003- # ## SSF Event Properties {#event-properties}
2003+ # ## SSF Event Properties {#event-properties}
20042004The SSF event MAY contain additional claims within the event payload that are
20052005specific to the event type.
20062006
@@ -2043,7 +2043,7 @@ specific to the event type.
20432043~~~
20442044{: # caep-event-properties-example title="Example: SET Containing a CAEP Event with Properties"}
20452045
2046- # ## Explicit Typing of SETs {#explicit-typing}
2046+ # ## Explicit Typing of SETs {#explicit-typing}
20472047SSF events MUST use explicit typing as defined in Section 2.3 of {{RFC8417}}.
20482048
20492049~~~ json
@@ -2059,13 +2059,13 @@ Sections 4.5, 4.6 and 4.7 of {{RFC8417}}. While current Id Token {{IDTOKEN}}
20592059validators may not be using the "typ" header parameter, by requiring it for SSF
20602060SETs a distinct value is guaranteed for future validators.
20612061
2062- # ## The "exp" Claim {#exp-claim}
2062+ # ## The "exp" Claim {#exp-claim}
20632063The "exp" claim MUST NOT be used in SSF SETs.
20642064
20652065The purpose is defense in depth against confusion with other JWTs, as described
20662066in Sections 4.5 and 4.6 of {{RFC8417}}.
20672067
2068- # ## The "aud" Claim {#aud-claim}
2068+ # ## The "aud" Claim {#aud-claim}
20692069The "aud" claim can be a single value or an array. Each value SHOULD be the
20702070OAuth 2.0 client ID. Other values that uniquely identifies the Receiver to the
20712071Transmitter MAY be used, if the two parties have agreement on the format.
@@ -2097,7 +2097,7 @@ multiple Receivers would lead to unintended data disclosure.
20972097~~~
20982098{: title="Example: SET with array 'aud' claim" # figarrayaud}
20992099
2100- # ## The "events" claim {#events-claim}
2100+ # ## The "events" claim {#events-claim}
21012101The "events" claim SHOULD contain only one event. Multiple event type URIs are
21022102permitted only if they are alternative URIs defining the exact same event type.
21032103
@@ -2116,7 +2116,7 @@ on this subject. The Shared Signals Framework is asking for further restrictions
21162116This section provides SSF profiling specifications for the {{DELIVERYPUSH}} and
21172117{{DELIVERYPOLL}} specs.
21182118
2119- # ## Stream Configuration Metadata {#delivery-meta}
2119+ # ## Stream Configuration Metadata {#delivery-meta}
21202120Each delivery method is identified by a URI, specified below by the "method"
21212121metadata.
21222122
@@ -2139,7 +2139,7 @@ authorization_header
21392139> The HTTP Authorization header that the Transmitter MUST set with each event
21402140 delivery, if the configuration is present. The value is optional and it is set
21412141 by the Receiver.
2142-
2142+
21432143# ### Polling Delivery using HTTP
21442144This section provides SSF profiling specifications for the {{DELIVERYPOLL}} spec.
21452145
@@ -2153,7 +2153,7 @@ url
21532153 Transmitter. These URLs MAY be reused across Receivers, but MUST be unique per
21542154 stream for a given Receiver.
21552155
2156- # IANA Considerations {#iana}
2156+ # IANA Considerations {#iana}
21572157Subject Identifiers defined in this document will be added to the "Security
21582158Events Subject Identifier Types" registry. This registry is defined in the
21592159Subject Identifiers for Security Event Tokens {{SUBIDS}} specification.
0 commit comments