Re: [OAUTH-WG] RFC 8705 (oauth-mtls): RS error code for missing client certificate

Justin Richer <> Mon, 15 November 2021 16:18 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 004313A0C47 for <>; Mon, 15 Nov 2021 08:18:24 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.497
X-Spam-Status: No, score=-1.497 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, KHOP_HELO_FCRDNS=0.399, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 68wnsszekvXl for <>; Mon, 15 Nov 2021 08:18:19 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 79B5E3A0E14 for <>; Mon, 15 Nov 2021 08:18:19 -0800 (PST)
Received: from ( []) (authenticated bits=0) (User authenticated as jricher@ATHENA.MIT.EDU) by (8.14.7/8.12.4) with ESMTP id 1AFGI7bn024546 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 15 Nov 2021 11:18:08 -0500
From: Justin Richer <>
Message-Id: <>
Content-Type: multipart/alternative; boundary="Apple-Mail=_9C7D1EE2-FA34-4743-9C7E-6DC59633921F"
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.\))
Date: Mon, 15 Nov 2021 11:18:07 -0500
In-Reply-To: <>
Cc: oauth <>, 乗松隆志 / NORIMATSU,TAKASHI <>
To: Dmitry Telegin <>
References: <> <> <> <> <> <>
X-Mailer: Apple Mail (2.3654.
Archived-At: <>
Subject: Re: [OAUTH-WG] RFC 8705 (oauth-mtls): RS error code for missing client certificate
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: OAUTH WG <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Mon, 15 Nov 2021 16:18:24 -0000

On Nov 12, 2021, at 8:30 AM, Dmitry Telegin <> wrote:
> Just to make sure I understand the process, is it going to be something like draft-XXXXXX-oauth-mtls-rfc8705-bis -> draft-ietf-oauth-mtls-rfc8705-bis -> new RFC that will obsolete the current one? CCing my colleague Takashi Norimatsu who worked on MTLS holder-of-key for Keycloak, perhaps he has more ideas for improvements.

That’s the most likely path if it happens, yes. And that’s if the WG wants to make that change, which would break things.

> As for this stance:
> The MTLS draft also re-uses “Bearer” as a token header, which is also a mistake in my opinion.
> Did you mean the re-use of the "Bearer" scheme for the Authorization header and WWW-Authenticate challenge? If so, and if we decide to introduce a new scheme, I think this would imply a new value for the "token_type" token response attribute as well.

I actually meant the use in the “Authorization: Bearer <token>” header, as well as the token type. In my opinion both of those should be something other than “bearer” because it’s not a bearer token, it’s TLS bound. The argument in the WG at the time was that it would allow easier upgrades from existing implementations. I personally hold that this decision allows for more dangerous downgrades instead. 🤷‍♀️

— Justin

> Of particular interest to me is the question whether different binding mechanisms (DPoP, MTLS) could co-exist, or should they be mutually exclusive; this deserves a separate thread though.
> - Dmitry

> On Thu, Nov 11, 2021 at 10:22 AM Justin Richer < <>> wrote:
> Only if this working group wanted to take up the work of making a new revision of the standard, but I haven't seen any indication of desire to do that here. One possibility is for you to propose an update as an individual draft to the group here. 
> -Justin
> ________________________________________
> From: Dmitry Telegin [ <>]
> Sent: Wednesday, November 10, 2021 1:34 PM
> To: Justin Richer
> Cc: oauth
> Subject: Re: [OAUTH-WG] RFC 8705 (oauth-mtls): RS error code for missing client certificate
> Thanks for the reply. That makes sense.
> Given that MTLS is not a draft but rather a proposed standard (RFC 8705), do you think there is a chance the changes you proposed could land in MTLS one day?
> On Wed, Nov 10, 2021 at 6:24 PM Justin Richer < <>< <>>> wrote:
> This is just my interpretation, but this feels more like invalid token, because you’re not presenting all of the material required for the token itself. The DPoP draft has added “invalid_dpop_proof” as an error code, which I think is even better, but the MTLS draft is missing such an element and that is arguably a mistake in the document. The MTLS draft also re-uses “Bearer” as a token header, which is also a mistake in my opinion.
> But given the codes available, “invalid_token” seems to fit better because you aren’t messing up the request _to the resource_ itself, you’re messing up the token presentation.
>  — Justin
> On Nov 10, 2021, at 10:17 AM, Dmitry Telegin < <><mailto:dmitryt <mailto:dmitryt> <>>> wrote:
> Any updates on this one? The missing certificate case looks more like "invalid_request" to me:
> invalid_request
>          The request is missing a required parameter, includes an
>          unsupported parameter or parameter value, repeats the same
>          parameter, uses more than one method for including an access
>          token, or is otherwise malformed.  The resource server SHOULD
>          respond with the HTTP 400 (Bad Request) status code.
> On Fri, Sep 24, 2021 at 2:23 AM Dmitry Telegin < <>< <>>> wrote:
> From the document:
>    The protected resource MUST obtain, from its TLS implementation
>    layer, the client certificate used for mutual TLS and MUST verify
>    that the certificate matches the certificate associated with the
>    access token.  If they do not match, the resource access attempt MUST
>    be rejected with an error, per [RFC6750< <>>], using an HTTP 401 status
>    code and the "invalid_token" error code.
> Should the same error code be used in the case when the resource failed to obtain a certificate from the TLS layer? This could happen, for example, if the TLS stack has been misconfigured (e.g. verify-client="REQUESTED" instead of "REQUIRED" for Undertow), and the user agent provided no certificate.
> Thanks,
> Dmitry
> _______________________________________________
> OAuth mailing list
> <>< <>>
> <>