+1

Thanks Nat. These are important points.

Phil

Sent from my phone.

On 2013-01-30, at 18:59, Nat Sakimura <sakim...@gmail.com> wrote:

> OAuth did not talk make distinctions or talk about HTTP methods because of 
> two reasons: 
> 
> (1) Browser in the middle with HTTP redirect constraint. 
> (2) The protected resource is the party who decides what semantics is being 
> mapped to the HTTP methods. 
> 
> The (1) above is just a work around for the constrained user agents. 
> 
> Registration is server to server, so we do not need to be constrained by 
> this. 
> 
> The (2) is a requirement to the framework because OAuth should not pollute 
> the space and should let the protected resource decide on their own. 
> 
> Registration endpoint is a protected resource that should decide the mapping. 
>  
> 
> We should not conflate with OAuth core framework requirements and protected 
> resource requirements. 
> 
> Nat
> 
> 2013/1/31 Mike Jones <michael.jo...@microsoft.com>
>> OAuth *never* makes a distinction between what GET and POST do.  (Yes, they 
>> pass the input parameters differently.)  I *really* don’t think we should 
>> start doing this now for new operations.  It will likely only confuse 
>> developers and make things harder for them – especially when using software 
>> that may not always give them full access to all HTTP verbs and header 
>> parameters.
>> 
>>  
>> 
>>                                                                 -- Mike
>> 
>>  
>> 
>> From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf Of 
>> Nat Sakimura
>> Sent: Wednesday, January 30, 2013 6:22 PM
>> To: John Bradley
>> Cc: oauth@ietf.org
>> Subject: [OAUTH-WG] Registration endpoints? (was: Re: Concerning OAuth )
>> 
>>  
>> 
>> (I changed the subject to match the content.) 
>> 
>>  
>> 
>> Right. It does not have to be three endpoints. One endpoint would do (though 
>> it depends on how you count the URLs).  
>> 
>>  
>> 
>> However, I would do it slightly differently than you (John B.) proposes. 
>> 
>>  
>> 
>> As an example, let the registration endpoint be named /clients, which 
>> represents the collection of registered clients. 
>> 
>> (This is the registration endpoint.) 
>> 
>>  
>> 
>> Then, 
>> 
>>  
>> 
>> POST to the /clients would create the resource in question. (client 
>> associate) 
>> 
>> POST to /clients?client_id=12345 and post params (the resource URL) would 
>> update the resource. 
>> 
>> This is not an idempotent request, and could update any portion of the 
>> resource. 
>> 
>> In particular, client_secret=null or something could mean "rotate secret."
>> 
>>  
>> 
>> GET to /clients?client_id=12345 would return the client registration data. 
>> It is idempotent. 
>> 
>> DELETE to /clients?client_id=12345 would delete the resource. 
>> 
>>  
>> 
>> PUT to /clients?client_id=12345 (the resource URL) would replace the 
>> resource, and is idempotent. 
>> 
>>  (I am not sure if we need this. Probably better not have one.) 
>> 
>>  
>> 
>> For any of the above request except DELETE, the response should return the 
>> entire object. 
>> 
>>  
>> 
>> (For the purists: Right. This still could be improved by using URI template. 
>> 
>> The server could publish the server metadata including URI template for the 
>> registration etc. 
>> 
>> At that point, server is freed from forced to use the query parameters. For 
>> example, 
>> 
>> instead of /clients?client_id=12345, it could have instructed the client to 
>> use /clients/12345/ 
>> 
>> or /clients/id/12345 etc. but I think that is going too far.)
>> 
>>  
>> 
>> Nat
>> 
>> 2013/1/31 John Bradley <ve7...@ve7jtb.com>
>> 
>> That is better, but I don't see an advantage to that over using a query 
>> parameter.
>> 
>> They are equally restful or not as the case may be.
>> 
>> To be more restful I think you want a single endpoint using HTTP verbs.
>> 
>> POST /reg_endpoint?paramaters …  -> register
>> PUT  /reg_endpoint?client_id=12345&paramaters -> update
>> PUT /reg_endpoint?client_id=12345&rotate_secret=true
>> 
>> The downside is developers understanding
>> 
>> 
>> On 2013-01-30, at 1:17 PM, Justin Richer <jric...@mitre.org> wrote:
>> 
>> >
>> > On 01/30/2013 10:55 AM, John Bradley wrote:
>> >> My feeling was that letting the registration endpoint be a single URL 
>> >> (any url) and using query paramaters was easer for servers and clients.
>> >>
>> >> Saying take the base URI for the registration endpoint and append these 
>> >> paths to it to do different operations seems more likely to go wrong fro 
>> >> developers.
>> > Right, and to clarify, this isn't what I was saying. The spec wouldn't 
>> > specify the path at all, just say that they're three different endpoint 
>> > URLs. The same way that we specify that the auth endpoint and token 
>> > endpoint are different URLs.
>> >
>> > I think my example might have been misleading. The URLs could just as 
>> > easily be:
>> >
>> > client_register -> /register_a_new_client
>> > rotate_secret -> /client/go_get_a_secret_or_something
>> > client_update-> /maintenance/update_client_information
>> >
>> >
>> >
>> >>
>> >> Allowing both bath and query parameters is the worst option.
>> >>
>> >> I am sympathetic with using POST and PUT and perhaps GET but I worry 
>> >> about OAuth developers not getting it.
>> >>
>> >> I also don't get Tony's point about multi tenancy.  If each tenant can 
>> >> have there own registration endpoint I don't see a problem beyond finding 
>> >> the endpoint and that is what we have WF for.
>> > Exactly. And to Bill's point in another thread, we could also register a 
>> > link type for each endpoint to help facilitate discovery: 
>> > http://tools.ietf.org/html/draft-wmills-oauth-lrdd-06
>> >
>> > -- Justin
>> >
>> >>
>> >> John B.
>> >>
>> >> On 2013-01-24, at 11:26 AM, Justin Richer <jric...@mitre.org> wrote:
>> >>
>> >>> On 01/24/2013 05:56 AM, Sergey Beryozkin wrote:
>> >>>> I like this most, would rename it to say
>> >>>>
>> >>>> /oauth/client/registration
>> >>>> or
>> >>>> /oauth/client-registration
>> >>>>
>> >>>> etc
>> >>>>
>> >>>> and reword the spec such that it will let those who implement do it 
>> >>>> with one endpoint or many, whatever is preferred
>> >>>>
>> >>> That's the whole point of this discussion -- I don't believe you can 
>> >>> have it both ways.
>> >>>
>> >>> In one way, you say there are three endpoints and, if you're keeping 
>> >>> with the rest of OAuth, you don't give them official URL patterns that 
>> >>> they must follow. How the client gets those endpoints is up to discovery 
>> >>> or configuration, but the client has an internal map from each bit of 
>> >>> functionality to a particular URL that's specific to the service, much 
>> >>> in the same way that the client today has to map the authorization and 
>> >>> token endpoints. In the other method, you've got one endpoint that the 
>> >>> client sends a well-defined parameter to in order to accomplish the same 
>> >>> goal.
>> >>>
>> >>> So if you allow both at once, does a client send the "operation" 
>> >>> parameter or not? Is it looking for one url or three to store in its 
>> >>> configuration? I don't think this level of flexibility buys you anything 
>> >>> useful, and I strongly believe that it will deeply hurt the 
>> >>> functionality of dynamic registration if it's allowed.
>> >>>
>> >>> As it stands today, you can still make the URL whatever you want. If we 
>> >>> went with three endpoints you could also make those URLs whatever you 
>> >>> wanted. Nobody has yet pointed out to me what the actual benefit is of 
>> >>> making both valid.
>> >>>
>> >>> I personally prefer the method of three endpoint URLs because it's 
>> >>> cleaner and semantically equivalent, but I am hesitant to change that 
>> >>> behavior unless there's strong working group support for it. I haven't 
>> >>> seen real support for it yet -- it's not a good call to make it fully 
>> >>> RESTful, and it's not a good call to leave it undefined. A client MUST 
>> >>> have a very clear recipe of what to do on startup for this to work in 
>> >>> the wild.
>> >>>
>> >>> -- Justin
>> >>>
>> >>>>>
>> >>>>> help multitenancy? How does it even affect that use case? Consider that
>> >>>>> the base URL for all of these is completely up to the host environment
>> >>>>> (nothing is bound to the root URL). Consider that clients still have to
>> >>>>> know what the URL (or URLs) are, in either case. Consider that clients
>> >>>>> still need to know how to manage all the parameters and responses.
>> >>>>>
>> >>>>> If anything, keeping it the way that it is with a single URL could be
>> >>>>> argued to help multitenancy because setting up routing to multiple URL
>> >>>>> endpoints can sometimes be problematic in hosted environments. However,
>> >>>>> OAuth already defines a bunch of endpoints, and we have to define at
>> >>>>> least one more with this extension, so I'm not convinced that having
>> >>>>> three with specific functions is really any different from having one
>> >>>>> with three functions from a development, deployment, and implementation
>> >>>>> perspective. I can tell you from experience that in our own server 
>> >>>>> code,
>> >>>>> the difference is trivial. (And from OAuth1 experience, you can always
>> >>>>> have a query parameter as part of your endpoint URL if you need to. You
>> >>>>> might hate yourself for doing it that way, but nothing says your base
>> >>>>> URL can't already have parameters on it. A client just needs to know 
>> >>>>> how
>> >>>>> to appropriately tack its parameters onto an existing URL, and any HTTP
>> >>>>> client worth its salt will know how to augment a query parameter set
>> >>>>> with new items.)
>> >>>>>
>> >>>>> The *real* difference between the two approaches is a philosophical
>> >>>>> design one. The former overloads one URL with multiple functions
>> >>>>> switched by a flag, the latter uses the URL itself as an implicit flag.
>> >>>>> Under the hood, these could (and in many cases will) be all served by
>> >>>>> the same chunks of code. The only difference is how this switch in
>> >>>>> functionality is presented.
>> >>>>>
>> >>>>>
>> >>>>> With that said, can somebody please explain to me how allowing *both* 
>> >>>>> of
>> >>>>> these as options simultaneously (what I understand Tony to be
>> >>>>> suggesting) is a good idea, or how multitenancy even comes into play?
>> >>>>> Because I am completely not seeing how these are related.
>> >>>>>
>> >>>>> Thanks,
>> >>>>> -- Justin
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> On 01/23/2013 12:46 PM, Anthony Nadalin wrote:
>> >>>>>> It will not work the way you have it, as people do multi-tendency 
>> >>>>>> different and they are already stuck with the method that they have 
>> >>>>>> chosen, so they need the flexability, to restrict this is nuts as 
>> >>>>>> people won't use it.
>> >>>>>>
>> >>>>>> -----Original Message-----
>> >>>>>> From: Justin Richer [mailto:jric...@mitre.org]
>> >>>>>> Sent: Wednesday, January 23, 2013 9:27 AM
>> >>>>>> To: Anthony Nadalin
>> >>>>>> Cc: Nat Sakimura; Shiu Fun Poon;oauth@ietf.org
>> >>>>>> Subject: Re: [OAUTH-WG] Concerning OAuth introspection
>> >>>>>>
>> >>>>>> I completely disagree with this assessment. Multi-tenancy will work 
>> >>>>>> just fine (or even better) if everyone uses the same pattern. Telling 
>> >>>>>> someone "it might be three different urls or it might be all one url 
>> >>>>>> with a parameter" is just asking for a complete disaster. What does 
>> >>>>>> the flexibility of allowing two approaches actually accomplish?
>> >>>>>>
>> >>>>>> You can argue about the merits of either approach, but having both as 
>> >>>>>> unspecified options for registration, which is meant to help things 
>> >>>>>> get going in a cold-boot environment, is just plain nuts.
>> >>>>>>
>> >>>>>>
>> >>>>>> -- Justin
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> On 01/23/2013 12:21 PM, Anthony Nadalin wrote:
>> >>>>>>> Registration has to work in a multi-tenant environment  so 
>> >>>>>>> flexibility
>> >>>>>>> is needed
>> >>>>>>>
>> >>>>>>> -----Original Message-----
>> >>>>>>> From: Justin Richer [mailto:jric...@mitre.org]
>> >>>>>>> Sent: Wednesday, January 23, 2013 9:18 AM
>> >>>>>>> To: Anthony Nadalin
>> >>>>>>> Cc: Nat Sakimura; Shiu Fun Poon;oauth@ietf.org
>> >>>>>>> Subject: Re: [OAUTH-WG] Concerning OAuth introspection
>> >>>>>>>
>> >>>>>>> Because then nobody would know how to actually use the thing.
>> >>>>>>>
>> >>>>>>> In my opinion, this is a key place where this kind of flexibility is 
>> >>>>>>> a very bad thing. Registration needs to work one fairly predictable 
>> >>>>>>> way.
>> >>>>>>>
>> >>>>>>> -- Justin
>> >>>>>>>
>> >>>>>>> On 01/23/2013 12:14 PM, Anthony Nadalin wrote:
>> >>>>>>>> Why not just have a physical and logical endpoint options
>> >>>>>>>>
>> >>>>>>>> -----Original Message-----
>> >>>>>>>> From:oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On
>> >>>>>>>> Behalf Of Justin Richer
>> >>>>>>>> Sent: Wednesday, January 23, 2013 7:47 AM
>> >>>>>>>> To: Nat Sakimura
>> >>>>>>>> Cc: Shiu Fun Poon;oauth@ietf.org
>> >>>>>>>> Subject: Re: [OAUTH-WG] Concerning OAuth introspection
>> >>>>>>>>
>> >>>>>>>> Which brings up an interesting question for the Registration doc: 
>> >>>>>>>> right now, it's set up as a single endpoint with three operations. 
>> >>>>>>>> We could instead define three endpoints for the different 
>> >>>>>>>> operations.
>> >>>>>>>>
>> >>>>>>>> I've not been keen to make that deep of a cutting change to it, but 
>> >>>>>>>> it would certainly be cleaner and more RESTful API design. What do 
>> >>>>>>>> others think?
>> >>>>>>>>
>> >>>>>>>> -- Justin
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>> On 01/22/2013 08:05 PM, Nat Sakimura wrote:
>> >>>>>>>>> "Action" goes against REST principle.
>> >>>>>>>>> I do not think it is a good idea.
>> >>>>>>>>>
>> >>>>>>>>> =nat via iPhone
>> >>>>>>>>>
>> >>>>>>>>> Jan 23, 2013 4:00、Justin Richer<jric...@mitre.org>  のメッセージ:
>> >>>>>>>>>
>> >>>>>>>>>> (CC'ing the working group)
>> >>>>>>>>>>
>> >>>>>>>>>> I'm not sure what the "action/operation" flag would accomplish. 
>> >>>>>>>>>> The idea behind having different endpoints in OAuth is that they 
>> >>>>>>>>>> each do different kinds of things. The only "action/operation" 
>> >>>>>>>>>> that I had envisioned for the introspection endpoint is 
>> >>>>>>>>>> introspection itself: "I have a token, what does it mean?"
>> >>>>>>>>>>
>> >>>>>>>>>> Note that client_id and client_secret *can* already be used at 
>> >>>>>>>>>> this endpoint if the server supports that as part of their client 
>> >>>>>>>>>> credentials setup. The examples use HTTP Basic with client id and 
>> >>>>>>>>>> secret right now. Basically, the client can authenticate however 
>> >>>>>>>>>> it wants, including any of the methods that OAuth2 allows on the 
>> >>>>>>>>>> token endpoint. It could also authenticate with an access token. 
>> >>>>>>>>>> At least, that's the intent of the introspection draft -- if 
>> >>>>>>>>>> that's unclear, I'd be happy to accept suggested changes to 
>> >>>>>>>>>> clarify this text.
>> >>>>>>>>>>
>> >>>>>>>>>>  -- Justin
>> >>>>>>>>>>
>> >>>>>>>>>> On 01/22/2013 01:00 PM, Shiu Fun Poon wrote:
>> >>>>>>>>>>> Justin,
>> >>>>>>>>>>>
>> >>>>>>>>>>> This spec is looking good..
>> >>>>>>>>>>>
>> >>>>>>>>>>> One thing I would like to recommend is to add 
>> >>>>>>>>>>> "action"/"operation"
>> >>>>>>>>>>> to the request.  (and potentially add client_id and 
>> >>>>>>>>>>> client_secret)
>> >>>>>>>>>>>
>> >>>>>>>>>>> So the request will be like :
>> >>>>>>>>>>> token REQUIRED
>> >>>>>>>>>>> operation (wording to be determine)  OPTIONAL inquire (default) 
>> >>>>>>>>>>> | revoke ...
>> >>>>>>>>>>> resource_id OPTIONAL
>> >>>>>>>>>>> client_id OPTIONAL
>> >>>>>>>>>>> client_secret OPTIONAL
>> >>>>>>>>>>>
>> >>>>>>>>>>> And for the OAuth client information, it should be an optional 
>> >>>>>>>>>>> parameter (in case it is a public client or client is 
>> >>>>>>>>>>> authenticated with SSL mutual authentication).
>> >>>>>>>>>>>
>> >>>>>>>>>>> Please consider.
>> >>>>>>>>>>>
>> >>>>>>>>>>> ShiuFun
>> >>>>>>>>>> _______________________________________________
>> >>>>>>>>>> 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
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>
>> >>>>>
>> >>>>> _______________________________________________
>> >>>>> 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
>> >>> _______________________________________________
>> >>> 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
>> 
>> 
>> 
>> 
>>  
>> 
>> -- 
>> Nat Sakimura (=nat)
>> 
>> Chairman, OpenID Foundation
>> http://nat.sakimura.org/
>> @_nat_en
>> 
> 
> 
> 
> -- 
> Nat Sakimura (=nat)
> Chairman, OpenID Foundation
> http://nat.sakimura.org/
> @_nat_en
> _______________________________________________
> 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

Reply via email to