Re: [OAUTH-WG] Fwd: I-D Action: draft-ietf-oauth-mtls-03.txt

John Bradley <> Fri, 04 August 2017 20:16 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id DF7C1120713 for <>; Fri, 4 Aug 2017 13:16:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=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 2qdk3js7rE75 for <>; Fri, 4 Aug 2017 13:16:40 -0700 (PDT)
Received: from ( [IPv6:2607:f8b0:400e:c05::232]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id D956D131C7C for <>; Fri, 4 Aug 2017 13:16:39 -0700 (PDT)
Received: by with SMTP id y129so11853554pgy.4 for <>; Fri, 04 Aug 2017 13:16:39 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20150623; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=4gVj0AaHIcNlazDPdh4c76wwZlrZCW7/BWnr/6W83uI=; b=IoOoasmU9xU52WS/uTaJqaEKggBBhC6mlclG2mfrHz8UfPQLR478Se84DSVQKSCqMf 5DiK+hZWl5sVgtJm+L83EpfN3UrGPjYStReezmOAzDiet2fEP54i4gACXaWPzT7Unmfl hKxv/rSejAyo0wqd4VClPH36+0wFlPeOxuBjaqPIujy07bp7tUJkSWuPB8FSOgenF+Hp UxPxstmvlN2zpqZ1w/vQFckUD82GjcalHl9XrxMNiQxfuojntvosRztAlkANeYVyWkdE BzBt/kk8trvi1wlXmJNETp9GPH78/pUV54D7gwtqBjRXkJjCWBrXRIrU0dBLwdiLjS7M Tzew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=4gVj0AaHIcNlazDPdh4c76wwZlrZCW7/BWnr/6W83uI=; b=hJRX6dCHl1eq8IUromeyPNTmfQXM6evehjWOlmVDPgPnyOk1SNvQTUOfBaAhBZByy0 wJ0FTD8hwh0Accaot/gDHUGrFeM205ry2i7wNLYzC5zJbsapsP1NO/i8k7cTL6GFK4Vm jTPhPWyjFxxbRdurUdIPddmXJbYFVMV5WGOB2RX6zbUy5PfwVPq73RhplcOCMo3zy1im aJOUnvDJZmz49o78SwBMxr8Y1BzURO5q1g0GIl/a016QgRriYU1815oN6JhlV1fEvBB1 1/EQ7kSbvJHtR/fRCMev8ZgWcTqO5RpFqPXgl3THsm/eQI7Zbacedt6Ehm9DUJlNaS96 14xQ==
X-Gm-Message-State: AIVw111WIsVxsuigucI06MuqIvu02CNbSCFuYGd2AH+yW0iaPf/VF+fN 5XDlk/4egAJ7gl72HiPcug==
X-Received: by with SMTP id m30mr4379200pli.218.1501877798747; Fri, 04 Aug 2017 13:16:38 -0700 (PDT)
Received: from [] ( []) by with ESMTPSA id n23sm4044486pfh.133.2017. (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 Aug 2017 13:16:37 -0700 (PDT)
From: John Bradley <>
Message-Id: <>
Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\))
Date: Fri, 4 Aug 2017 16:16:24 -0400
In-Reply-To: <>
Cc: Brian Campbell <>, oauth <>
To: Vladimir Dzhuvinov <>
References: <> <> <> <> <> <>
X-Mailer: Apple Mail (2.3273)
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="f403045cd7a2babc580555f32c60"
Archived-At: <>
Subject: Re: [OAUTH-WG] Fwd: I-D Action: draft-ietf-oauth-mtls-03.txt
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: OAUTH WG <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 04 Aug 2017 20:16:45 -0000

Having the whole certificate to compare may be easier in some environments that trying to directly compare the public keys.

I believe most environments make the cert from TLS available to the app comparing that to the one retrieved from the x5c element is relatively strait forward.

When comparing keys I worry that that may not be that easy to get from the TLS/HTTP stack.  
Some environments will provide SPKI and others like java have methods to directly manipulate the keys.

We should also check on any issues with representation of EC public keys.  
While JWA docent allow compressed points RFC 5480 allows them in SPKI.

Of the top of my head I don’t know if anyone issues certs in that format, but they could.  

If the client receives compressed points from SPKI and uncompressed from JWK it is possible to compare them but I have a bad feeling people will get it wrong.   

There is also a issue with leading zeros that must be present in the JWK but are not in the SPKI.

For the most part comparing the raw keys will work with the three currently supported named curves. 
New curves may also introduce new wrinkles.

If we were only talking RSA I would definitely ditch x5c.

However given that a certificate of some sort must exist to make MTLS work putting it in the x5c is not asking the world.

Getting a app to string compare two blobs seems less likely to go wrong in deployment than asking apps to do atleast format normalization of the public keys to compare them.

I wish it could be simpler.

John B.

