Re: [OAUTH-WG] Simpilfying use of assertions when requesting an access token

David Waite <david@alkaline-solutions.com> Fri, 10 September 2010 07:36 UTC

Return-Path: <david@alkaline-solutions.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 A5ED03A6851 for <oauth@core3.amsl.com>; Fri, 10 Sep 2010 00:36:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.74
X-Spam-Level:
X-Spam-Status: No, score=-0.74 tagged_above=-999 required=5 tests=[BAYES_20=-0.74]
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 eTf8n-y7tTHK for <oauth@core3.amsl.com>; Fri, 10 Sep 2010 00:36:55 -0700 (PDT)
Received: from alkaline-solutions.com (lithium4.alkaline-solutions.com [208.78.100.23]) by core3.amsl.com (Postfix) with ESMTP id 402843A659C for <oauth@ietf.org>; Fri, 10 Sep 2010 00:36:55 -0700 (PDT)
Received: from [192.168.3.5] (c-71-229-184-74.hsd1.co.comcast.net [71.229.184.74]) by alkaline-solutions.com (Postfix) with ESMTPSA id 543E511C094; Fri, 10 Sep 2010 07:37:22 +0000 (UTC)
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset="windows-1252"
From: David Waite <david@alkaline-solutions.com>
In-Reply-To: <90C41DD21FB7C64BB94121FBBC2E72343B3F35BE13@P3PW5EX1MB01.EX1.SECURESERVER.NET>
Date: Fri, 10 Sep 2010 01:37:21 -0600
Content-Transfer-Encoding: quoted-printable
Message-Id: <20D537B5-432F-422D-B415-63276C2970CA@alkaline-solutions.com>
References: <90C41DD21FB7C64BB94121FBBC2E72343B3F35BE13@P3PW5EX1MB01.EX1.SECURESERVER.NET>
To: "OAuth WG (oauth@ietf.org)" <oauth@ietf.org>
X-Mailer: Apple Mail (2.1081)
Subject: Re: [OAUTH-WG] Simpilfying use of assertions when requesting an access token
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: Fri, 10 Sep 2010 07:36:56 -0000

I think combining the grant_type and assertion_type together is a great idea. However, I have recently been wondering if it would be a good idea to unify all the access grants to use the same parameters. 

For instance, you could have the parameters:

	grant_type - the type of access grant (of course)
	grant_qualifier - an identifier or URI associated with the grant
	grant_value - the data (such as an opaque or secret value) used for a particular type of access grant

So for the grant types mentioned below, you would have:

	password:
		a grant_qualifier of the user identifier, and a grant_value of their password

	client_credentials:
		a grant_qualifier of the client identifier, and a grant_value of the shared secret

	refresh_token:
		no grant_qualifier, a grant_value of the refresh token

	authorization_code:
		a grant_qualifier of the callback URI used to return the authorization code to the client, and a grant_value of the actual code

	<SAML assertion extension URI>:
		no grant_qualifier, a grant_value of the assertion as a string

This would seem to have the following benefits:
	- A number of query parameters defined to be used only in cases of a particular grant_type value would be eliminated
	- The qualifier/value would provide a guideline for structuring new grant types
	- The "grant_" prefix for the parameters could provide a logical grouping for any additional parameters, if a new grant type required more than the qualifier/value pair above.

I must admit however, I had difficulty figuring out how to phrase 'qualifier' so that it would apply to a callback URI. I think it makes sense in that an authorization code is issued against and only valid for a specific callback URI, but would understand if this came off feeling like overloading that parameter.

-David Waite

On Sep 2, 2010, at 3:11 PM, Eran Hammer-Lahav wrote:

> I would like to make this change in -11:
>  
> Instead of the current user of the ‘assertion’ grant type –
>  
>   POST /token HTTP/1.1
>   Host: server.example.com
>   Content-Type: application/x-www-form-urlencoded
>  
>   grant_type=assertion&
>   assertion_type=urn%3Aoasis%3Anames%3Atc%3ASAML%3A2.0%3Aassertion&
>   assertion=PHNhbWxwOl[...omitted for brevity...]ZT4%3D
>  
> Drop the ‘assertion’ grant type and put the assertion type directly in the grant_type parameter:
>  
>   POST /token HTTP/1.1
>   Host: server.example.com
>   Content-Type: application/x-www-form-urlencoded
>  
>   grant_type=urn%3Aoasis%3Anames%3Atc%3ASAML%3A2.0%3Aassertion&
>   assertion=PHNhbWxwOl[...omitted for brevity...]ZT4%3D
>  
> In other words, the grant_type parameter value will be defined as:
>  
> -          authorization_code
> -          password
> -          client_credentials
> -          refresh_token
> -          an abolute URI (extensions)
>  
> I considered turning all the values into URIs but found it to be counter-intuitive. The practice of using “official” short names and extension URIs is well established and is already the general architecture used here. This just makes it cleaner.
>  
> I ran this idea by Brian Campbell and Chuck Mortimore who are generally supportive of the idea.
>  
> Any objections?
>  
> EHL
>  
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth