rfc9767v1.txt | rfc9767.txt | |||
---|---|---|---|---|
skipping to change at line 243 ¶ | skipping to change at line 243 ¶ | |||
The access token is issued by the AS as defined in [GNAP]. The AS | The access token is issued by the AS as defined in [GNAP]. The AS | |||
will need to identify itself in order to allow an RS to recognize | will need to identify itself in order to allow an RS to recognize | |||
tokens that the AS has issued, particularly in cases where tokens | tokens that the AS has issued, particularly in cases where tokens | |||
from multiple different ASs could be presented to the same RS. | from multiple different ASs could be presented to the same RS. | |||
This information is not usually conveyed directly to the client | This information is not usually conveyed directly to the client | |||
instance, since the client instance should know this information | instance, since the client instance should know this information | |||
based on where it receives the token from. | based on where it receives the token from. | |||
In a [JWT] formatted token or a token introspection response, this | In the payload of a JSON Web Token [JWT] or a token introspection | |||
corresponds to the iss claim. | response, this corresponds to the iss claim. | |||
2.1.3. Audience | 2.1.3. Audience | |||
The access token is intended for use at one or more RSs. The AS can | The access token is intended for use at one or more RSs. The AS can | |||
list a token's intended RSs to allow each RS to ensure that the RS is | list a token's intended RSs to allow each RS to ensure that the RS is | |||
not receiving a token intended for someone else. The AS and RS have | not receiving a token intended for someone else. The AS and RS have | |||
to agree on the nature of any audience identifiers represented by the | to agree on the nature of any audience identifiers represented by the | |||
token, but the URIs of the RS are a common pattern. | token, but the URIs of the RS are a common pattern. | |||
In a [JWT] formatted token or token introspection response, this | In the payload of a JSON Web Token [JWT] or token introspection | |||
corresponds to the aud claim. | response, this corresponds to the aud claim. | |||
In cases where more complex access is required, the location field of | In cases where more complex access is required, the location field of | |||
objects in the access array can also convey audience information. In | objects in the access array can also convey audience information. In | |||
such cases, the client instance might need to know the audience | such cases, the client instance might need to know the audience | |||
information in order to differentiate between possible RSs to present | information in order to differentiate between possible RSs to present | |||
the token to. | the token to. | |||
2.1.4. Key Binding | 2.1.4. Key Binding | |||
Access tokens in GNAP are bound to the client instance's registered | Access tokens in GNAP are bound to the client instance's registered | |||
skipping to change at line 300 ¶ | skipping to change at line 300 ¶ | |||
or digest algorithm. If such information is not included with the | or digest algorithm. If such information is not included with the | |||
proofing key, an attacker could present a token with a seemingly | proofing key, an attacker could present a token with a seemingly | |||
valid key using an insecure and incorrect proofing mechanism. | valid key using an insecure and incorrect proofing mechanism. | |||
This value is conveyed to the client instance in the key field of the | This value is conveyed to the client instance in the key field of the | |||
access_token response in Section 3.2 of [GNAP]. Since the common | access_token response in Section 3.2 of [GNAP]. Since the common | |||
case is that the token is bound to the client instance's registered | case is that the token is bound to the client instance's registered | |||
key, this field can be omitted in this case since the client will be | key, this field can be omitted in this case since the client will be | |||
aware of its own key. | aware of its own key. | |||
In a [JWT] formatted token, this corresponds to the cnf | In the payload of a JSON Web Token [JWT], this corresponds to the cnf | |||
(confirmation) claim. In a token introspection response, this | (confirmation) claim. In a token introspection response, this | |||
corresponds to the key claim. | corresponds to the key claim. | |||
In the case of a bearer token, all parties need to know that a token | In the case of a bearer token, all parties need to know that a token | |||
has no key bound to it and will therefore reject any attempts to use | has no key bound to it and will therefore reject any attempts to use | |||
the bearer token with a key in an undefined way. | the bearer token with a key in an undefined way. | |||
2.1.5. Flags | 2.1.5. Flags | |||
GNAP access tokens can have multiple associated data flags that | GNAP access tokens can have multiple associated data flags that | |||
skipping to change at line 366 ¶ | skipping to change at line 366 ¶ | |||
within an hour of a token's issuance, but only within five minutes of | within an hour of a token's issuance, but only within five minutes of | |||
the token's issuance for certain high-value calls. | the token's issuance for certain high-value calls. | |||
Since access tokens could be revoked at any time for any reason | Since access tokens could be revoked at any time for any reason | |||
outside of a client instance's control, the client instance often | outside of a client instance's control, the client instance often | |||
does not know or concern itself with the validity time window of an | does not know or concern itself with the validity time window of an | |||
access token. However, this information can be made available to it | access token. However, this information can be made available to it | |||
by using the expires_in field of an access token response; see | by using the expires_in field of an access token response; see | |||
Section 3.2 of [GNAP]. | Section 3.2 of [GNAP]. | |||
The issuance time of the token is conveyed in the iat claim of a | The issuance time of the token is conveyed in the iat claim in the | |||
[JWT] formatted token or a token introspection response. | payload of a JSON Web Token [JWT] or a token introspection response. | |||
The expiration time of a token, after which it is to be rejected, is | The expiration time of a token, after which it is to be rejected, is | |||
conveyed in the exp claim of a [JWT] formatted token or a token | conveyed in the exp claim in the payload of a JSON Web Token [JWT] or | |||
introspection response. | a token introspection response. | |||
The starting time of a token's validity window, before which it is to | The starting time of a token's validity window, before which it is to | |||
be rejected, is conveyed in the nbf claim of a [JWT] formatted token | be rejected, is conveyed in the nbf claim in the payload of a JSON | |||
or a token introspection response. | Web Token [JWT] or a token introspection response. | |||
2.1.8. Token Identifier | 2.1.8. Token Identifier | |||
Individual access tokens often need a unique internal identifier to | Individual access tokens often need a unique internal identifier to | |||
allow the AS to differentiate between multiple separate tokens. This | allow the AS to differentiate between multiple separate tokens. This | |||
value of the token can often be used as the identifier, but in some | value of the token can often be used as the identifier, but in some | |||
cases, a separate identifier is used. | cases, a separate identifier is used. | |||
This separate identifier can be conveyed in the jti claim of a [JWT] | This separate identifier can be conveyed in the jti claim in the | |||
formatted token or a token introspection response. | payload of a JSON Web Token [JWT] or a token introspection response. | |||
This identifier is not usually exposed to the client instance using | This identifier is not usually exposed to the client instance using | |||
the token, because the client instance only needs to use the token by | the token, because the client instance only needs to use the token by | |||
value. | value. | |||
2.1.9. Authorizing Resource Owner | 2.1.9. Authorizing Resource Owner | |||
Access tokens are approved on behalf of a resource owner (RO). The | Access tokens are approved on behalf of a resource owner (RO). The | |||
identity of this RO can be used by the RS to determine exactly which | identity of this RO can be used by the RS to determine exactly which | |||
resource to access or which kinds of access to allow. For example, | resource to access or which kinds of access to allow. For example, | |||
an access token used to access identity information can hold a user | an access token used to access identity information can hold a user | |||
identifier to allow the RS to determine which profile information to | identifier to allow the RS to determine which profile information to | |||
return. The nature of this information is subject to agreement by | return. The nature of this information is subject to agreement by | |||
the AS and RS. | the AS and RS. | |||
This corresponds to the sub claim of a [JWT] formatted token or a | This corresponds to the sub claim in the payload of a JSON Web Token | |||
token introspection response. | [JWT] or a token introspection response. | |||
Detailed RO information is not returned to the client instance when | Detailed RO information is not returned to the client instance when | |||
an access token is requested alone, and in many cases, returning this | an access token is requested alone, and in many cases, returning this | |||
information to the client instance would be a privacy violation on | information to the client instance would be a privacy violation on | |||
the part of the AS. Since the access token represents a specific | the part of the AS. Since the access token represents a specific | |||
delegated access, the client instance needs only to use the token at | delegated access, the client instance needs only to use the token at | |||
its target RS. Following the profile example, the client instance | its target RS. Following the profile example, the client instance | |||
does not need to know the account identifier to get specific | does not need to know the account identifier to get specific | |||
attributes about the account represented by the token. | attributes about the account represented by the token. | |||
skipping to change at line 447 ¶ | skipping to change at line 447 ¶ | |||
2.1.11. Client Instance | 2.1.11. Client Instance | |||
Access tokens are issued to a specific client instance by the AS. | Access tokens are issued to a specific client instance by the AS. | |||
The identity of this instance can be used by the RS to allow specific | The identity of this instance can be used by the RS to allow specific | |||
kinds of access or other attributes about the access token. For | kinds of access or other attributes about the access token. For | |||
example, an AS that binds all access tokens issued to a particular | example, an AS that binds all access tokens issued to a particular | |||
client instance to that client instance's most recent key rotation | client instance to that client instance's most recent key rotation | |||
would need to be able to look up the client instance in order to find | would need to be able to look up the client instance in order to find | |||
the key binding detail. | the key binding detail. | |||
This corresponds to the client_id claim of a [JWT] formatted token or | This corresponds to the client_id claim in the payload of a JSON Web | |||
the instance_id field of a token introspection response. | Token [JWT] or the instance_id field of a token introspection | |||
response. | ||||
The client is not normally informed of this information separately, | The client is not normally informed of this information separately, | |||
since a client instance can usually correctly assume that it is the | since a client instance can usually correctly assume that it is the | |||
client instance to which a token that it receives was issued. | client instance to which a token that it receives was issued. | |||
2.1.12. Label | 2.1.12. Label | |||
When multiple access tokens are requested or a client instance uses | When multiple access tokens are requested or a client instance uses | |||
token labels, the parties will need to keep track of which labels | token labels, the parties will need to keep track of which labels | |||
were applied to each individual token. Since labels can be reused | were applied to each individual token. Since labels can be reused | |||
skipping to change at line 537 ¶ | skipping to change at line 538 ¶ | |||
structure, by using a special internal access right, or any other | structure, by using a special internal access right, or any other | |||
means at its disposal. Just like other access tokens in GNAP, the | means at its disposal. Just like other access tokens in GNAP, the | |||
contents of these AS-specific access tokens are opaque to the | contents of these AS-specific access tokens are opaque to the | |||
software presenting the token. Unlike other access tokens, the | software presenting the token. Unlike other access tokens, the | |||
contents of these AS-specific access tokens are also opaque to the | contents of these AS-specific access tokens are also opaque to the | |||
RS. | RS. | |||
The client instance is given continuation access tokens only as part | The client instance is given continuation access tokens only as part | |||
of the continue field of the grant response in Section 3.1 of [GNAP]. | of the continue field of the grant response in Section 3.1 of [GNAP]. | |||
The client instance is given token management access tokens only as | The client instance is given token management access tokens only as | |||
part of the manage field of the grant response in Section 3.1.2 of | part of the manage field of the grant response in Section 3.2.1 of | |||
[GNAP]. The means by which the RS is given resource server | [GNAP]. The means by which the RS is given resource server | |||
management access tokens is out of scope of this specification, but | management access tokens is out of scope of this specification, but | |||
methods could include preconfiguration of the token value with the RS | methods could include preconfiguration of the token value with the RS | |||
software or granting the access token through a standard GNAP | software or granting the access token through a standard GNAP | |||
process. | process. | |||
For continuation access tokens and token management access tokens, a | For continuation access tokens and token management access tokens, a | |||
client instance MUST take steps to differentiate these special- | client instance MUST take steps to differentiate these special- | |||
purpose access tokens from access tokens used at one or more RSs. To | purpose access tokens from access tokens used at one or more RSs. To | |||
facilitate this, a client instance can store AS-specific access | facilitate this, a client instance can store AS-specific access | |||
skipping to change at line 765 ¶ | skipping to change at line 766 ¶ | |||
3. The AS validates the access token value and the RS's request and | 3. The AS validates the access token value and the RS's request and | |||
returns the introspection response for the token. | returns the introspection response for the token. | |||
4. The RS fulfills the request from the client instance. | 4. The RS fulfills the request from the client instance. | |||
The RS signs the request with its own key and sends the value of the | The RS signs the request with its own key and sends the value of the | |||
access token in the body of the request as a JSON object with the | access token in the body of the request as a JSON object with the | |||
following members: | following members: | |||
access_token (string): REQUIRED. The access token value presented | access_token (string): The access token value presented to the RS by | |||
to the RS by the client instance. | the client instance. REQUIRED. | |||
proof (string): RECOMMENDED. The proofing method used by the client | proof (string): The proofing method used by the client instance to | |||
instance to bind the token to the RS request. The value MUST be | bind the token to the RS request. The value MUST be registered in | |||
registered in the "GNAP Key Proofing Methods" registry. | the "GNAP Key Proofing Methods" registry. RECOMMENDED. | |||
resource_server (string or object): REQUIRED. The identification | resource_server (object/string): The identification used to | |||
used to authenticate the resource server making this call, either | authenticate the resource server making this call, either by value | |||
by value or by reference as described in Section 3.2. | or by reference as described in Section 3.2. REQUIRED. | |||
access (array of strings/objects): OPTIONAL. The minimum access | access (array of strings/objects): The minimum access rights | |||
rights required to fulfill the request. This MUST be in the | required to fulfill the request. This MUST be in the format | |||
format described in Section 8 of [GNAP]. | described in Section 8 of [GNAP]. OPTIONAL. | |||
Additional fields are defined in the "GNAP Token Introspection | Additional fields are defined in the "GNAP Token Introspection | |||
Request" registry (Section 5.4). | Request" registry (Section 5.4). | |||
POST /introspect HTTP/1.1 | POST /introspect HTTP/1.1 | |||
Host: server.example.com | Host: server.example.com | |||
Content-Type: application/json | Content-Type: application/json | |||
Signature-Input: sig1=... | Signature-Input: sig1=... | |||
Signature: sig1=... | Signature: sig1=... | |||
Digest: sha256=... | Digest: sha256=... | |||
skipping to change at line 824 ¶ | skipping to change at line 825 ¶ | |||
* is appropriate for presentation at the identified RS, and | * is appropriate for presentation at the identified RS, and | |||
* is appropriate for the access indicated (if present). | * is appropriate for the access indicated (if present). | |||
The AS responds with a data structure describing the token's current | The AS responds with a data structure describing the token's current | |||
state and any information the RS would need to validate the token's | state and any information the RS would need to validate the token's | |||
presentation, such as its intended proofing mechanism and key | presentation, such as its intended proofing mechanism and key | |||
material. | material. | |||
active (boolean): REQUIRED. If true, the access token presented is | active (boolean): If true, the access token presented is active, as | |||
active, as defined above. If any of the criteria for an active | defined above. If any of the criteria for an active token are not | |||
token are not true, or if the AS is unable to make a determination | true, or if the AS is unable to make a determination (such as the | |||
(such as the token is not found), the value is set to false and | token is not found), the value is set to false and other fields | |||
other fields are omitted. | are omitted. REQUIRED. | |||
If the access token is active, additional fields from the single | If the access token is active, additional fields from the single | |||
access token response structure defined in Section 3.2.1 of [GNAP] | access token response structure defined in Section 3.2.1 of [GNAP] | |||
are included. In particular, these include the following: | are included. In particular, these include the following: | |||
access (array of strings/objects): REQUIRED. The access rights | access (array of strings/objects): The access rights associated with | |||
associated with this access token. This MUST be in the format | this access token. This MUST be in the format described in | |||
described in Section 8 of [GNAP]. This array MAY be filtered or | Section 8 of [GNAP]. This array MAY be filtered or otherwise | |||
otherwise limited for consumption by the identified RS, including | limited for consumption by the identified RS, including being an | |||
being an empty array, which indicates that the token has no | empty array, which indicates that the token has no explicit access | |||
explicit access rights that can be disclosed to the RS. | rights that can be disclosed to the RS. REQUIRED. | |||
key (object/string): REQUIRED if the token is bound. The key bound | key (object/string): if the token is bound. The key bound to the | |||
to the access token, to allow the RS to validate the signature of | access token, to allow the RS to validate the signature of the | |||
the request from the client instance. If the access token is a | request from the client instance. If the access token is a bearer | |||
bearer token, this MUST NOT be included. | token, this MUST NOT be included. REQUIRED | |||
flags (array of strings): OPTIONAL. The set of flags associated | flags (array of strings): The set of flags associated with the | |||
with the access token. | access token. OPTIONAL. | |||
exp (integer): OPTIONAL. The timestamp after which this token is no | exp (integer): The timestamp after which this token is no longer | |||
longer valid. Expressed as integer seconds from UNIX Epoch. | valid. Expressed as integer seconds from UNIX Epoch. OPTIONAL. | |||
iat (integer): OPTIONAL. The timestamp at which this token was | iat (integer): The timestamp at which this token was issued by the | |||
issued by the AS. Expressed as integer seconds from UNIX Epoch. | AS. Expressed as integer seconds from UNIX Epoch. OPTIONAL. | |||
nbf (integer): OPTIONAL. The timestamp before which this token is | nbf (integer): The timestamp before which this token is not valid. | |||
not valid. Expressed as integer seconds from UNIX Epoch. | Expressed as integer seconds from UNIX Epoch. OPTIONAL. | |||
aud (string or array of strings): OPTIONAL. Identifiers for the | aud (string or array of strings): Identifiers for the resource | |||
resource servers this token can be accepted at. | servers this token can be accepted at. OPTIONAL. | |||
sub (string): OPTIONAL. Identifier of the resource owner who | sub (string): Identifier of the resource owner who authorized this | |||
authorized this token. | token. OPTIONAL. | |||
iss (string): REQUIRED. Grant endpoint URL of the AS that issued | iss (string): Grant endpoint URL of the AS that issued this token. | |||
this token. | REQUIRED. | |||
instance_id (string): OPTIONAL. The instance identifier of the | instance_id (string): The instance identifier of the client instance | |||
client instance that the token was issued to. | that the token was issued to. OPTIONAL. | |||
Additional fields are defined in the "GNAP Token Introspection | Additional fields are defined in the "GNAP Token Introspection | |||
Response" registry (Section 5.5). | Response" registry (Section 5.5). | |||
The response MAY include any additional fields defined in an access | The response MAY include any additional fields defined in an access | |||
token response and MUST NOT include the access token value itself. | token response and MUST NOT include the access token value itself. | |||
HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
Content-Type: application/json | Content-Type: application/json | |||
Cache-Control: no-store | Cache-Control: no-store | |||
skipping to change at line 912 ¶ | skipping to change at line 913 ¶ | |||
In all cases, the final determination of the response is at the | In all cases, the final determination of the response is at the | |||
discretion of the RS. | discretion of the RS. | |||
3.4. Registering a Resource Set | 3.4. Registering a Resource Set | |||
If the RS needs to, it can post a set of resources, as described in | If the RS needs to, it can post a set of resources, as described in | |||
Section 8 ("Resource Access Rights") of [GNAP], to the AS's resource | Section 8 ("Resource Access Rights") of [GNAP], to the AS's resource | |||
registration endpoint along with information about what the RS will | registration endpoint along with information about what the RS will | |||
need to validate the request. | need to validate the request. | |||
access (array of objects/strings): REQUIRED. The list of access | access (array of objects/strings): The list of access rights | |||
rights associated with the request in the format described in | associated with the request in the format described in Section 8 | |||
Section 8 ("Resource Access Rights") of [GNAP]. | ("Resource Access Rights") of [GNAP]. REQUIRED. | |||
resource_server (string or object): REQUIRED. The identification | resource_server (object/string): The identification used to | |||
used to authenticate the resource server making this call, either | authenticate the resource server making this call, either by value | |||
by value or by reference as described in Section 3.2. | or by reference as described in Section 3.2. REQUIRED. | |||
token_formats_supported (array of strings): OPTIONAL. The token | token_formats_supported (array of strings): The list of token | |||
formats the RS is able to process for accessing the resource. The | formats that the RS is able to process. The values in this array | |||
values in this array MUST be registered in the "GNAP Token | MUST be registered in the "GNAP Token Formats" registry per | |||
Formats" registry per Section 5.3. If the field is omitted, the | Section 5.3. If the field is omitted, the token format is at the | |||
token format is at the discretion of the AS. If the AS does not | discretion of the AS. If the AS does not support any of the | |||
support any of the requested token formats, the AS MUST return an | requested token formats, the AS MUST return an error to the RS. | |||
error to the RS. | OPTIONAL. | |||
token_introspection_required (boolean): OPTIONAL. If present and | token_introspection_required (boolean): If present and set to true, | |||
set to true, the RS expects to make a token introspection request | the RS expects to make a token introspection request as described | |||
as described in Section 3.3. If absent or set to false, the RS | in Section 3.3. If absent or set to false, the RS does not | |||
does not anticipate needing to make an introspection request for | anticipate needing to make an introspection request for tokens | |||
tokens relating to this resource set. If the AS does not support | relating to this resource set. If the AS does not support token | |||
token introspection for this RS, the AS MUST return an error to | introspection for this RS, the AS MUST return an error to the RS. | |||
the RS. | OPTIONAL. | |||
Additional fields are defined in the "GNAP Resource Set Registration | Additional fields are defined in the "GNAP Resource Set Registration | |||
Request Parameters" registry (Section 5.6). | Request Parameters" registry (Section 5.6). | |||
The RS MUST identify itself with its own key and sign the request. | The RS MUST identify itself with its own key and sign the request. | |||
POST /resource HTTP/1.1 | POST /resource HTTP/1.1 | |||
Host: server.example.com | Host: server.example.com | |||
Content-Type: application/json | Content-Type: application/json | |||
Signature-Input: sig1=... | Signature-Input: sig1=... | |||
skipping to change at line 975 ¶ | skipping to change at line 976 ¶ | |||
"dolphin-metadata" | "dolphin-metadata" | |||
], | ], | |||
"resource_server": "7C7C4AZ9KHRS6X63AJAO" | "resource_server": "7C7C4AZ9KHRS6X63AJAO" | |||
} | } | |||
The AS responds with a reference appropriate to represent the | The AS responds with a reference appropriate to represent the | |||
resources list that the RS presented in its request as well as any | resources list that the RS presented in its request as well as any | |||
additional information the RS might need in future requests. | additional information the RS might need in future requests. | |||
resource_reference (string): REQUIRED. A single string representing | resource_reference (string): A single string representing the list | |||
the list of resources registered in the request. The RS MAY make | of resources registered in the request. The RS MAY make this | |||
this handle available to a client instance as part of a discovery | handle available to a client instance as part of a discovery | |||
response as described in Section 9.1 of [GNAP] or as documentation | response as described in Section 9.1 of [GNAP] or as documentation | |||
to client software developers. | to client software developers. REQUIRED. | |||
instance_id (string): OPTIONAL. An instance identifier that the RS | instance_id (string): An instance identifier that the RS can use to | |||
can use to refer to itself in future calls to the AS, in lieu of | refer to itself in future calls to the AS, in lieu of sending its | |||
sending its key by value. See Section 3.2. | key by value. See Section 3.2. OPTIONAL. | |||
introspection_endpoint (string): OPTIONAL. The introspection | introspection_endpoint (string): The introspection endpoint of this | |||
endpoint of this AS that is used to allow the RS to perform token | AS that is used to allow the RS to perform token introspection. | |||
introspection. See Section 3.3. | See Section 3.3. OPTIONAL. | |||
Additional fields are defined in the "GNAP Resource Set Registration | Additional fields are defined in the "GNAP Resource Set Registration | |||
Response Parameters" registry (Section 5.7). | Response Parameters" registry (Section 5.7). | |||
HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
Content-Type: application/json | Content-Type: application/json | |||
Cache-Control: no-store | Cache-Control: no-store | |||
{ | { | |||
"resource_reference": "FWWIKYBQ6U56NL1" | "resource_reference": "FWWIKYBQ6U56NL1" | |||
} | } | |||
If a resource was previously registered, the AS MAY return the same | If a resource was previously registered, the AS MAY return the same | |||
resource reference value as in previous responses. | resource reference value as in previous responses. | |||
If the registration fails, the AS returns an HTTP 400 (Bad Request) | If the registration fails, the AS returns HTTP status code 400 (Bad | |||
error to the RS, indicating that the registration was not successful. | Request) to the RS, indicating that the registration was not | |||
successful. | ||||
The client instance can then use the resource_reference value as a | The client instance can then use the resource_reference value as a | |||
string-type access reference as defined in Section 8.1 of [GNAP]. | string-type access reference as defined in Section 8.1 of [GNAP]. | |||
This value MAY be combined with any other additional access rights | This value MAY be combined with any other additional access rights | |||
requested by the client instance. | requested by the client instance. | |||
{ | { | |||
"access_token": { | "access_token": { | |||
"access": [ | "access": [ | |||
"FWWIKYBQ6U56NL1", | "FWWIKYBQ6U56NL1", | |||
skipping to change at line 1040 ¶ | skipping to change at line 1042 ¶ | |||
}, | }, | |||
"dolphin-metadata" | "dolphin-metadata" | |||
] | ] | |||
}, | }, | |||
"client": "client-12351.bdxqf" | "client": "client-12351.bdxqf" | |||
} | } | |||
3.5. Error Responses | 3.5. Error Responses | |||
In the case of an error from the RS-facing API, the AS responds to | In the case of an error from the RS-facing API, the AS responds to | |||
the RS with an HTTP 400 (Bad Request) status code and a JSON object | the RS with HTTP status code 400 (Bad Request) and a JSON object | |||
consisting of a single error field, which is either an object or a | consisting of a single error field, which is either an object or a | |||
string. | string. | |||
When returned as a string, the error value is the error code: | When returned as a string, the error value is the error code: | |||
{ | { | |||
error: "invalid_access" | error: "invalid_access" | |||
} | } | |||
When returned as an object, the error object contains the following | When returned as an object, the error object contains the following | |||
skipping to change at line 1390 ¶ | skipping to change at line 1392 ¶ | |||
The table below contains the initial contents of the "GNAP Resource | The table below contains the initial contents of the "GNAP Resource | |||
Set Registration Request Parameters" registry. | Set Registration Request Parameters" registry. | |||
+==============================+=================+=============+ | +==============================+=================+=============+ | |||
| Name | Type | Reference | | | Name | Type | Reference | | |||
+==============================+=================+=============+ | +==============================+=================+=============+ | |||
| access | array of | Section 3.4 | | | access | array of | Section 3.4 | | |||
| | strings/objects | of RFC 9767 | | | | strings/objects | of RFC 9767 | | |||
+------------------------------+-----------------+-------------+ | +------------------------------+-----------------+-------------+ | |||
| resource_server | string or | Section 3.4 | | | resource_server | object/string | Section 3.4 | | |||
| | object | of RFC 9767 | | ||||
+------------------------------+-----------------+-------------+ | ||||
| token_formats_supported | string | Section 3.4 | | ||||
| | | of RFC 9767 | | | | | of RFC 9767 | | |||
+------------------------------+-----------------+-------------+ | +------------------------------+-----------------+-------------+ | |||
| token_formats_supported | array of | Section 3.4 | | ||||
| | strings | of RFC 9767 | | ||||
+------------------------------+-----------------+-------------+ | ||||
| token_introspection_required | boolean | Section 3.4 | | | token_introspection_required | boolean | Section 3.4 | | |||
| | | of RFC 9767 | | | | | of RFC 9767 | | |||
+------------------------------+-----------------+-------------+ | +------------------------------+-----------------+-------------+ | |||
Table 4: Initial Contents of the GNAP Resource Set | Table 4: Initial Contents of the GNAP Resource Set | |||
Registration Request Parameters Registry | Registration Request Parameters Registry | |||
5.7. GNAP Resource Set Registration Response Parameters | 5.7. GNAP Resource Set Registration Response Parameters | |||
This document defines a means to register a resource set for a GNAP | This document defines a means to register a resource set for a GNAP | |||
skipping to change at line 1665 ¶ | skipping to change at line 1667 ¶ | |||
6.7. Token Format Considerations | 6.7. Token Format Considerations | |||
With formatted tokens, the format of the token is likely to have its | With formatted tokens, the format of the token is likely to have its | |||
own considerations, and the RS needs to follow any such | own considerations, and the RS needs to follow any such | |||
considerations during the token validation process. The application | considerations during the token validation process. The application | |||
and scope of these considerations is specific to the format and | and scope of these considerations is specific to the format and | |||
outside the scope of this specification. | outside the scope of this specification. | |||
6.8. Oversharing Token Contents | 6.8. Oversharing Token Contents | |||
The contents of the access token model divulge to the RS information | The contents of the access token model divulge information about the | |||
about the access token's context and rights. This is true whether | access token's context and rights to the RS. This is true whether | |||
the contents are parsed from the token itself or sent in an | the contents are parsed from the token itself or sent in an | |||
introspection response. | introspection response. | |||
It's likely that every RS does not need to know all details of the | It's likely that every RS does not need to know all details of the | |||
token model, especially in systems where a single access token is | token model, especially in systems where a single access token is | |||
usable across multiple RSs. An attacker could use this to gain | usable across multiple RSs. An attacker could use this to gain | |||
information about the larger system by compromising only one RS. By | information about the larger system by compromising only one RS. By | |||
limiting the information available to only that which is relevant to | limiting the information available to only that which is relevant to | |||
a specific RS, such as using a limited introspection reply as defined | a specific RS, such as using a limited introspection reply as defined | |||
in Section 3.3, a system can follow the principle of least disclosure | in Section 3.3, a system can follow the principle of least disclosure | |||
skipping to change at line 1721 ¶ | skipping to change at line 1723 ¶ | |||
coming from the trusted AS and is being presented with a valid key, | coming from the trusted AS and is being presented with a valid key, | |||
the RS has no way of telling that the token was passed through an | the RS has no way of telling that the token was passed through an | |||
intermediary. | intermediary. | |||
To mitigate this, the RS can publish its association with the trusted | To mitigate this, the RS can publish its association with the trusted | |||
AS through either discovery or documentation. Therefore, a client | AS through either discovery or documentation. Therefore, a client | |||
properly following this association would only go directly to the | properly following this association would only go directly to the | |||
trusted RS for access tokens for the RS. | trusted RS for access tokens for the RS. | |||
Furthermore, limiting the use of bearer tokens and AS-provided keys | Furthermore, limiting the use of bearer tokens and AS-provided keys | |||
to only highly trusted ASs and limited circumstances prevents the | to only highly trusted ASs in certain circumstances prevents the | |||
attacker from being able to willingly exfiltrate their token to an | attacker from being able to willingly exfiltrate their token to an | |||
unsuspecting client instance. | unsuspecting client instance. | |||
6.11. Introspection of Token Keys | 6.11. Introspection of Token Keys | |||
The introspection response defined in Section 3.3 provides a means | The introspection response defined in Section 3.3 provides a means | |||
for the AS to tell the RS what key material is needed to validate the | for the AS to tell the RS what key material is needed to validate the | |||
key proof of the request. Capture of the introspection response can | key proof of the request. Capture of the introspection response can | |||
expose these security keys to an attacker. In the case of asymmetric | expose these security keys to an attacker. In the case of asymmetric | |||
cryptography, only the public key is exposed, and the token cannot be | cryptography, only the public key is exposed, and the token cannot be | |||
skipping to change at line 1879 ¶ | skipping to change at line 1881 ¶ | |||
8.2. Informative References | 8.2. Informative References | |||
[BISCUIT] Biscuit, "Biscuit Authorization", | [BISCUIT] Biscuit, "Biscuit Authorization", | |||
<https://www.biscuitsec.org/>. | <https://www.biscuitsec.org/>. | |||
[MACAROON] Birgisson, A., Politz, J. G., Erlingsson, U., Taly, A., | [MACAROON] Birgisson, A., Politz, J. G., Erlingsson, U., Taly, A., | |||
Vrable, M., and M. Lentczner, "Macaroons: Cookies with | Vrable, M., and M. Lentczner, "Macaroons: Cookies with | |||
Contextual Caveats for Decentralized Authorization in the | Contextual Caveats for Decentralized Authorization in the | |||
Cloud", NDSS Symposium 2014, DOI 10.14722/ndss.2014.23212, | Cloud", NDSS Symposium 2014, DOI 10.14722/ndss.2014.23212, | |||
February 2014, <https://research.google/pubs/pub41892/>. | February 2014, <https://www.ndss-symposium.org/ndss2014/ | |||
ndss-2014-programme/macaroons-cookies-contextual-caveats- | ||||
decentralized-authorization-cloud/>. | ||||
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
<https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
[ZCAPLD] Lemmer-Webber, C., Ed. and M. Sporny, Ed., "Authorization | [ZCAPLD] Lemmer-Webber, C., Ed. and M. Sporny, Ed., "Authorization | |||
Capabilities for Linked Data v0.3", W3C Draft Community | Capabilities for Linked Data v0.3", W3C Draft Community | |||
Group Report, January 2023, | Group Report, January 2023, | |||
<https://w3c-ccg.github.io/zcap-spec/>. | <https://w3c-ccg.github.io/zcap-spec/>. | |||
End of changes. 40 change blocks. | ||||
101 lines changed or deleted | 105 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |