Re: [OAUTH-WG] Proposed note to RFC Editor

2012-07-26 Thread Torsten Lodderstedt
Hi John,

I would expect sending a client_id is a MUST for public clients in the authz 
code grant type. That's not how I read the proposed text for section 3.1.

regards,
Torsten.



John Bradley  schrieb:

The changes introduced in Draft 29 had unintended consequences on parts of the 
spec caused by 

Sec 4.3,  4.4 and 6 referencing Sec 3.2.1 as part of client authentication.


This change restricts the requirement to send client_id to only Sec 4.1.4 for 
clients that are not authenticated per Sec 3.2.1





Section 3.2.1



  A public client that was not issued a client password MUST use the

  "client_id" request parameter to identify itself when sending

  requests to the token endpoint.  This allows the authorization server

  to ensure that the code was issued to the same client.  Sending

  "client_id" prevents the client from inadvertently accepting a code

  intended for a client with a different "client_id".  This protects

  the client from substitution of the authentication code.  (It

  provides no additional security for the protected resource.)



Change  to


  A client MAY use the "client_id" request parameter to identify itself

  when sending requests to the token endpoint.

  In the "authorization_code" grant_type request to the token endpoint,

  an unauthenticated client sends "client_id" to prevent itself from

  inadvertently accepting a code

  intended for a client with a different "client_id".  This protects

  the client from substitution of the authentication code.  (It

  provides no additional security for the protected resource.)



** This allows any client to send client ID and explains the threat to code.



4.1.3.  Access Token Request




Add

  client_id

REQUIRED if the client is NOT authenticating with the

authorization server as described in Section 3.2.1





** This makes client_id only REQUIRED for the code flow if the client is not 
otherwise authenticated.


Change



 ensure the authorization code was issued to the authenticated

 confidential client or to the public client identified by the

 "client_id" in the request,



To:

 ensure the authorization code was issued to the authenticated

 confidential client, or if the client is public, ensure the code was 

 issued to "client_id" in the request,



** That removes the implication of authentication.




___
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


Re: [OAUTH-WG] Proposed note to RFC Editor

2012-07-26 Thread John Bradley
Understood, however at this point major reworking of the token endpoint is 
going to have to wait on the next release of OAuth.

I suspect that there will eventually be a 2.1.

For now this should let us close the book on this 3 year odyssey and address 
some of the other issues like JWT etc.

John B.


On 2012-07-26, at 6:29 PM, Manger, James H wrote:

>>> The changes introduced in Draft 29 had unintended consequences on
>>> parts of the spec caused by Sec 4.3,  4.4 and 6 referencing Sec 3.2.1
>>> as part of client authentication.
> 
>> this change breaks 
>> https://datatracker.ietf.org/doc/draft-ietf-oauth-saml2-bearer/
> and https://datatracker.ietf.org/doc/draft-ietf-oauth-jwt-bearer/
> 
> 
> An underlying cause of this issue is that a single URI (the token endpoint) 
> is overloaded for a dozen different tasks by a bunch of specs — and the list 
> of tasks is still growing.
> 
> OAuth2 has built a RPC-style API, but almost pretends not to have done so by 
> using grant_type names/URIs and a parameter registry instead of a more formal 
> SOAP-style structure.
> 
> John’s proposed note to the RFC editor should address the immediate issue. 
> Perhaps future enhancements, though, could consider a more RESTful approach. 
> I think that would significantly clarify some of the complexities OAuth2 
> grapples with and minimise clashes between the various flows.
> 
> --
> James Manger

___
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


Re: [OAUTH-WG] Proposed note to RFC Editor

2012-07-26 Thread Manger, James H
>> The changes introduced in Draft 29 had unintended consequences on
>> parts of the spec caused by Sec 4.3,  4.4 and 6 referencing Sec 3.2.1
>> as part of client authentication.

> this change breaks 
> https://datatracker.ietf.org/doc/draft-ietf-oauth-saml2-bearer/
and https://datatracker.ietf.org/doc/draft-ietf-oauth-jwt-bearer/


