Re: [OAUTH-WG] Proposal for text for section 2

"Manger, James H" <James.H.Manger@team.telstra.com> Thu, 01 July 2010 04:18 UTC

Return-Path: <James.H.Manger@team.telstra.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 646693A6831 for <oauth@core3.amsl.com>; Wed, 30 Jun 2010 21:18:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.258
X-Spam-Level: *
X-Spam-Status: No, score=1.258 tagged_above=-999 required=5 tests=[AWL=-0.441, BAYES_50=0.001, HELO_EQ_AU=0.377, HOST_EQ_AU=0.327, RELAY_IS_203=0.994]
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 1kqi+fLHx4Aj for <oauth@core3.amsl.com>; Wed, 30 Jun 2010 21:18:11 -0700 (PDT)
Received: from ipxbno.tcif.telstra.com.au (ipxbno.tcif.telstra.com.au [203.35.82.204]) by core3.amsl.com (Postfix) with ESMTP id 5CBD03A6861 for <oauth@ietf.org>; Wed, 30 Jun 2010 21:18:10 -0700 (PDT)
X-IronPort-AV: E=Sophos;i="4.53,517,1272808800"; d="scan'208";a="5233944"
Received: from unknown (HELO ipcbni.tcif.telstra.com.au) ([10.97.216.204]) by ipobni.tcif.telstra.com.au with ESMTP; 01 Jul 2010 14:18:19 +1000
X-IronPort-AV: E=McAfee;i="5400,1158,6029"; a="4013734"
Received: from wsmsg3754.srv.dir.telstra.com ([172.49.40.198]) by ipcbni.tcif.telstra.com.au with ESMTP; 01 Jul 2010 14:18:21 +1000
Received: from WSMSG3153V.srv.dir.telstra.com ([172.49.40.159]) by WSMSG3754.srv.dir.telstra.com ([172.49.40.198]) with mapi; Thu, 1 Jul 2010 14:18:20 +1000
From: "Manger, James H" <James.H.Manger@team.telstra.com>
To: Yaron Goland <yarong@microsoft.com>, "oauth@ietf.org" <oauth@ietf.org>
Date: Thu, 01 Jul 2010 14:18:19 +1000
Thread-Topic: Proposal for text for section 2
Thread-Index: AcsUm7O3+LYTofkOQ6CsKuFeuynp2ACcJnPgAAxyEYAAH/FooAAMQp/wADFXrDAAAfH0QA==
Message-ID: <255B9BB34FB7D647A506DC292726F6E11265CBC110@WSMSG3153V.srv.dir.telstra.com>
References: <7C01E631FF4B654FA1E783F1C0265F8C579CC0C3@TK5EX14MBXC117.redmond.corp.microsoft.com> <7C01E631FF4B654FA1E783F1C0265F8C579D0F31@TK5EX14MBXC117.redmond.corp.microsoft.com> <255B9BB34FB7D647A506DC292726F6E11265A5FC9D@WSMSG3153V.srv.dir.telstra.com> <7C01E631FF4B654FA1E783F1C0265F8C579D20CB@TK5EX14MBXC117.redmond.corp.microsoft.com> <255B9BB34FB7D647A506DC292726F6E11265B7E872@WSMSG3153V.srv.dir.telstra.com> <7C01E631FF4B654FA1E783F1C0265F8C579D76A1@TK5EX14MBXC117.redmond.corp.microsoft.com>
In-Reply-To: <7C01E631FF4B654FA1E783F1C0265F8C579D76A1@TK5EX14MBXC117.redmond.corp.microsoft.com>
Accept-Language: en-US, en-AU
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US, en-AU
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Subject: Re: [OAUTH-WG] Proposal for text for section 2
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: Thu, 01 Jul 2010 04:18:12 -0000

Yaron,

> how can you ding client assertions credentials for doing exactly what client basic credentials do?

I don't like client basic credentials in request bodies either. We should ditch that as well. I am sure I have dinged it in the past. It offers too little benefit for the cost of confusing APIs (& code) by mixing the content and authentication. And you lose a well-established discovery method: a response with WWW-Authenticate: BASIC ....

At least with basic credentials they can fit in a URI. Consequently, they don't prevent GET, HEAD, or DELETE requests, or even non-form PUT and POST requests in an API. Plus the Authorization header equivalent approach always works as well.
[You can almost consider an "endpoint with client_id and client_secret" as a single base URI for the API -- and almost pretend that it doesn't compromise the HTTP model.]


> How about we edit the client assertion proposal to include the ability to put assertions both in the HTTP authorization header as well as in the body? Then the assertion proposal will be 100% equivalent to the existing basic credentials proposal.

It is hardly 100% equivalent when the header option will fail in some cases (large assertions), and the other option fails for GETs, HEADs, DELETEs, and non-form requests.


I would like OAuth2 to say: "The token API will often require client auth; a service MAY support any auth mechanisms; BASIC is a recommended mechanism; BASIC MUST be supported if the service issues shared secrets to clients".
Using a client assertion would fit right in if it could be defined as a standalone HTTP auth mechanism (even with a option to use form params for POSTs of forms). This would be best as its own standalone spec.

If such a spec gets support (despite sometimes failing for non-POST or non-form requests), we are done. If such a spec isn't supported it suggests we should define a specific API that accepts client assertions, instead of an "orthogonal" auth mechanism (still best in its own spec).


P.S. When are client_assertion/client_assertion_type used, as opposed to assertion/assertion_type? It is not clear to me from the existing and proposed spec text. I don't think the OAuth2 spec has enough context for the assertion parts. It would be better outside the OAuth2 spec, where more details could be provided about how it hooks up with the rest of a claims-based system.

--
James Manger