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 _______________________________________________ OAuth mailing list OAuth@ietf.org https://www.ietf.org/mailman/listinfo/oauth