Re: [OAUTH-WG] New Version Notification for draft-campbell-oauth-tls-client-auth-00.txt

Sergey Beryozkin <sberyozkin@gmail.com> Thu, 03 November 2016 17:11 UTC

Return-Path: <sberyozkin@gmail.com>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EB7AE12955D for <oauth@ietfa.amsl.com>; Thu, 3 Nov 2016 10:11:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Level:
X-Spam-Status: No, score=-2.7 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, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qh7a0Exk51g7 for <oauth@ietfa.amsl.com>; Thu, 3 Nov 2016 10:11:25 -0700 (PDT)
Received: from mail-wm0-x230.google.com (mail-wm0-x230.google.com [IPv6:2a00:1450:400c:c09::230]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 63054128E18 for <oauth@ietf.org>; Thu, 3 Nov 2016 10:11:25 -0700 (PDT)
Received: by mail-wm0-x230.google.com with SMTP id c184so4850869wmd.0 for <oauth@ietf.org>; Thu, 03 Nov 2016 10:11:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=QeVqBrp1xGkB8XtGxWLhMe86L2MaNvVE3GnEbBp2g5k=; b=MF87cSjc2ZQq/mQNHuXKWQ1VyToR7D+fSQ9slNwEaeC56SH9wv3x8XdX/ABduE/4h1 uUs2JMCIx7s0F5bdBhG+SMP2KagPXABLaXawddBfMfWt3BWd3tMz6nxonqvzfd/h8Jp/ qDMyou3rSulu3v6bheKzLuStNjnmV13HBsXrec9mf37c+xnZC74KIYCyeVEe1osHWq6c 0wQJT7gOON27B9gW65YTcbezHVWglcdkxFEgnAeacxadChtqbZAnsI8QNtOEFMVn3RNw oHipYXBRSKN+UBp77UV0QpTuXpH5b4A1bUunj5SXhdpMljQtqUHNL7XJUxM4nDFTxFQw ZnVA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=QeVqBrp1xGkB8XtGxWLhMe86L2MaNvVE3GnEbBp2g5k=; b=Pz4yumyBa1XiJ1EPzq1Q4OmX8Sv+yEf/JTIuryZ8s751KEiqHVoDFiGxhYt9+f8kyi yLT5SPWibHgno5/qZPs5S2t2QoyVqyeG8JVdxyEcHkGfNSB9CAHOxwJpJ8XbUQk0N3af znecKz38SWETcaG5oADhGYkF5aGpYO0kpftj0CQ+GNMVEmYZlceVXfuNAYziARu8r79x LtM+dy3E4KvV891T+AgLb6SAHOc0f7O5MNDzv4QxEIF7ooN21IWkXFOFz0fWj+6IRIRw sb35AWwgmL6ma9gzEQHIyyIqFEUznKERFobs2udS6TaMVSro4vYS0byXjzrFq50Sw5Gv VqKg==
X-Gm-Message-State: ABUngvcCY8zoBwVmjDLuTakp7URyikDJwHfz1S0Q5PLv8HeQdZItzBdfLPCiKL0hDWKY0w==
X-Received: by 10.28.126.146 with SMTP id z140mr7660369wmc.84.1478193083509; Thu, 03 Nov 2016 10:11:23 -0700 (PDT)
Received: from [10.36.226.98] ([80.169.137.53]) by smtp.googlemail.com with ESMTPSA id k74sm10118110wmd.18.2016.11.03.10.11.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Nov 2016 10:11:22 -0700 (PDT)
To: Samuel Erdtman <samuel@erdtman.se>, Justin Richer <jricher@mit.edu>
References: <147613227959.31428.2920748721017165266.idtracker@ietfa.amsl.com> <9CDE07EB-E5B4-43B2-B3C1-F12569CAB458@ve7jtb.com> <26838e0e-1aee-04ca-4f7e-f6cff8dcfacf@connect2id.com> <CA+k3eCQaWm+O8VMNGGJG41j=dW2vqa4n6QZgKmVM9=d0HxgnCA@mail.gmail.com> <853d5445-72e4-a1fb-b89c-919864f051f6@connect2id.com> <CAF2hCbYn5_qBTmYkeJVCtJ-0=zWdRcFfu+0cHHb4ygo6as_V6w@mail.gmail.com> <CA+k3eCRXss-4_Cxmi41YAcXHh0VKeHogGT=xNkAo1mU6e5WG1w@mail.gmail.com> <CAF2hCbaEi4ntDwbWpTJ4-7_uwunK5WhpsoVLKds87r_s4K7n1w@mail.gmail.com> <CA+k3eCRq=P=0wqBx7O3C--fJYTEsuP1WH+1of53_oWb=bxfssw@mail.gmail.com> <41668b29-ba11-3bab-c77d-6b98bcb60280@mit.edu> <9D3DD1DC-1432-4CB9-9122-F47CB87ABD58@manicode.com> <55855cf4-e683-95b4-38e0-788f402c8cd2@mit.edu> <B6AF115B-A0FB-47B1-851B-9BC198D3E36A@manicode.com> <67189330-9FC0-4A10-815D-9EA5047BA3EF@mit.edu> <CAF2hCbY3-JAcDznJJbdRgJcQ79MgbvjiCVXbenv2ibokTVEUow@mail.gmail.com>
From: Sergey Beryozkin <sberyozkin@gmail.com>
Message-ID: <613701d6-7857-1933-f385-0969b4b0c9ba@gmail.com>
Date: Thu, 03 Nov 2016 17:11:22 +0000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0
MIME-Version: 1.0
In-Reply-To: <CAF2hCbY3-JAcDznJJbdRgJcQ79MgbvjiCVXbenv2ibokTVEUow@mail.gmail.com>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Transfer-Encoding: 8bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/ueqQRUE-ZGfYIeIHDFztvOiw0BQ>
Cc: Nat Sakimura via Openid-specs-fapi <openid-specs-fapi@lists.openid.net>, "<oauth@ietf.org>" <oauth@ietf.org>
Subject: Re: [OAUTH-WG] New Version Notification for draft-campbell-oauth-tls-client-auth-00.txt
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>, <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth/>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Nov 2016 17:11:28 -0000

Hi

In our implementation we support the following scenario:
- the client registers its public certificate during the client registration

- next, mutual/two-way TLS is used, so AccessTokenService tries to 
figure out the client_id. At the moment it assumes the client_id is
(Java) X509Certificate.getSubjectX500Principal().getName().

Next it retrieves a client with this name and compares the TLS 
client/peer certificate against the pre-registered one.

I think it may be interesting to explore further if client_id can become 
optional based on what Samuel said.

For example, indeed I can see how I can update our code to have a 
mapping between some of client certificate's properties and a client id 
stored within a Client registration.

The question is how to find a given Client registration effectively 
given only a certificate, without an optional client_id. One would need 
to have a map between these client certificate attribute and client_id 
or Clients.

Cheers, Sergey



On 03/11/16 16:48, Samuel Erdtman wrote:
> I can see your point, maybe the client_id will not be in the certificate.
> If I had an AS I would select to trust one or several CAs and then
> create certificate mappings between certificate serial number (or some
> other unique attribute in the certificate) and client_id. If I were to
> bind a specific certificate to a client_id I lose the flexibility of the
> PKI (maybe what you want).
>
> I think multiple certificates might not be a uncommon situation
> especially if you call ASs from different organizations because they
> will trust different CAs.
>
> //Samuel
>
>
> On Thu, Nov 3, 2016 at 5:32 PM, Justin Richer <jricher@mit.edu
> <mailto:jricher@mit.edu>> wrote:
>
>     Jim,
>
>     In those circumstances, are the clients generally calling multiple
>     different services? Or just one? For those that call multiple
>     services, are they using multiple (different) client certificates?
>
>     I’m not saying the client would issue its own cert in all cases —
>     much more common is what I’ve seen, with clients being assigned a
>     certificate from a trusted CA, and then services that the client
>     talks to being told to trust that CA and also assign the CN/DN of
>     the cert a set of privileges. What I *haven’t* seen is a client
>     being issued multiple certificates to talk to multiple systems. That
>     latter case is common enough in the OAuth world that I wouldn’t want
>     us to paint ourselves in a corner.
>
>      — Justin
>
>>     On Nov 3, 2016, at 10:31 AM, Jim Manico <jim@manicode.com
>>     <mailto:jim@manicode.com>> wrote:
>>
>>     Thanks Justin. I use several security intel services and they all
>>     have different cert delivery mechanisms for mutual TLS. It's
>>     •rare• for services to let clients choose certs, they are usually
>>     assigned to users by each service from my experience.
>>
>>     Aloha,
>>     --
>>     Jim Manico
>>     @Manicode
>>     Secure Coding Education
>>     +1 (808) 652-3805 <tel:%2B1%20%28808%29%20652-3805>
>>
>>     On Nov 3, 2016, at 8:51 AM, Justin Richer <jricher@mit.edu
>>     <mailto:jricher@mit.edu>> wrote:
>>
>>>     Yes, I elided the certificate issuance process. The point remains
>>>     the same: you're not going to be submitting a CSR to the same
>>>     party you're getting your client_id from, usually. If the draft
>>>     assumes that, then it's incredibly limiting.
>>>
>>>
>>>     Do people really use separate TLS client certs for separate
>>>     connections in the wild? I've personally never seen that. What
>>>     I've seen is that a piece of software gets its certificate that
>>>     it uses to make whatever connections it needs to make.
>>>
>>>
>>>      -- Justin
>>>
>>>
>>>     On 11/3/2016 8:48 AM, Jim Manico wrote:
>>>>     Just to be clear, the relationship should more like...
>>>>
>>>>     AS issues public key to clients, or client sends public key to
>>>>     AS. The authorities job is NOT to give the client the public
>>>>     key, but to sign the public key for authenticity. It's bad
>>>>     practice to accept the full cert (pub key+signature) from an
>>>>     authority. If an authority is creating your public key, they are
>>>>     also creating your private key.... bad.
>>>>
>>>>     > The client will use the same cert across multiple connections,
>>>>     possibly multiple AS's, but the same isn't true of the client_id.
>>>>
>>>>     This seems like a bad idea. I suggest a separate key/signature
>>>>     for each service.
>>>>     --
>>>>     Jim Manico
>>>>     @Manicode
>>>>     Secure Coding Education
>>>>     +1 (808) 652-3805 <tel:%2B1%20%28808%29%20652-3805>
>>>>
>>>>     On Nov 3, 2016, at 8:41 AM, Justin Richer <jricher@mit.edu
>>>>     <mailto:jricher@mit.edu>> wrote:
>>>>
>>>>>     I agree that the client_id is unlikely to be found inside the
>>>>>     certificate itself. The client_id is issued by the
>>>>>     authorization server for the client to use at that single AS.
>>>>>     The certificate is issued by the CA for the client to use on
>>>>>     any connection. The AS and CA are not likely to be the same
>>>>>     system in most deployments. The client will use the same cert
>>>>>     across multiple connections, possibly multiple AS's, but the
>>>>>     same isn't true of the client_id.
>>>>>
>>>>>     Additionally, I think we want to allow for a binding of a
>>>>>     self-signed certificate using dynamic registration, much the
>>>>>     way that we already allow binding of a client-generated JWK today.
>>>>>
>>>>>     I do think that more examples and guidance are warranted,
>>>>>     though, to help AS developers.
>>>>>
>>>>>      -- Justin
>>>>>
>>>>>
>>>>>     On 11/2/2016 5:03 PM, Brian Campbell wrote:
>>>>>>
>>>>>>     On Sun, Oct 30, 2016 at 9:27 AM, Samuel Erdtman
>>>>>>     <samuel@erdtman.se <mailto:samuel@erdtman.se>> wrote:
>>>>>>
>>>>>>
>>>>>>         I agree it is written so that the connection to the
>>>>>>         certificate is implicitly required but I think it would be
>>>>>>         better if it was explicit written since the lack of a
>>>>>>         connection would result in a potential security hole.
>>>>>>
>>>>>>
>>>>>>     That's fair. I agree it can be made more explicit and that it
>>>>>>     be good to do so.
>>>>>>
>>>>>>
>>>>>>
>>>>>>         When it comes to the client_id I think subject common name
>>>>>>         or maybe subject serial numbers will be the common
>>>>>>         location, and I think an example would be valuable.
>>>>>>
>>>>>>
>>>>>>
>>>>>>     In my experience and the way we built support for mutual TLS
>>>>>>     OAuth client auth the client_id value does not appear in the
>>>>>>     certificate anywhere. I'm not saying it can't happen but don't
>>>>>>     think it's particularly common.
>>>>>>
>>>>>>     I can look at adding some examples, if there's some consensus
>>>>>>     that they'd be useful and this document moves forward.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>         I´m not saying it is a bad Idea just that I would prefer
>>>>>>         if it was not a MUST.
>>>>>>         With very limited addition of code it is just as easy to
>>>>>>         get the certificate attribute for client id as it is to
>>>>>>         get it from the HTTP request data (at least in java). I
>>>>>>         also think that with the requirement to match the incoming
>>>>>>         certificate in some way one has to read out the
>>>>>>         certificate that was used to establish the connection to
>>>>>>         do some kind of matching.
>>>>>>
>>>>>>
>>>>>>     Getting data out of the certificate isn't a concern. I just
>>>>>>     believe that the constancy of having the client id parameter
>>>>>>     is worth the potential small amount duplicate data in some
>>>>>>     cases. It's just a -00 draft though and if the WG wants to
>>>>>>     proceed with this document, we seek further input and work
>>>>>>     towards some consensus.
>>>>>>
>>>>>>
>>>>>>
>>>>>>     _______________________________________________
>>>>>>     OAuth mailing list
>>>>>>     OAuth@ietf.org <mailto:OAuth@ietf.org>
>>>>>>     https://www.ietf.org/mailman/listinfo/oauth
>>>>>>     <https://www.ietf.org/mailman/listinfo/oauth>
>>>>>
>>>>>     _______________________________________________
>>>>>     OAuth mailing list
>>>>>     OAuth@ietf.org <mailto:OAuth@ietf.org>
>>>>>     https://www.ietf.org/mailman/listinfo/oauth
>>>>>     <https://www.ietf.org/mailman/listinfo/oauth>
>>>
>
>
>
>
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth
>


-- 
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/