An underlying cause of this issue is that a single URI (the token endpoint) is 
overloaded for a dozen different tasks by a bunch of specs — and the list of 
tasks is still growing.

OAuth2 has built a RPC-style API, but almost pretends not to have done so by 
using grant_type names/URIs and a parameter registry instead of a more formal 
SOAP-style structure.

John’s proposed note to the RFC editor should address the immediate issue. 
Perhaps future enhancements, though, could consider a more RESTful approach. I 
think that would significantly clarify some of the complexities OAuth2 grapples 
with and minimise clashes between the various flows.

--
James Manger
___
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


Re: [OAUTH-WG] Proposed note to RFC Editor

2012-07-26 Thread Nat Sakimura
+1

=nat via iPhone

On 2012/07/27, at 7:36, Dick Hardt  wrote:

> +1
>
> On Jul 26, 2012, at 3:06 PM, Mike Jones wrote:
>
>> +1
>>
>> Given that the current spec inadvertently broke both the SAML profile and 
>> JWT profile, I believe we need to make these changes.
>>
>>-- Mike
>>
>> -Original Message-
>> From: Brian Campbell [mailto:bcampb...@pingidentity.com]
>> Sent: Thursday, July 26, 2012 1:56 PM
>> To: John Bradley
>> Cc: oauth WG; Mike Jones
>> Subject: Re: Proposed note to RFC Editor
>>
>> I agree with the proposed changes and they do adequately address the 
>> concerns I raised in a previous message about the unintended breaking 
>> changes introduced in 29. Thanks for writing that up John.
>>
>> On Thu, Jul 26, 2012 at 2:33 PM, John Bradley  wrote:
>>> The changes introduced in Draft 29 had unintended consequences on
>>> parts of the spec caused by Sec 4.3,  4.4 and 6 referencing Sec 3.2.1
>>> as part of client authentication.
>>>
>>> This change restricts the requirement to send client_id to only Sec
>>> 4.1.4 for clients that are not authenticated per Sec 3.2.1
>>>
>>>
>>>
>>>
>>> Section 3.2.1
>>>
>>>
>>> A public client that was not issued a client password MUST use the
>>> "client_id" request parameter to identify itself when sending
>>> requests to the token endpoint.  This allows the authorization server
>>> to ensure that the code was issued to the same client.  Sending
>>> "client_id" prevents the client from inadvertently accepting a code
>>> intended for a client with a different "client_id".  This protects
>>> the client from substitution of the authentication code.  (It
>>> provides no additional security for the protected resource.)
>>>
>>>
>>> Change  to
>>>
>>> A client MAY use the "client_id" request parameter to identify itself
>>> when sending requests to the token endpoint.
>>> In the "authorization_code" grant_type request to the token endpoint,
>>> an unauthenticated client sends "client_id" to prevent itself from
>>> inadvertently accepting a code
>>> intended for a client with a different "client_id".  This protects
>>> the client from substitution of the authentication code.  (It
>>> provides no additional security for the protected resource.)
>>>
>>>
>>> ** This allows any client to send client ID and explains the threat to code.
>>>
>>>
>>> 4.1.3.  Access Token Request
>>>
>>>
>>>
>>> Add
>>> client_id
>>>   REQUIRED if the client is NOT authenticating with the
>>>   authorization server as described in Section 3.2.1
>>>
>>>
>>>
>>>
>>> ** This makes client_id only REQUIRED for the code flow if the client
>>> is not otherwise authenticated.
>>>
>>> Change
>>>
>>>
>>>ensure the authorization code was issued to the authenticated
>>>confidential client or to the public client identified by the
>>>"client_id" in the request,
>>>
>>>
>>> To:
>>>ensure the authorization code was issued to the authenticated
>>>confidential client, or if the client is public, ensure the code was
>>>issued to "client_id" in the request,
>>>
>>>
>>> ** That removes the implication of authentication.
>>>
>>>
>>>
>>
>>
>> ___
>> 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


Re: [OAUTH-WG] Proposed note to RFC Editor

2012-07-26 Thread Dick Hardt
+1

