Skip to content

Commit e11ad19

Browse files
committed
Decouple SSF from OAuth protocol
Decouple SSF from OAuth protocol - Revert #83 - Removed type from authorization scheme - More OAuth agnostic changes - Removed OPRM references - spec_urn verbiage changes - Removed OAuth2 references from the aud claim
1 parent 02306ef commit e11ad19

File tree

1 file changed

+30
-42
lines changed

1 file changed

+30
-42
lines changed

openid-sharedsignals-framework-1_0.md

Lines changed: 30 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ normative:
146146
date: May 2021
147147
target: https://datatracker.ietf.org/doc/html/draft-ietf-secevent-subject-identifiers
148148
title: Subject Identifiers for Security Event Tokens
149+
150+
informative:
149151
CAEP:
150152
author:
151153
-
@@ -604,42 +606,39 @@ critical_subject_members
604606

605607
> OPTIONAL. An array of member names in a Complex Subject which, if present in
606608
a Subject Member in an event, MUST be interpreted by a Receiver.
607-
608-
supported_scopes
609609

610-
> OPTIONAL. A list of OAuth {{RFC6749}} scope names that the Transmitter supports for specific endpoints. The value of this field is a JSON object that has the endpoint names as keys, and arrays of scope name strings they support as their values. OAuth tokens obtained using any of the scopes defined here MUST be accepted by the specified endpoint. Any key that is not defined as an endpoint in the Transmitter Configuration Metadata MUST be ignored. If the supported_scopes member is present in the metadata and an endpoint is not listed as a key, then that endpoint MUST not require OAuth for authorization.
610+
authorization_schemes
611611

612-
authorization_servers
612+
> OPTIONAL. An array of JSON objects that specify the supported
613+
authorization scheme properties defined in {{authorization-scheme}}. To enable seamless discovery of
614+
configurations, the service provider SHOULD, with the appropriate
615+
security considerations, make the authorization_schemes attribute
616+
publicly accessible without prior authentication.
613617

614-
> OPTIONAL. An array of supported authorization servers and the scopes they support. Each element of the array is a Authorization Server Descriptor JSON object defined in the section {{authz-server-descriptor}} below. If the `supported_scopes` member is present in the metadata, then the `authorization_servers` MUST also be present, and it MUST provide a server location for every supported scope.
615618

616619
TODO: consider adding a IANA Registry for metadata, similar to Section 7.1.1 of
617620
{{RFC8414}}. This would allow other specs to add to the metadata.
618621

619-
### Authorization Server Descriptor {#authz-server-descriptor}
620-
An Authorization Server Descriptor is a JSON object that has two keys:
621-
622-
scopes
622+
### Authorization scheme {#authorization-scheme}
623+
SSF is an HTTP based signals sharing framework and is agnostic to the authentication and authorization schemes used to secure stream configuration APIs. It does not provide any SSF-specific authentication and authorization schemes but relies on the cooperating parties' mutual security considerations. The authorization scheme section of the metadata provides discovery information related to the transmitter's stream management APIs.
623624

624-
> REQUIRED. An array of scope names supported by the authorization server
625+
spec_urn
625626

626-
servers
627+
> REQUIRED. A URN that describes the specification of the protocol being used.
627628

628-
> REQUIRED. An array of authorization server URLs. This is the URL from which the Authorization Server Metadata MAY be obtained by following the process described in Section 3 of RFC8414 {{RFC8414}}
629+
The receiver will call the transmitter APIs by providing appropriate credentials as per the `spec_urn`.
629630

630-
The following is a non-normative example of an Authorization Server Descriptor
631+
The following is a non-normative example of the `spec_urn`
631632

632633
~~~ json
633-
{
634-
"scopes" : ["scope1", "scope2"],
635-
"servers": [
636-
"https://server1.example/base/url",
637-
"https://server2.example/base/url",
638-
"https://server3.example/base/url"
639-
]
640-
}
634+
{
635+
"spec_urn": "urn:ietf:rfc:6749"
636+
}
641637
~~~
642-
{: #authz-descriptor-example title="Example Authorization Server Descriptor"}
638+
639+
In this case, the receiver may obtain an access token using the Client
640+
Credential Grant {{CLIENTCRED}}, or any other method suitable for the Receiver and the
641+
Transmitter.
643642

644643
## Obtaining Transmitter Configuration Information
645644

@@ -738,17 +737,14 @@ Content-Type: application/json
738737
"verification_endpoint":
739738
"https://tr.example.com/ssf/mgmt/verification",
740739
"critical_subject_members": [ "tenant", "user" ],
741-
"supported_scopes":
740+
"authorization_schemes":[
742741
{
743-
"status_endpoint": ["status_scope"],
744-
"configuration_endpoint": ["admin_scope", "status_scope"]
742+
"spec_urn": "urn:ietf:rfc:6749"
745743
},
746-
"authorization_servers": [
747744
{
748-
"scopes": ["admin_scope", "status_scope"],
749-
"servers": ["https://myauthzserver.example"]
745+
"spec_urn": "urn:ietf:rfc:8705"
750746
}
751-
]
747+
]
752748
}
753749
~~~
754750
{: #figdiscoveryresponse title="Example: Transmitter Configuration Response"}
@@ -1547,9 +1543,9 @@ Errors are signaled with HTTP status codes as follows:
15471543

15481544
Examples:
15491545

1550-
1. If a Receiver makes a request with an invalid OAuth token, then the
1546+
1. If a Receiver makes an unauthorized request, then the
15511547
Transmitter MUST respond with a 401 error status.
1552-
2. If the Receiver presents a valid OAuth token, but the Transmitter policy
1548+
2. If a Receiver makes an authorized request, but the Transmitter policy
15531549
does not permit the Receiver from obtaining the status, then the Transmitter
15541550
MAY respond with a 403 error status.
15551551
3. If the Receiver requests the status for a stream that does not exist then the
@@ -1963,14 +1959,6 @@ sub_id
19631959
~~~
19641960
{: title="Example: Stream Updated SET" #figstreamupdatedset}
19651961

1966-
# Authorization {#management-api-auth}
1967-
HTTP API calls from a Receiver to a Transmitter SHOULD be authorized by
1968-
providing an OAuth 2.0 Access Token as defined by {{RFC6750}}.
1969-
1970-
The receiver may obtain an access token using the Client
1971-
Credential Grant {{CLIENTCRED}}, or any other method suitable for the Receiver and the
1972-
Transmitter.
1973-
19741962
# Security Considerations {#management-sec}
19751963

19761964
## Subject Probing {#management-sec-subject-probing}
@@ -2155,9 +2143,9 @@ The purpose is defense in depth against confusion with other JWTs, as described
21552143
in Sections 4.5 and 4.6 of {{RFC8417}}.
21562144

21572145
### The "aud" Claim {#aud-claim}
2158-
The "aud" claim can be a single value or an array. Each value SHOULD be the
2159-
OAuth 2.0 client ID. Other values that uniquely identifies the Receiver to the
2160-
Transmitter MAY be used, if the two parties have agreement on the format.
2146+
The "aud" claim can be a single string or an array of strings. Values that
2147+
uniquely identify the Receiver to the Transmitter MAY be used, if the two parties
2148+
have agreement on the format.
21612149

21622150
More than one value can be present if the corresponding Receivers are known to
21632151
the Transmitter to be the same entity, for example a web client and a mobile

0 commit comments

Comments
 (0)