> On Aug 4, 2017, at 3:17 PM, Vladimir Dzhuvinov <> wrote:
> What are the potential uses of the x5c parameter?
> Vladimir
> On 04/08/17 21:13, Brian Campbell wrote:
>> Just wanted to note that, in an off-list exchange, John has pushed back on
>> the idea to potentially drop mention of using x5c.
>> On Wed, Aug 2, 2017 at 9:29 AM, Brian Campbell <>
>> wrote:
>>> Thanks for the review, Vladimir.
>>> The text about which you have questions was written by Torsten (credit or
>>> blame where it's due!) but I believe he's out of the office for a bit so
>>> I'll try and answer.
>>> Your 1st question:
>>> I've had the same thought regarding the public key method and using the
>>> JWK x5c parameter. A JWK already has the public key, which is sufficient
>>> for comparison in the public key method. So x5c is just superfluous here. I
>>> believe that's a change that the next revision should have and will look to
>>> make it unless someone wants to make a strong case for needing x5c.
>>> Your 2nd question:
>>> I also found the sentence, "When used in conjunction with a trusted X.509
>>> certificate source, it also allows the client to rotate its X.509
>>> certificates without the need to change its respective authentication data
>>> at the authorization server." somewhat difficult to understand when I first
>>> read it. The intended meaning relies on content earlier in the same
>>> paragraph that says, "As pre-requisite, the client registers a X.509
>>> certificate or *a trusted source for its X.509 certificates (jwks uri as
>>> defined in [RFC7591])* with the authorization server."  Basically what
>>> it's trying to say is that when a client is registered or configured with a
>>> jwks_uri, then client key rotation can be done without needing to
>>> explicitly update the client config/registration with the AS. Does that
>>> explain it? I believe the text could be more straightforward and will
>>> endeavor to make it more clear in the next draft update.
>>> On Wed, Aug 2, 2017 at 1:53 AM, Vladimir Dzhuvinov <
>>>> wrote:
>>>> Thanks everyone for the update! Having a clear distinction between the
>>>> PKIX vs public key bound methods will help interop, implementers' job, and
>>>> it also appears good for security.
>>>> Questions:
>>>> 03#section-2.3
>>>> where the X.509 certificates are represented using the "x5c" parameter from [RFC7517 < <>>]
>>>> For the public key method, is it really necessary for the client to
>>>> include its certificate in the JWK x5c parameter? This will make
>>>> implementation harder for developers, and I'm not sure it adds anything in
>>>> terms of security. Registering the public key parameters seems sufficient
>>>> to me.
>>>> <>
>>>> 03#section-2.1
>>>> When used in conjunction with a trusted X.509 certificate source, it also allows the client to rotate its X.509 certificates without the need to change its respective authentication data at the authorization server.
>>>> I don't understand this - "in conjunction with a trusted X.509
>>>> certificate source"
>>>> Thanks,
>>>> Vladimir
>>>> On 28/07/17 21:33, Brian Campbell wrote:
>>>> A new draft of "Mutual TLS Profile for OAuth 2.0" has been published with
>>>> the changes listed below based on comments and dissuasion in Prague.
>>>>   draft-ietf-oauth-mtls-03< <>> < <>>
>>>>   o  Introduced metadata and client registration parameter to publish
>>>>      and request support for mutual TLS sender constrained access
>>>>      tokens
>>>>   o  Added description of two methods of binding the cert and client,
>>>>      PKI and Public Key.
>>>>   o  Indicated that the "tls_client_auth" authentication method is for
>>>>      the PKI method and introduced "pub_key_tls_client_auth" for the
>>>>      Public Key method
>>>>   o  Added implementation considerations, mainly regarding TLS stack
>>>>      configuration and trust chain validation, as well as how to to do
>>>>      binding of access tokens to a TLS client certificate for public
>>>>      clients, and considerations around certificate bound access tokens
>>>>   o  Added new section to security considerations on cert spoofing
>>>>   o  Add text suggesting that a new cnf member be defined in the
>>>>      future, if hash function(s) other than SHA-256 need to be used for
>>>>      certificate thumbprints
>>>> ---------- Forwarded message ----------
>>>> From: < <>> < <>>
>>>> Date: Fri, Jul 28, 2017 at 12:25 PM
>>>> Subject: [OAUTH-WG] I-D Action: draft-ietf-oauth-mtls-03.txt
>>>> To: <>
>>>> Cc: <>
>>>> A New Internet-Draft is available from the on-line Internet-Drafts
>>>> directories.
>>>> This draft is a work item of the Web Authorization Protocol WG of the IETF.
>>>>        Title           : Mutual TLS Profile for OAuth 2.0
>>>>        Authors         : Brian Campbell
>>>>                          John Bradley
>>>>                          Nat Sakimura
>>>>                          Torsten Lodderstedt
>>>>        Filename        : draft-ietf-oauth-mtls-03.txt
>>>>        Pages           : 17
>>>>        Date            : 2017-07-28
>>>> Abstract:
>>>>   This document describes Transport Layer Security (TLS) mutual
>>>>   authentication using X.509 certificates as a mechanism for OAuth
>>>>   client authentication to the token endpoint as well as for
>>>>   certificate bound sender constrained access tokens.
>>>> The IETF datatracker status page for this draft is: <>
>>>> There are also htmlized versions available at: <>
>>>> A diff from the previous version is available at: <>
>>>> Please note that it may take a couple of minutes from the time of submission
>>>> until the htmlized version and diff are available at <>.
>>>> Internet-Drafts are also available by anonymous FTP at: <>
>>>> _______________________________________________
>>>> OAuth mailing listOAuth@ietf.orghttps <mailto:listOAuth@ietf.orghttps>://
>>>> _______________________________________________
>>>> OAuth mailing list
>>>> <>
>>>> <>
> _______________________________________________
> OAuth mailing list
> <>
> <>