On Jul 26, 2012, at 3:06 PM, Mike Jones wrote:

> +1
> 
> Given that the current spec inadvertently broke both the SAML profile and JWT 
> profile, I believe we need to make these changes.
> 
>   -- Mike
> 
> -Original Message-
> From: Brian Campbell [mailto:bcampb...@pingidentity.com] 
> Sent: Thursday, July 26, 2012 1:56 PM
> To: John Bradley
> Cc: oauth WG; Mike Jones
> Subject: Re: Proposed note to RFC Editor
> 
> I agree with the proposed changes and they do adequately address the concerns 
> I raised in a previous message about the unintended breaking changes 
> introduced in 29. Thanks for writing that up John.
> 
> On Thu, Jul 26, 2012 at 2:33 PM, John Bradley  wrote:
>> The changes introduced in Draft 29 had unintended consequences on 
>> parts of the spec caused by Sec 4.3,  4.4 and 6 referencing Sec 3.2.1 
>> as part of client authentication.
>> 
>> This change restricts the requirement to send client_id to only Sec 
>> 4.1.4 for clients that are not authenticated per Sec 3.2.1
>> 
>> 
>> 
>> 
>> Section 3.2.1
>> 
>> 
>>  A public client that was not issued a client password MUST use the
>>  "client_id" request parameter to identify itself when sending
>>  requests to the token endpoint.  This allows the authorization server
>>  to ensure that the code was issued to the same client.  Sending
>>  "client_id" prevents the client from inadvertently accepting a code
>>  intended for a client with a different "client_id".  This protects
>>  the client from substitution of the authentication code.  (It
>>  provides no additional security for the protected resource.)
>> 
>> 
>> Change  to
>> 
>>  A client MAY use the "client_id" request parameter to identify itself
>>  when sending requests to the token endpoint.
>>  In the "authorization_code" grant_type request to the token endpoint,
>>  an unauthenticated client sends "client_id" to prevent itself from
>>  inadvertently accepting a code
>>  intended for a client with a different "client_id".  This protects
>>  the client from substitution of the authentication code.  (It
>>  provides no additional security for the protected resource.)
>> 
>> 
>> ** This allows any client to send client ID and explains the threat to code.
>> 
>> 
>> 4.1.3.  Access Token Request
>> 
>> 
>> 
>> Add
>>  client_id
>>REQUIRED if the client is NOT authenticating with the
>>authorization server as described in Section 3.2.1
>> 
>> 
>> 
>> 
>> ** This makes client_id only REQUIRED for the code flow if the client 
>> is not otherwise authenticated.
>> 
>> Change
>> 
>> 
>> ensure the authorization code was issued to the authenticated
>> confidential client or to the public client identified by the
>> "client_id" in the request,
>> 
>> 
>> To:
>> ensure the authorization code was issued to the authenticated
>> confidential client, or if the client is public, ensure the code was
>> issued to "client_id" in the request,
>> 
>> 
>> ** That removes the implication of authentication.
>> 
>> 
>> 
> 
> 
> ___
> 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


Re: [OAUTH-WG] Proposed note to RFC Editor

2012-07-26 Thread Mike Jones
+1

Given that the current spec inadvertently broke both the SAML profile and JWT 
profile, I believe we need to make these changes.

-- Mike

-Original Message-
From: Brian Campbell [mailto:bcampb...@pingidentity.com] 
Sent: Thursday, July 26, 2012 1:56 PM
To: John Bradley
Cc: oauth WG; Mike Jones
Subject: Re: Proposed note to RFC Editor

I agree with the proposed changes and they do adequately address the concerns I 
raised in a previous message about the unintended breaking changes introduced 
in 29. Thanks for writing that up John.

