Re: [OAUTH-WG] OAuth 2.0: client_secret, state

Luke Shepard <lshepard@facebook.com> Mon, 22 March 2010 14:53 UTC

Return-Path: <lshepard@facebook.com>
X-Original-To: oauth@core3.amsl.com
Delivered-To: oauth@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 213FF3A681F for <oauth@core3.amsl.com>; Mon, 22 Mar 2010 07:53:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.65
X-Spam-Level:
X-Spam-Status: No, score=-1.65 tagged_above=-999 required=5 tests=[AWL=-2.115, BAYES_50=0.001, DNS_FROM_OPENWHOIS=1.13, IP_NOT_FRIENDLY=0.334, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9emUw4lo-JYk for <oauth@core3.amsl.com>; Mon, 22 Mar 2010 07:53:45 -0700 (PDT)
Received: from mailout-snc1.facebook.com (mailout-snc1.facebook.com [69.63.179.25]) by core3.amsl.com (Postfix) with ESMTP id 67A6B3A68D1 for <oauth@ietf.org>; Mon, 22 Mar 2010 07:53:45 -0700 (PDT)
Received: from mail.thefacebook.com ([192.168.18.83]) by pp01.snc1.tfbnw.net (8.14.3/8.14.3) with ESMTP id o2MErjlT022542 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NOT); Mon, 22 Mar 2010 07:53:45 -0700
Received: from SC-MBXC1.TheFacebook.com ([192.168.18.102]) by sc-hub06.TheFacebook.com ([192.168.18.83]) with mapi; Mon, 22 Mar 2010 07:54:00 -0700
From: Luke Shepard <lshepard@facebook.com>
To: "Manger, James H" <James.H.Manger@team.telstra.com>
Date: Mon, 22 Mar 2010 07:53:59 -0700
Thread-Topic: [OAUTH-WG] OAuth 2.0: client_secret, state
Thread-Index: AcrJz4HElpuzpEHNQmC2ZbrhLrmHCw==
Message-ID: <43E6E065-1632-43C0-B9CA-5D36311920B9@facebook.com>
References: <526C3C44-18CF-4A94-A4C6-72702F73AC83@facebook.com> <255B9BB34FB7D647A506DC292726F6E112531C851D@WSMSG3153V.srv.dir.telstra.com>
In-Reply-To: <255B9BB34FB7D647A506DC292726F6E112531C851D@WSMSG3153V.srv.dir.telstra.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=1.12.8161:2.4.5, 1.2.40, 4.0.166 definitions=2010-03-22_06:2010-02-06, 2010-03-22, 2010-03-22 signatures=0
Cc: OAuth WG <oauth@ietf.org>
Subject: Re: [OAUTH-WG] OAuth 2.0: client_secret, state
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/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: Mon, 22 Mar 2010 14:53:46 -0000

Few responses inline.

On Mar 22, 2010, at 5:11 AM, Manger, James H wrote:

> 1. CLIENT SECRET
> Client authentication needs to be independent of OAuth.
> The Web Server Flow sends oauth_client_secret to the access token request endpoint along with other oauth_ parameters. This is a poor design.
> 
> Consider, for instance, a service that authenticates clients with TLS client certs. Such clients don't have a shared secret to put in the oauth_client_secret parameter so they cannot perform protocol in this OAuth 2 draft.
> Even if client certs are rare, the issue is that there is no reason why client certs should prevent OAuth 2 from working.
> 
> Servers that can authenticate clients are likely to offer them various APIs in addition to the OAuth get-a-token calls. The same client authentication mechanism used for those calls should be reused for the get-a-token calls.
> 
> I suggest dropping the oauth_client_secret, perhaps adding text such as:
> "Servers that require clients to be pre-registered may require this client request to be authenticated."
> 

It would be great to support client certificates as a means to authenticate OAuth applications. However, that should be a new flow, as it has different security characteristics.

<snip>

> 4. The Username and Password Flow has oauth_client_secret in the example but not in the expected list of parameters.

Mistake. It should not have client secret. This flow also could benefit from client certs, if available, but again, that is a new flow definition.

> 5. Just call it TLS (not TLS/SSL).

Many people are familiar with SSL, not TLS, and so this clarifies for those readers.