I personally don’t agree with this errata. Token Revocation was never meant to 
act as a protected resource, but rather as a function of the AS. The client is 
known to the AS and so authentication is expected here.

 — Justin

> On Aug 22, 2021, at 5:14 AM, RFC Errata System <rfc-edi...@rfc-editor.org> 
> wrote:
> 
> The following errata report has been submitted for RFC7009,
> "OAuth 2.0 Token Revocation".
> 
> --------------------------------------
> You may review the report below and at:
> https://www.rfc-editor.org/errata/eid6663
> 
> --------------------------------------
> Type: Technical
> Reported by: Ashvin Narayanan <ashvinnaraya...@gmail.com>
> 
> Section: 2.1
> 
> Original Text
> -------------
> The client constructs the request by including the following
>   parameters using the "application/x-www-form-urlencoded" format in
>   the HTTP request entity-body:
> 
>   token   REQUIRED.  The token that the client wants to get revoked.
> 
>   token_type_hint  OPTIONAL.  A hint about the type of the token
>           submitted for revocation.  Clients MAY pass this parameter in
>           order to help the authorization server to optimize the token
>           lookup.  If the server is unable to locate the token using
>           the given hint, it MUST extend its search across all of its
>           supported token types.  An authorization server MAY ignore
>           this parameter, particularly if it is able to detect the
>           token type automatically.  This specification defines two
>           such values:
> 
>           * access_token: An access token as defined in [RFC6749],
>             Section 1.4
> 
>           * refresh_token: A refresh token as defined in [RFC6749],
>             Section 1.5
> 
>           Specific implementations, profiles, and extensions of this
>           specification MAY define other values for this parameter
>           using the registry defined in Section 4.1.2.
> 
>   The client also includes its authentication credentials as described
>   in Section 2.3. of [RFC6749].
> 
>   For example, a client may request the revocation of a refresh token
>   with the following request:
> 
>     POST /revoke HTTP/1.1
>     Host: server.example.com
>     Content-Type: application/x-www-form-urlencoded
>     Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
> 
>     token=45ghiukldjahdnhzdauz&token_type_hint=refresh_token
> 
>   The authorization server first validates the client credentials (in
>   case of a confidential client) and then verifies whether the token
>   was issued to the client making the revocation request.  If this
>   validation fails, the request is refused and the client is informed
>   of the error by the authorization server as described below.
> 
> Corrected Text
> --------------
> The client calls the revocation endpoint using an HTTP
>   POST [RFC7231] request with the following parameters sent as
>   "application/x-www-form-urlencoded" data in the request body:
> 
>   token   REQUIRED.  The token that the client wants to get revoked.
> 
>   token_type_hint  OPTIONAL.  A hint about the type of the token
>           submitted for revocation.  Clients MAY pass this parameter in
>           order to help the authorization server to optimize the token
>           lookup.  If the server is unable to locate the token using
>           the given hint, it MUST extend its search across all of its
>           supported token types.  An authorization server MAY ignore
>           this parameter, particularly if it is able to detect the
>           token type automatically.  This specification defines two
>           such values:
> 
>           * access_token: An access token as defined in [RFC6749],
>             Section 1.4
> 
>           * refresh_token: A refresh token as defined in [RFC6749],
>             Section 1.5
> 
>           Specific implementations, profiles, and extensions of this
>           specification MAY define other values for this parameter
>           using the registry defined in Section 4.1.2.
> 
>   The client MUST also include in the request, the access token it received 
>   from the authorization server. It must do so in the same way as it  would  
>   when accessing a protected resource, as describe in [RFC6749], Section 7.
> 
>   The following is a non-normative example request in which the client uses 
>   its access token to revoke the associated refresh token:
> 
>     POST /revoke HTTP/1.1
>     Host: server.example.com
>     Content-Type: application/x-www-form-urlencoded
>     Authorization: Bearer czZCaGRSa3F0MzpnWDFmQmF0M2JW
> 
>     token=45ghiukldjahdnhzdauz&token_type_hint=refresh_token
> 
>   The following is a non-normative example request in which the client uses 
>   its access token to revoke the same access token:
> 
>     POST /revoke HTTP/1.1
>     Host: server.example.com
>     Content-Type: application/x-www-form-urlencoded
>     Authorization: Bearer czZCaGRSa3F0MzpnWDFmQmF0M2JW
> 
>     token=czZCaGRSa3F0MzpnWDFmQmF0M2JW&token_type_hint=access_token
> 
>   The authorization server MUST validate the access token used by the        
>   client to authorize its call to the revocation endpoint, including 
>   ensuring that it is not expired or revoked. 
>   Additionally, the authorization server MUST also validate whether the
>   access token used for authorization is part of the same grant  as the 
>   token being revoked. If validation fails, the request is  refused and 
>   the client is informed of the error by the authorization server. 
>   In the case of a bearer token, the authorization server SHOULD respond  
>   with an HTTP 401 code as described in OAuth 2.0 Bearer Token Usage 
>   [RFC6750], Section 3. 
>   Errors based on other types of tokens are beyond the scope of this 
>   specification.
> 
> 
> Notes
> -----
> It appears as though the authors of RFC7009 have failed to consider that 
> requests to revoke are likely to come from non-confidential clients and such, 
> would lack authentication credentials. Regardless of the type of client 
> however, authentication should not be required. The OAuth 2.0 specification 
> (RFC6749) does not specify verifying that the access token belongs to the 
> client accessing protected resources, of which revocation is one. It is the 
> role of the access token alone to signify authorization required to make 
> requests to protected resources. If this is an issue for revocation, then it 
> is an issue for all protected resources and counter measures may be proposed 
> in a separate RFC rather than broadening the scope of this particular RFC. As 
> per the original text itself, "This specification in general does not intend 
> to provide countermeasures against token theft and abuse." Additionally, "If 
> an attacker is able to successfully guess a public client's client_id and one 
> of their tok
> ens, or a private client's credentials and one of their tokens, they could do 
> much worse damage by using the token elsewhere than by revoking it.  If they 
> chose to revoke the token, the legitimate client will lose its authorization 
> grant and will need to prompt the user again.  No further damage is done and 
> the guessed token is now worthless."
> Note that the client_id is not meant to be private information to begin with, 
> so relying on an attacker "guessing" it should not be seen as a security 
> countermeasure. This section of RFC7009 will be referenced in a subsequent 
> errata.
> 
> Instructions:
> -------------
> This erratum is currently posted as "Reported". If necessary, please
> use "Reply All" to discuss whether it should be verified or
> rejected. When a decision is reached, the verifying party  
> can log in to change the status and edit the report, if necessary. 
> 
> --------------------------------------
> RFC7009 (draft-ietf-oauth-revocation-11)
> --------------------------------------
> Title               : OAuth 2.0 Token Revocation
> Publication Date    : August 2013
> Author(s)           : T. Lodderstedt, Ed., S. Dronia, M. Scurtescu
> Category            : PROPOSED STANDARD
> Source              : Web Authorization Protocol
> Area                : Security
> Stream              : IETF
> Verifying Party     : IESG
> 
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth

_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to