On Thu, Jul 26, 2012 at 2:33 PM, John Bradley  wrote:
> The changes introduced in Draft 29 had unintended consequences on 
> parts of the spec caused by Sec 4.3,  4.4 and 6 referencing Sec 3.2.1 
> as part of client authentication.
>
> This change restricts the requirement to send client_id to only Sec 
> 4.1.4 for clients that are not authenticated per Sec 3.2.1
>
>
>
>
> Section 3.2.1
>
>
>   A public client that was not issued a client password MUST use the
>   "client_id" request parameter to identify itself when sending
>   requests to the token endpoint.  This allows the authorization server
>   to ensure that the code was issued to the same client.  Sending
>   "client_id" prevents the client from inadvertently accepting a code
>   intended for a client with a different "client_id".  This protects
>   the client from substitution of the authentication code.  (It
>   provides no additional security for the protected resource.)
>
>
> Change  to
>
>   A client MAY use the "client_id" request parameter to identify itself
>   when sending requests to the token endpoint.
>   In the "authorization_code" grant_type request to the token endpoint,
>   an unauthenticated client sends "client_id" to prevent itself from
>   inadvertently accepting a code
>   intended for a client with a different "client_id".  This protects
>   the client from substitution of the authentication code.  (It
>   provides no additional security for the protected resource.)
>
>
> ** This allows any client to send client ID and explains the threat to code.
>
>
> 4.1.3.  Access Token Request
>
>
>
> Add
>   client_id
> REQUIRED if the client is NOT authenticating with the
> authorization server as described in Section 3.2.1
>
>
>
>
> ** This makes client_id only REQUIRED for the code flow if the client 
> is not otherwise authenticated.
>
> Change
>
>
>  ensure the authorization code was issued to the authenticated
>  confidential client or to the public client identified by the
>  "client_id" in the request,
>
>
> To:
>  ensure the authorization code was issued to the authenticated
>  confidential client, or if the client is public, ensure the code was
>  issued to "client_id" in the request,
>
>
> ** That removes the implication of authentication.
>
>
>


___
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


Re: [OAUTH-WG] Proposed note to RFC Editor

2012-07-26 Thread Brian Campbell
I agree with the proposed changes and they do adequately address the
concerns I raised in a previous message about the unintended breaking
changes introduced in 29. Thanks for writing that up John.

On Thu, Jul 26, 2012 at 2:33 PM, John Bradley  wrote:
> The changes introduced in Draft 29 had unintended consequences on parts of
> the spec caused by
> Sec 4.3,  4.4 and 6 referencing Sec 3.2.1 as part of client authentication.
>
> This change restricts the requirement to send client_id to only Sec 4.1.4
> for clients that are not authenticated per Sec 3.2.1
>
>
>
>
> Section 3.2.1
>
>
>   A public client that was not issued a client password MUST use the
>   "client_id" request parameter to identify itself when sending
>   requests to the token endpoint.  This allows the authorization server
>   to ensure that the code was issued to the same client.  Sending
>   "client_id" prevents the client from inadvertently accepting a code
>   intended for a client with a different "client_id".  This protects
>   the client from substitution of the authentication code.  (It
>   provides no additional security for the protected resource.)
>
>
> Change  to
>
>   A client MAY use the "client_id" request parameter to identify itself
>   when sending requests to the token endpoint.
>   In the "authorization_code" grant_type request to the token endpoint,
>   an unauthenticated client sends "client_id" to prevent itself from
>   inadvertently accepting a code
>   intended for a client with a different "client_id".  This protects
>   the client from substitution of the authentication code.  (It
>   provides no additional security for the protected resource.)
>
>
> ** This allows any client to send client ID and explains the threat to code.
>
>
> 4.1.3.  Access Token Request
>
>
>
> Add
>   client_id
> REQUIRED if the client is NOT authenticating with the
> authorization server as described in Section 3.2.1
>
>
>
>
> ** This makes client_id only REQUIRED for the code flow if the client is not
> otherwise authenticated.
>
> Change
>
>
>  ensure the authorization code was issued to the authenticated
>  confidential client or to the public client identified by the
>  "client_id" in the request,
>
>
> To:
>  ensure the authorization code was issued to the authenticated
>  confidential client, or if the client is public, ensure the code was
>  issued to "client_id" in the request,
>
>
> ** That removes the implication of authentication.
>
>
>
___
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


[OAUTH-WG] Proposed note to RFC Editor

