Re: [OAUTH-WG] MTLS and in-browser clients using the token endpoint

Filip Skokan <> Mon, 17 December 2018 22:37 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 96C9112D4E6 for <>; Mon, 17 Dec 2018 14:37:06 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Status: No, score=-1.999 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, MIME_QP_LONG_LINE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 6Q6zgajMtU4n for <>; Mon, 17 Dec 2018 14:37:04 -0800 (PST)
Received: from ( [IPv6:2a00:1450:4864:20::42a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 7F1FB12958B for <>; Mon, 17 Dec 2018 14:37:04 -0800 (PST)
Received: by with SMTP id p4so13949404wrt.7 for <>; Mon, 17 Dec 2018 14:37:04 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=from:content-transfer-encoding:mime-version:date:subject:message-id :references:in-reply-to:to; bh=1FRXuAqRNtpkXqMZ4rKxslIRKpd4aDGP6xMUy/q7rw4=; b=A/m+WrUAdQ+SDWYaU3t8DxvPjvimzemoO0mh1+ULNjsEAHvvFj1KRBbYOcV4LkMgG2 8k2ZQ+O8ngzPkAvzEV7aXbxiG84KflLB87taiLxFuCPFta88K0JIfDhE2QYXbOQw8i4R sc0Z6gIxeOn4RK8oEftPErQo/PQ1T7xUYdZW1DCqUXa8HzwrDuZK8ilOoZP/4oKtneWT verBoIs6DvTMp74cTF98w6NdTDYE6X0L6jmGg+zReYeU8OXUjb8SfvPpRgRHoQ0NvNlt 3s7i2UYXPOlqw+xt2A1tTA/uhhrQY2jSpOM/E2W/GgWdLMgtJkh7p346LfYNmfb3sUD5 Cazw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:from:content-transfer-encoding:mime-version:date :subject:message-id:references:in-reply-to:to; bh=1FRXuAqRNtpkXqMZ4rKxslIRKpd4aDGP6xMUy/q7rw4=; b=TMkY6CYoVQwHAXx8Yw4c1myMoo/qJIllG5+iJuHu7t9tNiHT/vudTKgDMZjCqfcUSP yYXsWYyuyCN/7MjCXjPY7UmcNDMADk6WOwDH5z56Sa5CDRS1b/qQF8GPNGoF2feYs3aM XZTWrI2o08DYhFLt0jda78Aq/+cwd9NHcrixZN7O7kvWWL0fmQRN+8V0bSPkWKMKMiBf EW5M7OTyCc6vx1lM0RqHMNZIXrTstRJnnEeL+AVDOFMexqjhy891uZy4J/gvTbDEOcoR dqSlpgZr7+lL1kilbOQjCRR0H5R+jDkqMN7Tsm2Ql4Nj+Qmh675lsJhLz+p8GiUrkJ4A 0PNw==
X-Gm-Message-State: AA+aEWb8S3c1knXXL5jGJUJKP2Ch4+bHsktU4XnlrJL7zt5fwufPNtHM SVCUARpD+RtKTBjskVsJAsnpopM=
X-Google-Smtp-Source: AFSGD/Uh0ZHQxkX9DNLWdvXKWx2C5AXy3KJR0Vg4Sq8uEZwayO5ZPPY/5GWhZpSao//Fd5RkjrzrfQ==
X-Received: by 2002:adf:dd06:: with SMTP id a6mr13044265wrm.2.1545086222783; Mon, 17 Dec 2018 14:37:02 -0800 (PST)
Received: from [] ( []) by with ESMTPSA id t5sm455343wmd.15.2018. (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 17 Dec 2018 14:37:01 -0800 (PST)
From: Filip Skokan <>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (1.0)
Date: Mon, 17 Dec 2018 23:37:00 +0100
Message-Id: <>
References: <> <> <>
In-Reply-To: <>
To: John Bradley <>,
X-Mailer: iPhone Mail (16B92)
Archived-At: <>
Subject: Re: [OAUTH-WG] MTLS and in-browser clients using the token endpoint
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, 17 Dec 2018 22:37:07 -0000

Correct. If there are certs installed on the device the browsers are likely going to prompt. 

Having at least one CA configured together with optional_no_ca (even if its a CA noone ever has certs for) additionally omits the prompt for some client configurations. 

Odesláno z iPhonu

17. 12. 2018 v 23:10, John Bradley <>:

> I think that works for those browsers if no certificates are installed for the browser.   We should test, but I think if any certificates are available to the browser then it will prompt.
> John B.
>> On 12/17/2018 1:52 PM, Neil Madden wrote:
>> I am currently running a Tomcat instance that I have configured to support, but not demand, client certificates using the certificateVerification=“optionalNoCA” setting. With this config I am able to authenticate a confidential client using mTLS, and yet connecting to the same server over HTTPS in either Safari or Chrome on Mac does not prompt me for any certificate. I don’t have any client certificates configured in my browser, so does this only happen if you do?
>> Depending on the deployment scenario, it may also be possible to terminate TLS at a proxy and use a separate proxy for (intranet) mTLS clients vs public clients, but that may not suit every deployment.
>> — Neil
>>> On 17 Dec 2018, at 20:26, Brian Campbell <> wrote:
>>> While there's been some disagreement about the specific wording etc., there does seem to be general consensus coming out of this WG to, in one form or another, recommend against the use of the implicit grant in favor of authorization code. In order to follow that recommendation, in-browser JavaScript clients will need to use XHR/fetch (and likely CORS) to make requests directly to the token endpoint.
>>> Meanwhile there is the MTLS document utilizes TLS client certificates at the token endpoint for client authentication and/or certificate bound access tokens. The security BCP draft even recommends sender/key constrained access tokens and MTLS is close to the only viable way to do that at this time.
>>> Unfortunately, however, these two things don't play very nice together. When a browser makes a TLS connection where a client cert is requested by the server in the handshake, even when client certificates are optional and even when it's fetch/XHR, most/many/all browsers will throw up some kind of certificate selection interface to the user.  Which is typically a very very bad user experience. From a practical standpoint, this means that a single deployment cannot really support the MTLS draft and have in-browser JavaScript clients using authorization code at the same time.
>>> In order to address the conflict here, I'd propose that the MTLS draft introduce a new optional AS metadata parameter that is an MTLS enabled token endpoint alias. Clients that are doing MTLS client authentication and/or certificate bound access tokens would/should/must use the alternative token endpoint when present in the AS's metadata. While all other clients continue to use the standard token endpoint as they always have. This would allow for an AS to deploy an alternative token endpoint alias on a distinct host or port where it will request client certs in the TLS handshake for OAuth clients that use it while keeping the regular token endpoint as it normally is for other clients, especially in-browser JavaScript clients.
>>> Thoughts, objections, agreements, etc., on this proposal?
>>> PS Bikeshedding on a name for the metadata parameter is also welcome. Some ideas to start:
>>> token_endpoint_mtls_alias
>>> token_endpoint_mtls
>>> mtls_token_endpoint_alias
>>> mtls_token_endpoint
>>> alt_token_endpoint_mtls
>>> mtls_token_endpoint_alt
>>> a_token_endpoint_that_a_client_wanting_to_do_mtls_stuff_a_la_RFC_[TBD]_should_use
>>> equally_poor_idea_here
>>> CONFIDENTIALITY NOTICE: This email may contain confidential and privileged material for the sole use of the intended recipient(s). Any review, use, distribution or disclosure by others is strictly prohibited..  If you have received this communication in error, please notify the sender immediately by e-mail and delete the message and any file attachments from your computer. Thank you._______________________________________________
>>> OAuth mailing list
>> _______________________________________________
>> OAuth mailing list
> _______________________________________________
> OAuth mailing list