Skip to content

Commit 28c9f64

Browse files
committed
Decouple SSF from OAuth protocol
Revert #83 Atul's comments addressed Atul's comments addressed Review comments addressed Review comments addressed Removed type from authorization scheme - More OAuth agnostic changes - Removed OPRM references spec_urn verbiage changes spec_urn verbiage changes spec_urn Updated to read spec_urn Removed OAuth2 references from the aud claim Removed OAuth2 references from the aud claim Metadata attribute details Added more details around the metadata attributes Update openid-sharedsignals-framework-1_0.md Added references to protected resource metadata Added references to protected resource metadata
1 parent a2fe379 commit 28c9f64

File tree

1 file changed

+29
-42
lines changed

1 file changed

+29
-42
lines changed

openid-sharedsignals-framework-1_0.md

Lines changed: 29 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ normative:
141141
target: https://datatracker.ietf.org/doc/html/draft-ietf-secevent-subject-identifiers
142142
title: Subject Identifiers for Security Event Tokens
143143

144+
144145
informative:
145146
CAEP:
146147
author:
@@ -537,42 +538,39 @@ critical_subject_members
537538

538539
> OPTIONAL. An array of member names in a Complex Subject which, if present in
539540
a Subject Member in an event, MUST be interpreted by a Receiver.
540-
541-
supported_scopes
542541

543-
> 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.
542+
authorization_schemes
544543

545-
authorization_servers
544+
> OPTIONAL. A list of complex type that specifies supported
545+
authorization scheme properties defined in {{authorization-scheme}}. To enable seamless discovery of
546+
configurations, the service provider SHOULD, with the appropriate
547+
security considerations, make the authorization_schemes attribute
548+
publicly accessible without prior authentication.
546549

547-
> 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.
548550

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

552-
### Authorization Server Descriptor {#authz-server-descriptor}
553-
An Authorization Server Descriptor is a JSON object that has two keys:
554-
555-
scopes
554+
### Authorization scheme {#authorization-scheme}
555+
SSF is an HTTP based signals sharing framework. It 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. Authorization scheme section of the metadata, providers discovery information related to the transmitter's stream management APIs.
556556

557-
> REQUIRED. An array of scope names supported by the authorization server
557+
spec_urn
558558

559-
servers
559+
> REQUIRED. A URN that describes the specification of the protocol being used.
560560

561-
> 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}}
561+
The receiver will call the transmitter APIs by providing appropriate credentials as per the `spec_urn`.
562562

563-
The following is a non-normative example of an Authorization Server Descriptor
563+
The following is a non-normative example of the `spec_urn`
564564

565565
~~~ json
566-
{
567-
"scopes" : ["scope1", "scope2"],
568-
"servers": [
569-
"https://server1.example/base/url",
570-
"https://server2.example/base/url",
571-
"https://server3.example/base/url"
572-
]
573-
}
566+
{
567+
"spec_urn": "urn:ietf:rfc:6749"
568+
}
574569
~~~
575-
{: #authz-descriptor-example title="Example Authorization Server Descriptor"}
570+
571+
In this case, the receiver may obtain an access token using the Client
572+
Credential Grant {{CLIENTCRED}}, or any other method suitable for the Receiver and the
573+
Transmitter.
576574

577575
## Obtaining Transmitter Configuration Information
578576

@@ -671,17 +669,14 @@ Content-Type: application/json
671669
"verification_endpoint":
672670
"https://tr.example.com/ssf/mgmt/verification",
673671
"critical_subject_members": [ "tenant", "user" ],
674-
"supported_scopes":
672+
"authorization_schemes":[
675673
{
676-
"status_endpoint": ["status_scope"],
677-
"configuration_endpoint": ["admin_scope", "status_scope"]
674+
"spec_urn": "urn:ietf:rfc:6749"
678675
},
679-
"authorization_servers": [
680676
{
681-
"scopes": ["admin_scope", "status_scope"],
682-
"servers": ["https://myauthzserver.example"]
677+
"spec_urn": "urn:ietf:rfc:8705"
683678
}
684-
]
679+
]
685680
}
686681
~~~
687682
{: #figdiscoveryresponse title="Example: Transmitter Configuration Response"}
@@ -1462,9 +1457,9 @@ Errors are signaled with HTTP status codes as follows:
14621457

14631458
Examples:
14641459

1465-
1. If a Receiver makes a request with an invalid OAuth token, then the
1460+
1. If a Receiver makes a request with an improper authorization, then the
14661461
Transmitter MUST respond with a 401 error status.
1467-
2. If the Receiver presents a valid OAuth token, but the Transmitter policy
1462+
2. If the Receiver presents a valid authorization, but the Transmitter policy
14681463
does not permit the Receiver from obtaining the status, then the Transmitter
14691464
MAY respond with a 403 error status.
14701465
3. If the Receiver requests the status for a stream that does not exist then the
@@ -1878,14 +1873,6 @@ subject
18781873
~~~
18791874
{: title="Example: Stream Updated SET with stream as the subject of single-stream Transmitter" #figstreamupdatedstreamset}
18801875

1881-
# Authorization {#management-api-auth}
1882-
HTTP API calls from a Receiver to a Transmitter SHOULD be authorized by
1883-
providing an OAuth 2.0 Access Token as defined by {{RFC6750}}.
1884-
1885-
The receiver may obtain an access token using the Client
1886-
Credential Grant {{CLIENTCRED}}, or any other method suitable for the Receiver and the
1887-
Transmitter.
1888-
18891876
# Security Considerations {#management-sec}
18901877

18911878
## Subject Probing {#management-sec-subject-probing}
@@ -2064,9 +2051,9 @@ The purpose is defense in depth against confusion with other JWTs, as described
20642051
in Sections 4.5 and 4.6 of {{RFC8417}}.
20652052

20662053
### The "aud" Claim {#aud-claim}
2067-
The "aud" claim can be a single value or an array. Each value SHOULD be the
2068-
OAuth 2.0 client ID. Other values that uniquely identifies the Receiver to the
2069-
Transmitter MAY be used, if the two parties have agreement on the format.
2054+
The "aud" claim can be a single value (string) or an array of strings. Values that
2055+
uniquely identifies the Receiver to the Transmitter MAY be used, if the two parties
2056+
have agreement on the format.
20702057

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

0 commit comments

Comments
 (0)