2012-07-26 Thread John Bradley
The changes introduced in Draft 29 had unintended consequences on parts of the 
spec caused by 
Sec 4.3,  4.4 and 6 referencing Sec 3.2.1 as part of client authentication.

This change restricts the requirement to send client_id to only Sec 4.1.4 for 
clients that are not authenticated per Sec 3.2.1




Section 3.2.1


  A public client that was not issued a client password MUST use the
  "client_id" request parameter to identify itself when sending
  requests to the token endpoint.  This allows the authorization server
  to ensure that the code was issued to the same client.  Sending
  "client_id" prevents the client from inadvertently accepting a code
  intended for a client with a different "client_id".  This protects
  the client from substitution of the authentication code.  (It
  provides no additional security for the protected resource.)


Change  to

  A client MAY use the "client_id" request parameter to identify itself
  when sending requests to the token endpoint.
  In the "authorization_code" grant_type request to the token endpoint,
  an unauthenticated client sends "client_id" to prevent itself from
  inadvertently accepting a code
  intended for a client with a different "client_id".  This protects
  the client from substitution of the authentication code.  (It
  provides no additional security for the protected resource.)


** This allows any client to send client ID and explains the threat to code.


4.1.3.  Access Token Request



Add
  client_id
REQUIRED if the client is NOT authenticating with the
authorization server as described in Section 3.2.1




** This makes client_id only REQUIRED for the code flow if the client is not 
otherwise authenticated.

Change


 ensure the authorization code was issued to the authenticated
 confidential client or to the public client identified by the
 "client_id" in the request,


To:
 ensure the authorization code was issued to the authenticated
 confidential client, or if the client is public, ensure the code was 
 issued to "client_id" in the request,


** That removes the implication of authentication.



___
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


Re: [OAUTH-WG] overreach of the scope of when client_id is required from public clients?

2012-07-26 Thread Mike Jones
I agree that we need to mitigate this unintended side effect of the change.  
Stephen and chairs, I don't know where we are with the RFC editor submission 
process, but if you need to do anything to put a hold on that, it might be a 
good idea.

The fact that this change breaks 
https://datatracker.ietf.org/doc/draft-ietf-oauth-saml2-bearer/
and https://datatracker.ietf.org/doc/draft-ietf-oauth-jwt-bearer/ is pretty 
clear evidence that we can't just let this go.

Thanks for looking into a mitigating change, John.

-- Mike

-Original Message-
From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf Of John 
Bradley
Sent: Thursday, July 26, 2012 9:39 AM
To: Brian Campbell
Cc: oauth
Subject: Re: [OAUTH-WG] overreach of the scope of when client_id is required 
from public clients?

In thinking some more about this.  Affecting grants other than code was 
unintentional, and due to document structure.

I will talk to Brian today and come up with some wording that could go to the 
RFC editor to make that clear.

John B.
On 2012-07-25, at 12:07 PM, Brian Campbell wrote:

> In -29 the quoted text below was introduced to §3.2.1 Client 
> Authentication [1] to protect clients against authorization code 
> substitution. However, the text's placement under 3.2. Token Endpoint 
> [2] and some of the wording suggest that public clients must use 
> client_id on all requests to the token endpoint, regardless of grant 
> type, even though the change was introduced only to mitigate an issue 
> with the authentication code.
> 
> "A public client that was not issued a client password MUST use the
>   "client_id" request parameter to identify itself when sending
>   requests to the token endpoint.  This allows the authorization server
>   to ensure that the code was issued to the same client.  Sending
>   "client_id" prevents the client from inadvertently accepting a code
>   intended for a client with a different "client_id".  This protects
>   the client from substitution of the authentication code.  (It
>   provides no additional security for the protected resource.)"
> 
> Was the change intended to be that broad? I think it goes too far.
> There are cases, like extension grants and even the resource owner 
> credentials grant type, where it's useful to allow requests from 
> unidentified clients.
> 
> Could that text (or the spirit of it) be moved somewhere under the 
> specific sections on the Authorization Code Grant so that it only 
> applies to that grant type?
> 
> 
> A somewhat related issue is the following text from §2.3. Client 
> Authentication
> 
> "the authorization server MUST NOT rely
>   on public client authentication for the purpose of identifying the
>   client."
> 
> which seems to contradict the text from  §3.2.1 above as well as the 
> following from 4.1.3. Access Token Request [3]
> 
> "o  ensure the authorization code was issued to the authenticated
>  confidential client or to the public client identified by the
>  "client_id" in the request,
> 
> Should the text in §2.3 be loosened or somehow qualified so it doesn't 
> read like a contradiction?
> 
> Thanks,
> Brian
> 
> 
> [1] http://tools.ietf.org/html/draft-ietf-oauth-v2-30#section-3.2.1
> [2] http://tools.ietf.org/html/draft-ietf-oauth-v2-30#section-3.2
> [3] http://tools.ietf.org/html/draft-ietf-oauth-v2-30#section-2.3
> [3] http://tools.ietf.org/html/draft-ietf-oauth-v2-30#section-4.1.3
> ___
> 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


Re: [OAUTH-WG] overreach of the scope of when client_id is required from public clients?

2012-07-26 Thread John Bradley
In thinking some more about this.  Affecting grants other than code was 
unintentional, and due to document structure.

I will talk to Brian today and come up with some wording that could go to the 
RFC editor to make that clear.

John B.
On 2012-07-25, at 12:07 PM, Brian Campbell wrote:

> In -29 the quoted text below was introduced to §3.2.1 Client
> Authentication [1] to protect clients against authorization code
> substitution. However, the text's placement under 3.2. Token Endpoint
> [2] and some of the wording suggest that public clients must use
> client_id on all requests to the token endpoint, regardless of grant
> type, even though the change was introduced only to mitigate an issue
> with the authentication code.
> 
> "A public client that was not issued a client password MUST use the
>   "client_id" request parameter to identify itself when sending
>   requests to the token endpoint.  This allows the authorization server
>   to ensure that the code was issued to the same client.  Sending
>   "client_id" prevents the client from inadvertently accepting a code
>   intended for a client with a different "client_id".  This protects
>   the client from substitution of the authentication code.  (It
>   provides no additional security for the protected resource.)"
> 
> Was the change intended to be that broad? I think it goes too far.
> There are cases, like extension grants and even the resource owner
> credentials grant type, where it's useful to allow requests from
> unidentified clients.
> 
> Could that text (or the spirit of it) be moved somewhere under the
> specific sections on the Authorization Code Grant so that it only
> applies to that grant type?
> 
> 
> A somewhat related issue is the following text from §2.3. Client 
> Authentication
> 
> "the authorization server MUST NOT rely
>   on public client authentication for the purpose of identifying the
>   client."
> 
> which seems to contradict the text from  §3.2.1 above as well as the
> following from 4.1.3. Access Token Request [3]
> 
> "o  ensure the authorization code was issued to the authenticated
>  confidential client or to the public client identified by the
>  "client_id" in the request,
> 
> Should the text in §2.3 be loosened or somehow qualified so it doesn't
> read like a contradiction?
> 
> Thanks,
> Brian
> 
> 
> [1] http://tools.ietf.org/html/draft-ietf-oauth-v2-30#section-3.2.1
> [2] http://tools.ietf.org/html/draft-ietf-oauth-v2-30#section-3.2
> [3] http://tools.ietf.org/html/draft-ietf-oauth-v2-30#section-2.3
> [3] http://tools.ietf.org/html/draft-ietf-oauth-v2-30#section-4.1.3
> ___
> 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


Re: [OAUTH-WG] overreach of the scope of when client_id is required from public clients?

2012-07-26 Thread Brian Campbell
Yes, the intent is to allow totally anonymous clients. There are cases
where that is very useful and where user revocation isn't applicable
(i.e. only an access token is issued).

The changes in -29 were introduced to protect clients against
authorization code substitution. Those changes are breaking changes to
the code flow (in some cases) but it was felt that the security
benefits warranted the change even this late in the process. However,
by placing that text in §3.2.1, and having it apply to all requests to
the token endpoint, the change impacts a lot more than just the
authorization code grant and introduces breaking changes to
functionality not subject to the authorization code substitution issue
that the change was made to address.

That inadvertent breaking changes isn't just theoretical either. It
breaks https://datatracker.ietf.org/doc/draft-ietf-oauth-saml2-bearer/
and https://datatracker.ietf.org/doc/draft-ietf-oauth-jwt-bearer/ -
see the example at the end of section 4 of each for requests to the
token endpoint that legitimately have no client identification. The
change also breaks features that have been available in our product
for nearly a year (and presumably other products/services
implementations as well).

I realize it's late in the process to bring this up but the
aforementioned change was also introduced very late and had a broader
impact than what was intended. I'd strongly suggest that the text in
the last paragraph of §3.2.1 be moved (and slightly adjusted for
context) into §4.1.3 right after, or as part of, the paragraph about
client authentication.  And the the last paragraph of §3.2.1 should be
reverted to what it was in -28.

At this stage I don't know how that kind of thing is best handled - an
RFC editor note? But I believe it needs to be taken care of somehow
before publication.

Thanks,
Brian

On Wed, Jul 25, 2012 at 4:21 PM, John Bradley  wrote:
> The client_id of a public client is self asserted in the request to the token 
> endpoint, the authorization server can reject it if it is wrong without 
> relying on it to be correct.
>
> I agree that the word identify in both places seems like a contradiction on 
> the surface.
>
> 4.1.3 could be softened from 'identified by' to 'indicated by'
>
> For your first point, are there public clients without client_id?
>
> If so how would a user revoke access?
>
> One reading of 4.3 step c is that the server must authenticate the client.
>
> If the intent really is to allow totally anonymous clients then I see your 
> point.
>
> Thoughts from others?
>
> John B.
>
> Sent from my iPad
>
> On 2012-07-25, at 12:07 PM, Brian Campbell  wrote:
>
>> In -29 the quoted text below was introduced to §3.2.1 Client
>> Authentication [1] to protect clients against authorization code
>> substitution. However, the text's placement under 3.2. Token Endpoint
>> [2] and some of the wording suggest that public clients must use
>> client_id on all requests to the token endpoint, regardless of grant
>> type, even though the change was introduced only to mitigate an issue
>> with the authentication code.
>>
>> "A public client that was not issued a client password MUST use the
>>   "client_id" request parameter to identify itself when sending
>>   requests to the token endpoint.  This allows the authorization server
>>   to ensure that the code was issued to the same client.  Sending
>>   "client_id" prevents the client from inadvertently accepting a code
>>   intended for a client with a different "client_id".  This protects
>>   the client from substitution of the authentication code.  (It
>>   provides no additional security for the protected resource.)"
>>
>> Was the change intended to be that broad? I think it goes too far.
>> There are cases, like extension grants and even the resource owner
>> credentials grant type, where it's useful to allow requests from
>> unidentified clients.
>>
>> Could that text (or the spirit of it) be moved somewhere under the
>> specific sections on the Authorization Code Grant so that it only
>> applies to that grant type?
>>
>>
>> A somewhat related issue is the following text from §2.3. Client 
>> Authentication
>>
>> "the authorization server MUST NOT rely
>>   on public client authentication for the purpose of identifying the
>>   client."
>>
>> which seems to contradict the text from  §3.2.1 above as well as the
>> following from 4.1.3. Access Token Request [3]
>>
>> "o  ensure the authorization code was issued to the authenticated
>>  confidential client or to the public client identified by the
>>  "client_id" in the request,
>>
>> Should the text in §2.3 be loosened or somehow qualified so it doesn't
>> read like a contradiction?
>>
>> Thanks,
>> Brian
>>
>>
>> [1] http://tools.ietf.org/html/draft-ietf-oauth-v2-30#section-3.2.1
>> [2] http://tools.ietf.org/html/draft-ietf-oauth-v2-30#section-3.2
>> [3] http://tools.ietf.org/html/draft-ietf-oauth-v2-30#section-2.3
>> [3] http://tools.ietf.org/html/draft-ie