Re: [OAUTH-WG] Fwd: secdir review of draft-ietf-oauth-v2

2012-01-06 Thread Eran Hammer-Lahav
Simply added to the first paragraph:

   The authorization server MUST support the HTTP Basic authentication 
scheme
   for authenticating clients which were issued a client password.

EHL

 -Original Message-
 From: André DeMarre [mailto:andredema...@gmail.com]
 Sent: Tuesday, September 20, 2011 7:12 PM
 To: Eran Hammer-Lahav; OAuth WG
 Subject: Re: [OAUTH-WG] Fwd: secdir review of draft-ietf-oauth-v2

  If the server issues clients with password credentials it MUST support HTTP
 Basic (this is the flip side of 'the client MAY use HTTP Basic') and should 
 only
 support the client_secret parameter if it has clients incapable of using HTTP
 Basic.

 Very well. Without changing the meaning, I think the community would be
 well served by appending paragraph 2 of Section 2.3 as follows:
 
Confidential clients are typically issued (or establish) a set of
client credentials used for authenticating with the authorization
server (e.g. password, public/private key pair).  If clients are
issued passwords, the authorization server MUST support the HTTP
Basic authentication scheme as defined in [RFC2617] and described
by Section 2.3.1.
 
 This helps to communicate that authorization servers are only required to
 support HTTP Basic if they issue client passwords.

 Andre

 On Tue, Sep 20, 2011 at 3:20 PM, Eran Hammer-Lahav
 e...@hueniverse.com wrote:
  If the server issues clients with password credentials it MUST support HTTP
 Basic (this is the flip side of 'the client MAY use HTTP Basic') and should 
 only
 support the client_secret parameter if it has clients incapable of using HTTP
 Basic.
 
  This language has been tweaked to reach a delicate balance. I'm not
 inclined to touch it.
 
  EHL
 
  -Original Message-
  From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On
  Behalf Of André DeMarre
  Sent: Wednesday, September 14, 2011 5:25 PM
  To: OAuth WG
  Subject: Re: [OAUTH-WG] Fwd: secdir review of draft-ietf-oauth-v2
 
  I agree that stating Clients in possession of a client password MAY
  use the HTTP Basic authentication scheme [Section 2.3.1 paragraph 1]
  implies that authorization servers MUST support HTTP basic
  authentication, but such is never asserted. Instead, it says The
  authorization server MAY accept any form of client authentication
  meeting its security requirements. [Section 2.3 paragraph 1] This is
 somewhat contradictory.
 
  I can understand that requiring a specific method of client
  authentication is desirable for maximum interoperability, but this
  would be problematic for authorization server implementations that
  wish to enforce stronger security than HTTP Basic. Such
  implementations would be forced to deviate from the specification. In
  particular, implementations which choose MAC access tokens instead of
  Bearer tokens may wish to add a layer of security to defend against
  improperly configured TLS connections, or to protect clients who connect
 to the wrong server.
  [http://hueniverse.com/2010/09/oauth-bearer-tokens-are-a-terrible-ide
  a/] Such implementations will also find HTTP Basic undesirable for
  client authentication. To require a form of client authentication
  that isn't universally sufficient could become a source of criticism
  and deter adoption of OAuth 2.0.
 
  I think the best solution is to clarify section 2.3.1 as follows:
  ---
  Clients in possession of client credentials MAY use any form of
  authentication scheme supported by the authorization server.
  ---
  And then follow with the existing example that demonstrates HTTP Basic.
 
  Regards,
  Andre DeMarre
 
  On Tue, Sep 13, 2011 at 4:52 PM, Greg Brail g...@apigee.com wrote:
   I would like to add my support to the comments below on section
   2.3, specifically 2.3.1.
  
   It is clear to me from reading section 2.3 that clients MAY use
   HTTP basic, or they MAY include client_id and client_secret in the
   request body -- however, the latter is not recommended.
  
   It is not clear what the authorization server MUST support. IMHO,
   that leads us to a situation in which there is no
   universally-agreed set of authentication technology that all
   programmers can assume is going to work, which means that
   interoperability will be difficult as some authorization servers
   will support Basic, others will support the request body, and others will
 do neither in favor of something else.
  
   I would prefer that we make both HTTP basic AND the request body
   mechanisms in this section both required on the server side, thus
   giving the client the option of choosing one or the other. That
   would mean re-writing the beginning of section 2.3.1 as shown below.
  
   If I have missed other discussion on this topic I apologize. If
   there is already consensus to make the message body
   authentication optional rather than required for the authorization
   SERVER then I would still recommend that we make HTTP Basic

Re: [OAUTH-WG] secdir review of draft-ietf-oauth-v2

2012-01-06 Thread Eran Hammer-Lahav
 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Eran Hammer-Lahav
 Sent: Tuesday, September 20, 2011 3:13 PM

  3.1.1 Response Type
 
  The response_type parameter is REQURED but its absence SHOULD result
  in an error. Why not MUST?

Changes to MUST.

  3.1.2.4 Invalid Endpoint
 
  The authorization server SHOULD NOT redirect Why isn't this a
  MUST NOT?
 
 I'm ok with MUST NOT - any objections?

This one is actually tricky. I don't like the current text (mine) because 
untrusted is a useless qualifier here. The point is that redirecting to 
unregistered endpoints can lead to the abuse of the endpoint as an open 
redirector. Because we actually support unregistered callbacks, we can't say 
MUST NOT. I am removing the 'untrusted' part but leaving the SHOULD NOT as is.

EHL

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


Re: [OAUTH-WG] secdir review of draft-ietf-oauth-v2

2012-01-06 Thread Eran Hammer-Lahav
I have not seen any follow up to the open issues and will be closing them on my 
editor's list. This doesn't mean they are closed, just that I will not be 
addressing them without someone raising them again on the list. Since none of 
them are in the tracker, this email is the only record I know of listing them 
(and their status/response).

EHL

 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Eran Hammer-Lahav
 Sent: Tuesday, September 20, 2011 3:13 PM
 To: Leif Johansson; OAuth WG
 Subject: Re: [OAUTH-WG] secdir review of draft-ietf-oauth-v2

 (+OAuth WG, -everyone else)

 Thanks Leif.

 See comments inline. Whatever issues are still open will be addressed along
 with the rest of the IETF LC feedback.

 EHL


  -Original Message-
  From: Leif Johansson [mailto:le...@sunet.se]
  Sent: Monday, September 12, 2011 11:31 AM

  ** General observations:
 
  POST and/or GET
 
  Examples are sometimes POST and sometimes GET. In many cases it is not
  clear to me from the surrounding text if both POST and GET are allowed
  or if only one is mandated. Illustrating with both a GET _and_ POST
  example in the cases where both are supported would help or make the
  method explicit in the text before the example.
 
  The P-word
 
  The term 'password' is sprinkled throughout the document, sometimes as
  in client password or resource owner password credentials and I
  suspect that sometimes it is password as in 'an example of a
  credential type' and in other cases it is password as in 'plain old
  password'. This needs to be cleared up throughout (I've included some
 examples below).
 
  Normative Language
 
  I've often found myself wanting more normative language often to
  replace existing but less precise text. I've called out some important cases
 below.
 
  Unknown parameters
 
  The sentence The client SHOULD ignore unrecognized response
  parameters
  occurs in several places. First of all I would argue that this has to
  be a MUST if you want to be able to guarantee extensibility. Secondly
  there are some error responses that are triggered by unsupported
  request parameters. This seems like an inconsistency.
 
  ** Specifics
 
  1.1 Roles
 
  Forward references to the sections where the roles are defined would
  improve readability.

 What sections? That's the only place these roles are defined.

  As an illustration of an alternative model for the authorization
  server maybe an informative reference to UMA would be illustrative here.

 A reference to UMA would be confusing in this document.

  1.2 Protocol Flow
 
  (A) talks about 'an intermediary such as an authorization server.' it
  isn't clear it me if this refers to a separate authorization server or
  if it is the same authorization server that is referenced in (B).

 Changed to:

   (A) The client requests authorization from the resource owner. 
 The
 authorization request
   can be made directly to the resource owner (as shown), or 
 preferably
 indirectly via
   the authorization server as an intermediary.

  1.3.3 Resource Owner Password Credentials
 
  When I first read this I thought - why not talk about Resource Owner
  Credentials - in fact there is a parenthesis there (e.g a username
  and password) that seems to indicate that other credentials could be
 supported.
 
  This needs to be cleared up. Either its username and password and
  nothing else or there is a way to support things like Negotiate or
  X.509-based credentials in which case it should really be Resource
  Owner Credentials with no reference to passwords other than as as an
  example of one possible credential type.

 Changed to:

 (i.e. username and password)

 This is explicitly just for username and password. Other types require an
 extension.

  1.4 Access Token
 
  first paragraph: The string is usually opaque. This should be
  reformulated as normative language. In fact I would have liked
  guidance on generating those tokens (which has been brought up on the
  list) possibly as part of an implementation-guide.

 There is not requirement for the string to be opaque, but the general
 architecture assumes it is. Otherwise, please suggest language.

  1.5 Refresh Token
 
  Why is the refresh token not simply treated as an access token for the
  access token resource in the authorization server? This would seem to
  simplify the model a bit by removing a type of token whose semantic
  (at least to this
  reviewer) is a duplication of a normal access token for a particular
  type of resource.

 Simpler architecture but probably more confusing to many developers.

  Also in the first paragraph: (access tokens may have a shorter
  lifetime and fewer permissions. Why not try to write normative
  language here - there are security implications of allowing a refresh
  token to get more permissions
  (say) than the original access token.

 This was discussed before and we

[OAUTH-WG] FW: draft-ietf-oauth-v2: Doubt about chapter 4.2

2012-01-06 Thread Eran Hammer-Lahav
Sending to the right place.

EHL


From: DIEGO GONZALEZ MARTINEZ [mailto:die...@tid.es]
Sent: Friday, October 07, 2011 1:35 AM
To: draft-ietf-oauth...@tools.ietf.org
Subject: draft-ietf-oauth-v2: Doubt about chapter 4.2

Hello,
My name is Diego González, I work in Telefónica RD and I'm following OAuth 2.0 
works as we're using OAuth in Telefónica's APIs exposure programs (e.g.: 
BlueVia). I as well participate in OMA activities for using OAuth to access OMA 
standard APIs.
I'm Reading through OAuth 2.0 draft and I have a doubt.

In chapter 4.2.1 for Implicit Grant I can see the following example:
GET /authorize?response_type=tokenclient_id=s6BhdRkqt3state=xyz
redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb HTTP/1.1
Host: server.example.com

Then in chapter 4.2.2 I see the following example:

HTTP/1.1 302 Found

 Location: http://example.com/rd#access_token=2YotnFZFEjr1zCsicMWpAA

   state=xyztoken_type=exampleexpires_in=3600


The first I thought is that this is just a misalignment within examples and 
second example should look like https://client.example.com/cb. Is it?

But then I got the following doubt. Would it make sense for every Client to be 
redirected to a known web hosted by the resource provider? I mean a set of 
clients trying to gain access to a Resource, and being always redirected to the 
same web-hosted resource offered by resource provider, not to the web-client 
hosted resource.
E.g.: redirect every client using Implicit Grant to 
https://server.com/accessTokenScriptisHereforEveryOne, no matter what the 
redirect_uri was.
Do you think this make sense? Or there are some security problems I am not 
taking into account.

Kind regards,
Diego



Diego González Martínez
Telefónica Investigación y Desarrollo
Iniciativa NeoSDP
e-mail: die...@tid.esmailto:die...@tid.es
Phone: +34 983 36 75 97



Este mensaje se dirige exclusivamente a su destinatario. Puede consultar 
nuestra política de envío y recepción de correo electrónico en el enlace 
situado más abajo.
This message is intended exclusively for its addressee. We only send and 
receive email on the basis of the terms set out at.
http://www.tid.es/ES/PAGINAS/disclaimer.aspx
___
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


Re: [OAUTH-WG] Using OAuth error_code to glean information from the server

2011-12-12 Thread Eran Hammer-Lahav
'Client credentials' needs to be removed from invalid_grant. It is not 
appropriate.

Use invalid_client all the way to a fully authenticate client. ANY failure to 
authenticate the client should result in invalid_client.

Use unauthorized_client for an authenticate client which is not permitted to 
use this grant type. There are no other issues with an invalid grant related to 
client credentials.

I'll drop it from the e.g. list.

EHL



From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf Of Mike 
Jones
Sent: Monday, December 12, 2011 4:52 PM
To: oauth@ietf.org
Subject: [OAUTH-WG] Using OAuth error_code to glean information from the server

I recently received an inquiry regarding invalid_client vs. invalid_grant.  It 
seems that there is a potential information disclosure in the specification 
with respect to how these error codes are used:

invalid_client
   Client authentication failed (e.g. unknown client, no
   client authentication included, or unsupported
   authentication method).  The authorization server MAY
   return an HTTP 401 (Unauthorized) status code to indicate
   which HTTP authentication schemes are supported.  If the
   client attempted to authenticate via the Authorization
   request header field, the authorization server MUST
   respond with an HTTP 401 (Unauthorized) status code, and
   include the WWW-Authenticate response header field
   matching the authentication scheme used by the client.

invalid_grant

   The provided authorization grant (e.g. authorization

   code, resource owner credentials, client credentials) is

   invalid, expired, revoked, does not match the redirection

   URI used in the authorization request, or was issued to

   another client.

If one uses invalid_client when the client is unknown and invalid_grant when 
the client credentials are invalid, then an attacker could deduce whether or 
not a particular client exists.

First, do people agree that this is a potential information leak and that the 
leak is meaningful?  If so, what mitigation might be suggested?  For instance, 
might a server choose to use a single error code for both (and potentially 
other) cases?

Thanks,
-- Mike

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


Re: [OAUTH-WG] Mandatory to Implement Interoperability

2011-12-09 Thread Eran Hammer-Lahav
I can work with Berry's text.

Another alternative is to:

* Require the server to implement at least one of Bearer and MAC, or provide 
the client with a method for discovering or requesting a specific token type 
(which is beyond the scope).

This way, until there is a discovery method, each server must support at least 
one of these two (which is not an unreasonable requirement given that these two 
cover all the use cases the community has come up with in 5 years). Clients 
that want to ensure interoperability then, must understand both, but the 
requirement isn't on the client. In practice, this will keep every existing 
implementation already in compliance, and will offer clients a guaranteed path 
to interop is the client so chooses.

The advantage of this approach is that it can be expressed with one sentence 
and it should not offend those objecting to MTI MAC tokens.

EHL


 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Stephen Farrell
 Sent: Friday, December 09, 2011 4:36 AM
 To: Hannes Tschofenig
 Cc: oauth@ietf.org WG
 Subject: Re: [OAUTH-WG] Mandatory to Implement  Interoperability
 
 
 Hannes,
 
 I don't see any proposed text here, I see re-chartering suggestions. The
 latter is not going to happen if the current main documents are wedged.
 Please focus on the former now.
 
 You know that I disagree with you and a number of WG participants about
 this, so no need for me to repeat myself, other than to say that I've always
 said pick an MTI, *or* say (convincingly) what that's not needed
 and you've not addressed the latter. Barry's text did do that.
 
 The fact that a) the room in Taipei seemed to agree with MTI, b) the list
 seemed to agree with Barry's suggested text, and c) this new suggested
 programme also gets a bunch of +1's all seems to me to imply that people are
 not sufficiently focused on getting this finished but would still prefer to 
 get
 what they think of as perfection.
 
 S.
 
 PS: I would also quibble that the lessons from keyprov are highly relevant
 here, but let's not:-)
 
 On 12/08/2011 09:15 PM, Alexey Melnikov wrote:
  On 08/12/2011 14:18, Hannes Tschofenig wrote:
  Hi all,
  Hi Hannes,
  Some random thoughts about your message below:
  I read through this rather long mail thread again and see whether we
  are reaching any conclusion on this discussion.
  In turns out that there are actually two types of discussions that
  relate to each other, namely the TLS version support and the token type.
 
  Let me go back in time a little bit when I was still chairing another
  working group (years ago), namely the KEYPROV working group. There we
  ran into a similar issue, which looked fairly simple at the beginning.
  We worked on Portable Symmetric Key Container (PSKC), later published
  as RFC 6030. We were at the stage where we thought we had to decide
  on a mandatory-to-implement cryptographic algorithm and, similar to
  the OAuth case, PSKC is one building block in a larger protocol
  suite. As you can imagine, everyone had their own deployment
  environment in mind and did not like the suggestion others made about
  what as mandatory to implement.
 
  Russ (now IETF chair and at that time security area director) told
  the group not to worry - we don't need to pick an algorithm. He
  suggested to just provide a recommendation of what is best in a
  specific deployment environment (at the time of writing). In fact, he
  proposed to publish a separate document instead to discussing it in that
 document.
 
  I was surprised because I was couldn't see how one would accomplish
  interoperability. Russ told me that this is in practice not a problem
  because implementations often implement a range of cryptographic
  algorithms anyway. Then, as part of the algorithm negotiation
  procedure (or some discovery) they will figure out what both end
  points support. He further argued that algorithm preferences will
  change (as algorithms get old) and we don't want to update our
  specifications all the time. (This was a bit motivated by the MD5
  clean-up that happened at that time.) [Please forgive me if I do not
  recall the exact words he said many years ago.]
 
  I believe we are having a similar discussion here as well, both with
  the token type but also with the TLS version. We look at individual
  specifications because we are used to add security consideration
  sections to each and every document. Unfortunately, the most useful
  statements about security (for these multi-party protocols where the
  functionality is spread over multiple documents) can really only be
  made at a higher level. Our approach for describing security threats
  and for recommending countermeasures isn't suitable to all the
  documents we produce.
 
  Let me list a few desirable results of our standardization work:
 
  1) Everyone wants interoperability. We can do interop testing of
  building blocks to see whether a client and a 

Re: [OAUTH-WG] Mandatory-to-implement token type

2011-12-04 Thread Eran Hammer-Lahav
Bearer tokens are practically identical to OAuth 1.0 PLAINTEXT. Get your facts 
right.

 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Anthony Nadalin
 Sent: Sunday, December 04, 2011 1:37 AM
 To: Mike Jones; Barry Leiba; Stephen Farrell
 Cc: oauth WG
 Subject: Re: [OAUTH-WG] Mandatory-to-implement token type
 
 I agree we have no plans to implement MAC if we wanted that we would
 have been happy with OAUTH 1.0a but that was not deployable
 
 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Mike Jones
 Sent: Saturday, December 03, 2011 6:26 PM
 To: Barry Leiba; Stephen Farrell
 Cc: oauth WG
 Subject: Re: [OAUTH-WG] Mandatory-to-implement token type
 
 I strongly object to a mandatory-to-implement clause for the MAC scheme.
 They are unnecessary and market forces have shown that implementers do
 not want or need this kind of an authentication scheme.
 
   -- Mike
 
 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Barry Leiba
 Sent: Saturday, December 03, 2011 1:38 PM
 To: Stephen Farrell
 Cc: oauth WG
 Subject: Re: [OAUTH-WG] Mandatory-to-implement token type
 
 Stephen says:
  On 12/02/2011 03:20 AM, Barry Leiba wrote:
  Maybe what would work best is some text that suggests what I say
  above: that toolkits intended for use in implementing OAuth services
  in general... implement [X and/or Y], and that code written for a
  specific environment implement what makes sense for that environment.
  It seems to me that to require any particular implementation in the
  latter case is arbitrary and counter-productive, and doesn't help
  anything interoperate.  Whereas general-purpose toolkits that
  implement everything DO help interop.
 
  That'd work just fine for me.
 
 OK, so here's what I suggest... I propose adding a new section 7.2, thus:
 
 ---
 7.2 Access Token Implementation Considerations
 
 Access token types have to be mutually understood among the authorization
 server, the resource server, and the client -- the access token issues the
 token, the resource server validates it, and the client is required to
 understand the type, as noted in section 7.1, above.  Because of that,
 interoperability of program code developed separately depends upon the
 token types that are supported in the code.
 
 Toolkits that are intended for general use (for building other clients and/or
 servers), therefore, SHOULD implement as many token types as practical, to
 ensure that programs developed with those toolkits are able to use the
 token types they need.  In particular, all general-use toolkits MUST
 implement bearer tokens [...ref...] and MAC tokens [...ref...].
 
 Purpose-built code, built without such toolkits, has somewhat more
 flexibility, as its developers know the specific environment they're
 developing for.  There's clearly little point to including code to support a
 particular token type when it's known in advance that the type in question
 will never be used in the intended deployment.
 Developers of purpose-built code are encouraged to consider future
 extensions and to plan ahead for changes in circumstances, and might still
 want to include support for multiple token types.  That said, the choice of
 token-type support for such purpose-built code is left to the developers and
 their specific requirements.
 ---
 
 I think that expresses a reasonable compromise that might actually be
 followed and might actually do some good.  Comments?  Can we go with this
 and close this issue?  (And, sorry, I've been a Bad Chair, and haven't put 
 this
 in the tracker.)
 
 Barry
 ___
 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


Re: [OAUTH-WG] TR: [oauth] #27: Incorporate bearer scope character restrictions into the base spec

2011-12-02 Thread Eran Hammer-Lahav
It has to be.

 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of MARCON, JEROME (JEROME)
 Sent: Friday, December 02, 2011 5:47 AM
 To: oauth@ietf.org
 Subject: [OAUTH-WG] TR: [oauth] #27: Incorporate bearer scope character
 restrictions into the base spec
 
 Hello everyone,
 
 Does someone know if ticket#27 (Incorporate bearer scope character
 restrictions into the base spec) is still planned to be resolved ?
 
 Many thanks,
 Jerome Marcon
 
 -Message d'origine-
 De : oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] De la part de
 oauth issue tracker Envoyé : jeudi 20 octobre 2011 06:31 À :
 barryle...@computer.org Cc : oauth@ietf.org Objet : [OAUTH-WG] [oauth]
 #27: Incorporate bearer scope character restrictions into the base spec
 
 #27: Incorporate bearer scope character restrictions into the base spec
 
  This is part of the resolution of issue #26, as discussed on the mailing
  list:
 
  Can you please open an issue for the core spec to incorporate the scope
 character restrictions from the bearer spec into the core spec?  These
 restrictions are:
 
 scope   = scope =  scope-val *( SP scope-val ) 
 scope-val   = 1*scope-val-char
 scope-val-char  = %x21 / %x23-5B / %x5D-7E
 
 --
 +
  Reporter:  barryleiba@.|  Owner:
  Type:  task| Status:  new
  Priority:  minor   |  Milestone:  Deliver OAuth 2.0 spec
 Component:  v2  |Version:
  Severity:  Active WG Document  |   Keywords:
 +
 
 Ticket URL: http://trac.tools.ietf.org/wg/oauth/trac/ticket/27
 oauth http://tools.ietf.org/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


Re: [OAUTH-WG] 2 Leg with OAuth 2.0

2011-11-29 Thread Eran Hammer-Lahav
This functionality can be implemented in two main ways:


1.   Using the client credentials flow to get an access token, then using 
the protocol as usual

2.   Just using the Bearer (over SSL) or MAC token schemes without the rest 
of OAuth

EHL

From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf Of Brian 
Hawkins
Sent: Tuesday, November 29, 2011 11:49 AM
To: oauth@ietf.org
Subject: [OAUTH-WG] 2 Leg with OAuth 2.0

I'm having trouble finding information on how to do 2leg authentication with 
OAuth 2.0.  Does it even support it?

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


Re: [OAUTH-WG] 2 Leg with OAuth 2.0

2011-11-29 Thread Eran Hammer-Lahav
Both MAC and Bearer work in this setup, just think of them as HMAC-SHA-1 and 
PLAINTEXT in OAuth 1.0. In Bearer, your token is the client secret and in MAC, 
the client secret is the key.

EHL

From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf Of Brian 
Hawkins
Sent: Tuesday, November 29, 2011 12:28 PM
To: oauth@ietf.org
Subject: Re: [OAUTH-WG] 2 Leg with OAuth 2.0

Maybe I'm making this harder then it should be.

Here is the situation:  Site A and B both trust each other.  Site A needs to 
update user information at site B.

With OAuth 1.0 Site A would use it's consumer key and secret to sign the update 
call to Site B (no access token involved).  Only one message is sent.

The closest I can come to the above with OAuth 2.0 is to use the MAC token 
scheme and sign the request with the consumer secret.  Is that valid?  I kind 
of get the idea that the protocol doesn't care.

It feels like the bearer scheme just doesn't work for what I'm trying to do.

Thanks

Brian
On Tue, Nov 29, 2011 at 1:06 PM, Eran Hammer-Lahav 
e...@hueniverse.commailto:e...@hueniverse.com wrote:
This functionality can be implemented in two main ways:


1.   Using the client credentials flow to get an access token, then using 
the protocol as usual

2.   Just using the Bearer (over SSL) or MAC token schemes without the rest 
of OAuth

EHL

From: oauth-boun...@ietf.orgmailto:oauth-boun...@ietf.org 
[mailto:oauth-boun...@ietf.orgmailto:oauth-boun...@ietf.org] On Behalf Of 
Brian Hawkins
Sent: Tuesday, November 29, 2011 11:49 AM
To: oauth@ietf.orgmailto:oauth@ietf.org
Subject: [OAUTH-WG] 2 Leg with OAuth 2.0

I'm having trouble finding information on how to do 2leg authentication with 
OAuth 2.0.  Does it even support it?

Thanks
Brian

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


Re: [OAUTH-WG] MAC: body-hash

2011-11-24 Thread Eran Hammer-Lahav
That like trying to eat the cake and have it too.

We dropped the body-hash parameter because it doesn't work. There are too many 
complications in getting an interop solution across platforms and body types. 
There are ASCII, UTF8, binary, etc. bodies and they will all produce different 
hash value based on at what level the client hashes them. In addition, the HTTP 
layer can do many things to the data including encoding. On top of that, you 
have HTTP headers that change the meaning of the payload.

We've tried it and could not come up with any reasonable solution.

As someone who have and wants to implement this, I understand the need for it, 
but at this point within the limitations of HTTP, this belongs as a vendor 
specific extension until more real-world experience is gained.

EHL


 -Original Message-
 From: Peter Wolanin [mailto:peter.wola...@acquia.com]
 Sent: Thursday, November 24, 2011 5:03 AM
 To: Eran Hammer-Lahav
 Cc: OAuth WG
 Subject: Re: [OAUTH-WG] MAC: body-hash
 
 I'd lobby for something more than just prose, since for me, including the
 body or body hash in the HMAC is a pretty essential piece of security for any
 real implementation.  I understand that you think it should not be 100%
 required by all servers, and hence should not be a specified field, but then I
 think it should be something like a standard extension.
 
 For example, retain some of the existing text describing the bodyhash as
 using the same algorithm as the HMAC and show an example like:
 
 ext=bodyhash:k9kbtCIy0CkI3/FEfpS/oIDjk6k=
 
 Are there any other specific things you see as common examples of ext
 values?  Is there a suggested system for indicating or separating multiple ext
 values?
 
 It seems to me without a standardized way to include the body hash in the
 ext field, you immediately invite more diversity in implementations.  It would
 also seem by putting it in the ext field, any client could include the hash 
 even
 if the server doesn't require it?
 
 Best,
 
 Peter
 
 On Thu, Nov 24, 2011 at 12:21 AM, Eran Hammer-Lahav
 e...@hueniverse.com wrote:
  In prose, sure. But I'd rather not go further than that.
 
  EHL
 
  -Original Message-
  From: Peter Wolanin [mailto:peter.wola...@acquia.com]
  Sent: Wednesday, November 23, 2011 11:53 AM
  To: Eran Hammer-Lahav
  Cc: OAuth WG
  Subject: Re: [OAUTH-WG] MAC: body-hash
 
  As long as a specific service can make an ext containing the body
  hash required, I think this is fine.  Can the spec include body hash
  as an example of an ext?
 
  Thanks,
 
  Peter
 
  On Sat, Nov 19, 2011 at 10:39 AM, Eran Hammer-Lahav
  e...@hueniverse.com wrote:
   I want to reaffirm our previous consensus to drop the body-hash
   parameter and leave the ext parameter. Body-hash as currently
   specified is going to cause significant interop issues due to
   character (and other) encoding issues. Providers who desire to MAC
   the body can define their own ext use case.
  
  
  
   Let me know if you have an objection to this change.
  
  
  
   EHL
  
  
   ___
   OAuth mailing list
   OAuth@ietf.org
   https://www.ietf.org/mailman/listinfo/oauth
  
 
 
 
  --
  Peter M. Wolanin, Ph.D.      : Momentum Specialist,  Acquia. Inc.
  peter.wola...@acquia.com : 781-313-8322
 
  Get a free, hosted Drupal 7 site: http://www.drupalgardens.com;
 
 
 
 --
 Peter M. Wolanin, Ph.D.      : Momentum Specialist,  Acquia. Inc.
 peter.wola...@acquia.com : 781-313-8322
 
 Get a free, hosted Drupal 7 site: http://www.drupalgardens.com;
___
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


Re: [OAUTH-WG] MAC Cookies

2011-11-24 Thread Eran Hammer-Lahav
MAC tokens are a solution, not a use case :-)

As for reaching out, I'll leave it to the chairs to decide how to want to 
proceed.

EHL


 -Original Message-
 From: Phil Hunt [mailto:phil.h...@oracle.com]
 Sent: Wednesday, November 23, 2011 11:36 PM
 To: Peter Wolanin
 Cc: Eran Hammer-Lahav; Ben Adida; OAuth WG; Adam Barth
 (a...@adambarth.com)
 Subject: Re: [OAUTH-WG] MAC Cookies
 
 Eran,
 
 I see value (at least for servers) in having browser and HTTP clients work 
 with
 common tokens (e.g. MAC) - even though the mechanism for exchange may
 vary.
 
 I had an email exchange with Harry Halpin. He suggests cross posting to the
 w3c public-identity list.
 
 They are discussing web cryptography and MAC tokens may be an important
 use case.
 
 Phil
 
 @independentid
 www.independentid.com
 phil.h...@oracle.com
 
 
 
 
 
 On 2011-11-23, at 4:57 PM, Peter Wolanin wrote:
 
  No objection from me, but it's too bad the browser vendors aren't
 interested.
 
  -Peter
 
  On Sat, Nov 19, 2011 at 10:33 AM, Eran Hammer-Lahav
 e...@hueniverse.com wrote:
  I would like to drop the cookies support defined in the MAC document
  due to lack of interest from the browser vendors. At this point it is
  most likely going to be an unimplemented proposal. If there is
  interest in the future, it can be proposed in a separate document.
  This will allow us to bring this work to a quick conclusion.
 
 
 
  Any objections?
 
 
 
  EHL
 
 
  ___
  OAuth mailing list
  OAuth@ietf.org
  https://www.ietf.org/mailman/listinfo/oauth
 
 
 
 
  --
  Peter M. Wolanin, Ph.D.  : Momentum Specialist,  Acquia. Inc.
  peter.wola...@acquia.com : 781-313-8322
 
  Get a free, hosted Drupal 7 site: http://www.drupalgardens.com;
  ___
  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-WG] FW: [apps-discuss] APPS Area review of draft-ietf-oauth-v2-bearer-14

2011-11-23 Thread Eran Hammer-Lahav


-Original Message-
From: apps-discuss-boun...@ietf.org [mailto:apps-discuss-boun...@ietf.org] On 
Behalf Of Mark Nottingham
Sent: Wednesday, November 23, 2011 10:22 PM
To: IETF Apps Discuss; draft-ietf-oauth-v2-bearer@ietf.org
Cc: The IESG
Subject: [apps-discuss] APPS Area review of draft-ietf-oauth-v2-bearer-14

I have been selected as the Applications Area Review Team reviewer for this 
draft (for background on apps-review, please see 
http://www.apps.ietf.org/content/applications-area-review-team).

Please resolve these comments along with any other Last Call comments you may 
receive. Please wait for direction from your document shepherd or AD before 
posting a new version of the draft.

Document: draft-ietf-oauth-v2-bearer-14
Title: OAuth 2.0 Bearer Tokens
Reviewer: Mark Nottingham
Review Date: 24/11/2011

Summary: This draft is almost ready for publication as a Proposed Standard, but 
has a few issues that should be fixed.

Major Issues


* Section 2.3 URI Query Parameter

This section effectively reserves a URI query parameter for the draft's use. 
This should not be done lightly, since this would be a precedent for the IETF 
encroaching upon a server's URIs (done previously in RFC5785, but in a much 
more limited fashion, as a tactic to prevent further, uncontrolled 
encroachment).

Given that the draft already discourages the use of this mechanism, I'd 
recommend dropping it altogether. If the Working Group wishes it to remain, 
this issues should be vetted both through the APPS area and the W3C liaison.

(The same criticism could be leveled at Section 2.2 Form-Encoded Body 
Parameter, but that at least isn't surfaced in an identifier)

* Section 3 The WWW-Authenticate Response Header Field

The draft references the quoted-string ABNF from HTTP, but changes its 
processing in a later paragraph:

In all these cases, no character quoting will occur, as senders are 
prohibited from using the %5C ('\') character.

This is at best surprising (as many readers will reasonably surmise that using 
the quoted-string ABNF implies that the same code can be used). Please either 
use quoted-string as defined (i.e., with escaping).


Minor Issues


* Section 1: Introduction

The introduction explains oauth, but it doesn't fully explain the relationship 
of this specification to OAuth 2.0. E.g., can it be used independently from the 
rest of OAuth? Likewise, the overview (section 1.3) seems more specific to the 
OAuth specification than this document. As I read it, this mechanism could be 
used for ANY bearer token, not just one generated through OAuth flows. 

If it is indeed more general, I'd recommend minimising the discussion of OAuth, 
perhaps even removing it from the document title.

* Section 3 The WWW-Authenticate Response Header Field

The difference between a realm and a scope is not explained. Are the 
functionally equivalent, just a single value vs. a list? 

Do you really intend to disallow *all* extension parameters on the challenge?

Also, the scope, error, error_description and error_uri parameters all specify 
only a quoted-string serialisation. HTTPbis strongly suggests that new schemes 
allow both forms, because implementation experience has shown that 
implementations will likely support both, no matter how defined; this improves 
interoperability (see p7 2.3.1). 

Finally, the error_description parameter can carry only ASCII characters. While 
I understand a tradeoff has been made here (and, in my judgement, an 
appropriate one), it's appropriate to highlight this in review.

* General

The draft currently doesn't mention whether Bearer is suitable for use as a 
proxy authentication scheme. I suspect it *may*; it would be worth discussing 
this with some proxy implementers to gauge their interest (e.g., Squid). 


Nits


* Section 2.1 Authorization Request Header Field

simplicity reasons -- simplicity

If additional parameters are desired in the future, a different scheme could 
be defined. -- If additional parameters are needed in the future, a 
different scheme would need to be defined.

* Section 3 The WWW-Authenticate Response Header Field

The requirement that a resource server MUST include the HTTP WWW-Authenticate 
response header field is odd; really this is at the discretion of the server. 
Is it really necessary to use a conformance requirement here?

URI-reference -- URI-Reference

* Section 3.1 Error Codes

405 belongs in the list of typically appropriate status codes as well.


Kind regards,

--
Mark Nottingham   http://www.mnot.net/



___
apps-discuss mailing list
apps-disc...@ietf.org
https://www.ietf.org/mailman/listinfo/apps-discuss
___
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


[OAUTH-WG] MAC Cookies

2011-11-19 Thread Eran Hammer-Lahav
I would like to drop the cookies support defined in the MAC document due to 
lack of interest from the browser vendors. At this point it is most likely 
going to be an unimplemented proposal. If there is interest in the future, it 
can be proposed in a separate document. This will allow us to bring this work 
to a quick conclusion.

Any objections?

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


[OAUTH-WG] MAC: body-hash

2011-11-19 Thread Eran Hammer-Lahav
I want to reaffirm our previous consensus to drop the body-hash parameter and 
leave the ext parameter. Body-hash as currently specified is going to cause 
significant interop issues due to character (and other) encoding issues. 
Providers who desire to MAC the body can define their own ext use case.

Let me know if you have an objection to this change.

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


Re: [OAUTH-WG] MAC: body-hash

2011-11-19 Thread Eran Hammer-Lahav
The charset is restricted so no issues.

From: William Mills [mailto:wmi...@yahoo-inc.com]
Sent: Saturday, November 19, 2011 7:46 AM
To: Eran Hammer-Lahav; OAuth WG
Subject: Re: [OAUTH-WG] MAC: body-hash

I haven't read the MAC spec recently enough, did you already deal with the 
character set issue (if there was one) comparable to the ones in the Bearer 
spec?

I am +1 on the -body_hash +ext change.


From: Eran Hammer-Lahav e...@hueniverse.commailto:e...@hueniverse.com
To: OAuth WG oauth@ietf.orgmailto:oauth@ietf.org
Sent: Saturday, November 19, 2011 7:39 AM
Subject: [OAUTH-WG] MAC: body-hash
I want to reaffirm our previous consensus to drop the body-hash parameter and 
leave the ext parameter. Body-hash as currently specified is going to cause 
significant interop issues due to character (and other) encoding issues. 
Providers who desire to MAC the body can define their own ext use case.

Let me know if you have an objection to this change.

EHL

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

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


[OAUTH-WG] MAC: Age in nonce

2011-11-19 Thread Eran Hammer-Lahav
We had a long discussion about what to use for the numerical component of the 
nonce string. I would like to suggest we use:

   nonce
 REQUIRED.  A unique string generated by the client to allow the
 server to verify that a request has never been made before and
 helps prevent replay attacks when requests are made over an
 insecure channel.  The nonce value MUST be unique across all
 requests with the same MAC key identifier.

 The nonce value MUST consist of an age, a colon character
 (%x25), and a unique string (typically random).  The age
 portion MUST be a monotonically increasing, but not necessarily
 unique, positive integer value.  The change in the age value
 between requests MUST reflect the number of seconds elapsed.
 For example, the age can be a client timestamp expressed as
 seconds since 01-01-1970 or since the credentials were issued
 to the client.  The value MUST NOT include leading zeros (e.g.
 000273156).  For example: 273156:di3hvdf8

 To avoid the need to retain an infinite number of nonce values
 for future checks, the server MAY choose to restrict the time
 period after which a request with an old age is rejected.  If
 such a restriction is enforced, the server SHOULD allow for a
 sufficiently large window to accommodate network delays.  The
 server SHOULD use the first age value received from the client
 to establish a method for comparing the server time with that
 of the client.  In addition, the server SHOULD accommodate small
 negative changes in age values caused by differences between
 the multiple clocks of a distributed client configuration
 utilizing more than one device.

This text keeps the age as a seconds count but uses the first request to 
establish a clock sync on the server side instead of mandating one way to 
calculate it.

Feedback?

EHL


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


Re: [OAUTH-WG] [apps-discuss] HTTP MAC Authentication Scheme

2011-11-19 Thread Eran Hammer-Lahav


 -Original Message-
 From: Mark Nottingham [mailto:m...@mnot.net]
 Sent: Tuesday, May 31, 2011 4:57 PM

 The normalized request string contains the request-URI and values
 extracted from the Host header. Be aware that intermediaries can and do
 change these; e.g., they may change an absolute URI to a relative URI in the
 request-line, without affecting the semantics of the request. See [1] for
 details (it covers other problematic conditions too).
 
 It would be more robust to calculate an effective request URI, as in [2].
 [2] http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-14#section-4.3

Using the effective request URI has proved to be a significant point of 
friction in OAuth 1.0. I would rather note that intermediaries can change the 
request URI and that the server must reverse those changes based on what the 
values should have been if they were received from the client directly.

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


Re: [OAUTH-WG] MAC Token Comments

2011-11-19 Thread Eran Hammer-Lahav
Thanks.

 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Justin Richer
 Sent: Friday, August 12, 2011 11:44 AM
 To: oauth@ietf.org
 Cc: Anganes, Amanda L
 Subject: [OAUTH-WG] MAC Token Comments
 
 2: MAC Key: The server MUST NOT reissue a previously issued MAC key and
 MAC key identifier combination.

Ok.
 
 3: I would still like to see a binding for post body and url parameters.
 This could be as simple as defining a set of parameter names for everything
 used in the auth header, but I'm still given the impression that this has been
 deemed outside the scope of the MAC token. Our use case is to pass around
 signed URLs between servers with all query parameters protected by the
 signature, which we use 2-legged OAuth 1.0 for today. We can try to get
 language for this together if there's enough draw for it, but I haven't been
 hearing that from other folks yet so we might just try to draft an extension 
 to
 the extension, instead.

I can see the value in this for signed redirections and callbacks. The problem, 
of course, is that once you mess with the request URI, it must be normalized 
which has been a significant source of friction in OAuth 1.0. If you have 
suggestions on how to add this functionality without introducing significant 
pain, we should discuss it.

 5: This section's wording should be brought more in line with the descriptions
 of the OAuth protocol in both core and bearer, which in turn should actually
 be a bit closer together themselves. Seems like we need a succinct elevator
 pitch for what is OAuth2 to drop into all of these locations (and other
 extension specs) -- anybody want to take a crack at distilling one from these
 three sources?

I just dropped the whole thing and kept a one line reference to OAuth 2.0. No 
need to explain it.

 7.9: Grammar tweak: Those designing additional methods should evaluate
   the compatibility of the normalized request string with their
   own security requirements.

Adding 'own' is superfluous.

EHL

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


Re: [OAUTH-WG] Mandatory-to-implement token type

2011-11-17 Thread Eran Hammer-Lahav
 1. Should we specify some token type as mandatory to implement?  Why or
 why not (*briefly*)?

On the server - no. It makes no sense because the server dictates the token 
type so if it decides to never issue the mandated type, what's the point in 
implementing?

On the client, maybe. If the server knows that a client will always understand 
a set of token types, it can choose to use that and ensure interop (or not). In 
practice, mandating will add no real interop value. Almost every client will 
hard-code the token types it needs to understand and providers are not likely 
to support more than one or to change it. We can mandate a type for 'generic 
clients' so that libraries support both, but it won't actually make any 
difference.

Bottom line, this is a red herring. OAuth doesn't really provide this level of 
interop and was never designed for that. In the future, when we have more 
interop web APIs (photos, social, etc.) and we have real world experience with 
discovery, this will be important. But that's a few years away (at least).
 
 2. If we do specify one, which token type should it be?

This is a no win situation. Most providers will ignore a requirement to support 
MAC, or will support it but will not see much usage because most developers 
when given the choice will go with Bearer. Mandating Bearer will be ignored by 
providers who want better security and will most likely render MAC pointless. 
If we mandate Bearer, I see no point in even publishing MAC as it will turn 
into a purely theoretical exercise.

Given the history of this group, no change is the only likely consensus.

EHL


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


Re: [OAUTH-WG] Single transaction token

2011-11-08 Thread Eran Hammer-Lahav
No, but you can define a new parameter for use instead or alongside the 
existing parameter.

EHL

From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf Of 
Declan Newman
Sent: Tuesday, November 08, 2011 1:58 AM
To: oauth@ietf.org
Cc: Will Simpson; Geoffrey Bilder
Subject: [OAUTH-WG] Single transaction token

Hello,

We're currently implementing OAuth 2 provider for a client, whom needs to have 
the facility to authenticate/authorise a client to update in a single 
transaction.

Is there a way to specify the validity of a token on a per-transaction basis, 
as opposed to a timeframe?

Any help much appreciated.

Regards,

Dec


Declan Newman, Development Team Leader,
Semantico, Floor 1, 21-23 Dyke Road, Brighton BN1 3FE
mailto:declan.new...@semantico.com
tel:+44-1273-358247

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


Re: [OAUTH-WG] AD review of -22

2011-11-02 Thread Eran Hammer-Lahav
I have not seen any responses to these items so I assume the group is in 
agreement with the comments made. I will push out a revised ID addressing these 
items in a few days.

EHL


From: oauth-boun...@ietf.org [oauth-boun...@ietf.org] On Behalf Of Stephen 
Farrell [stephen.farr...@cs.tcd.ie]
Sent: Thursday, October 13, 2011 10:13 AM
To: oauth@ietf.org
Subject: [OAUTH-WG] AD review of -22

Hi all,

Sorry for having been quite slow with this, but I had a bunch
of travel recently.

Anyway, my AD comments on -22 are attached. I think that the
first list has the ones that need some change before we push
this out for IETF LC, there might or might not be something
to change as a result of the 2nd list of questions and the
rest are really nits can be handled either now or later.

Thanks for all your work on this so far - its nearly there
IMO and we should be able to get the IETF LC started once
these few things are dealt with.

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


Re: [OAUTH-WG] AD review of -22

2011-11-02 Thread Eran Hammer-Lahav
Do you want to see no change or adjust it to client must implement both, server 
decides which to use.

EHL


From: oauth-boun...@ietf.org [oauth-boun...@ietf.org] On Behalf Of John Bradley 
[ve7...@ve7jtb.com]
Sent: Wednesday, November 02, 2011 1:06 PM
To: Torsten Lodderstedt
Cc: oauth@ietf.org
Subject: Re: [OAUTH-WG] AD review of -22

+1
On 2011-11-02, at 4:45 PM, Torsten Lodderstedt wrote:

Hi Stephen,

I'm concerned about your proposal (7) to make support for MAC a MUST for 
clients and BEARER a MAY only. In my opinion, this does not reflect the group's 
consensus. Beside this, the security threat analysis justifies usage of BEARER 
for nearly all use cases as long as HTTPS (incl. server authentication) can be 
utilized.

regards,
Torsten.


Am 13.10.2011 19:13, schrieb Stephen Farrell:

Hi all,

Sorry for having been quite slow with this, but I had a bunch
of travel recently.

Anyway, my AD comments on -22 are attached. I think that the
first list has the ones that need some change before we push
this out for IETF LC, there might or might not be something
to change as a result of the 2nd list of questions and the
rest are really nits can be handled either now or later.

Thanks for all your work on this so far - its nearly there
IMO and we should be able to get the IETF LC started once
these few things are dealt with.

Cheers,
S.




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


___
OAuth mailing list
OAuth@ietf.orgmailto: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] AD review of -22

2011-11-02 Thread Eran Hammer-Lahav
The problem is centered on the definition of a client. If it is a service 
specific implementation which is merely using OAuth for access, there isn't any 
interop requirements other than making sure the client and server are 
compatible. But if the client is a general purpose OAuth library or generic 
client (e.g. CURL), then the MTI becomes critical for any real interop.

I don't have a strong prefernece here, but we should clearly define the client 
characteristics in this discussion since an OAuth client isn't usually similar 
to an HTTP client in its interop reality.

I am not sure how to craft this language into spec form, but we might want to 
list such a MTI requirement in terms of a 'client designed to work across 
multiuple providers such as a general purpose library'.

EHL


From: Stephen Farrell [stephen.farr...@cs.tcd.ie]
Sent: Wednesday, November 02, 2011 1:45 PM
To: John Bradley
Cc: Eran Hammer-Lahav; oauth@ietf.org
Subject: Re: [OAUTH-WG] AD review of -22

So perhaps this is the interesting point of difference.

On 11/02/2011 08:37 PM, John Bradley wrote:
 It is up to the server to decide what formats it will support.

With IETF protocols, its IETF consensus that decides this in
almost all cases that affect interop and it is therefore not
up to the specific server deployment admin what the server
code will support.

I think this case affects interop. and should be treated
as for any other IETF protocol. Am I wrong?

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


Re: [OAUTH-WG] Rechartering

2011-10-31 Thread Eran Hammer-Lahav
That's a whole different issue as this is about talking to a single server 
retuning two tokens with different scopes.

EHL


From: Dick Hardt [dick.ha...@gmail.com]
Sent: Saturday, October 29, 2011 12:07 AM
To: Eran Hammer-Lahav
Cc: Dan Taflin; OAuth WG
Subject: Re: [OAUTH-WG] Rechartering

What if the access tokens come from different authoritative servers?

On Oct 26, 2011, at 9:15 AM, Eran Hammer-Lahav wrote:

 Why not just ask for one access token with all the scopes you need, then 
 refresh it by asking for the different subsets you want.

 EHL

 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Dan Taflin
 Sent: Tuesday, October 25, 2011 3:37 PM
 To: OAuth WG
 Subject: Re: [OAUTH-WG] Rechartering

 I would like to second Torsten's pitch for the ability to return multiple 
 access
 tokens with a single authorization process. The use case for my company is to
 segment operations into two main categories: protected and confidential. (A
 possible third category, public, would not require any authorization at all).
 Protected operations would be user-specific operations that don't involve
 the passing of any sensitive information, such as image search results tagged
 with information about whether each image is available for download by that
 user. Confidential operations would involve passing user data, like user
 registration or e-commerce. We would like to protect each category of
 operations with distinct tokens: a general-use token for protected
 operations, and a secure token for confidential operations.

 We could use the scope parameter to specify either protected or
 confidential. Currently the oauth spec allows a Refresh token to request a
 new token with reduced scope from the one originally issued, but there is no
 way to obtain a new token with a completely different scope without doing
 the full oauth dance a second time.

 Dan

 -Original Message-
 From: Torsten Lodderstedt [mailto:tors...@lodderstedt.net]
 Sent: Thursday, October 20, 2011 3:57 PM
 To: Hannes Tschofenig
 Cc: OAuth WG
 Subject: Re: [OAUTH-WG] Rechartering

 Hi all,

 my prioritization is driven by the goal to make OAuth the authorization
 framework of choice for any internet standard protocol, such as WebDAV,
 IMAP, SMTP or SIP. So let me first explain what is missing from my point of
 view and explain some thoughts how to fill the gaps.

 A standard protocol is defined in terms of resource types and messages by a
 body (e.g. IETF, OIDF, OMA), (hopefully) implemented in many places, and
 used by different but deployment-independent clients.
 OAuth-based protocol specifications must also define scope values (e.g.
 read, write, send) and their relation to the resource types and messages. The
 different deployments expose the standard protocol on different resource
 server endpoints. In my opinion, it is fundamental
 to clearly distinguish scope values (standardized, static) and
 resource server addresses (deployment specific) and to manage their
 relationships. The current scope definition is much to weak and insufficient.
 Probably, the UMA concepts of hosts, resources sets, and corresponding
 scopes could be adopted for that purpose.

 OAuth today requires clients to register with the service provider before
 they are deployed. Would you really expect IMAP clients, e.g.
 Thunderbird, to register with any a-Mail services upfront? So clients should
 be given a way to register dynamically to the authorization servers. This
 should also allow us to cover client instance aspects.
 It is interesting to note, that such a mechanism would allow us to get rid of
 secret-less clients and the one-time usage requirement for authorization
 codes.

 We also assume the client to know the URLs of the resource server and the
 corresponding authorization server and to use HTTPS server authentication
 to verify the resource server's authenticity. This is impossible in the 
 standard
 scenario. Clients must be able to discover the authorization server a
 particular resource server relies on at runtime. The discovery mechanism
 could be specified by the OAuth WG, but could also be part of an application
 protocols specification. But we MUST find another way to prevent token
 phishing by counterfeit resource servers.

 As one approach, the client could pass the (previously HTTPS
 validated) resource server's URL with the authorization request. The
 authorization server should then refuse such requests for any unknown
 (counterfeit) resource servers. Such an additional parameter could also serve
 as namespace for scope values and enable service providers to run multiple
 instances of the same service within a single deployment.

 If the additional data enlarges the request payload to much, we could
 consider to adopt the request by reference proposal.

 Let's now assume, OAuth is successful in the world of standard protocols and
 we will see

Re: [OAUTH-WG] Rechartering

2011-10-26 Thread Eran Hammer-Lahav
Why not just ask for one access token with all the scopes you need, then 
refresh it by asking for the different subsets you want.

EHL

 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Dan Taflin
 Sent: Tuesday, October 25, 2011 3:37 PM
 To: OAuth WG
 Subject: Re: [OAUTH-WG] Rechartering
 
 I would like to second Torsten's pitch for the ability to return multiple 
 access
 tokens with a single authorization process. The use case for my company is to
 segment operations into two main categories: protected and confidential. (A
 possible third category, public, would not require any authorization at all).
 Protected operations would be user-specific operations that don't involve
 the passing of any sensitive information, such as image search results tagged
 with information about whether each image is available for download by that
 user. Confidential operations would involve passing user data, like user
 registration or e-commerce. We would like to protect each category of
 operations with distinct tokens: a general-use token for protected
 operations, and a secure token for confidential operations.
 
 We could use the scope parameter to specify either protected or
 confidential. Currently the oauth spec allows a Refresh token to request a
 new token with reduced scope from the one originally issued, but there is no
 way to obtain a new token with a completely different scope without doing
 the full oauth dance a second time.
 
 Dan
 
 -Original Message-
 From: Torsten Lodderstedt [mailto:tors...@lodderstedt.net]
 Sent: Thursday, October 20, 2011 3:57 PM
 To: Hannes Tschofenig
 Cc: OAuth WG
 Subject: Re: [OAUTH-WG] Rechartering
 
 Hi all,
 
 my prioritization is driven by the goal to make OAuth the authorization
 framework of choice for any internet standard protocol, such as WebDAV,
 IMAP, SMTP or SIP. So let me first explain what is missing from my point of
 view and explain some thoughts how to fill the gaps.
 
 A standard protocol is defined in terms of resource types and messages by a
 body (e.g. IETF, OIDF, OMA), (hopefully) implemented in many places, and
 used by different but deployment-independent clients.
 OAuth-based protocol specifications must also define scope values (e.g.
 read, write, send) and their relation to the resource types and messages. The
 different deployments expose the standard protocol on different resource
 server endpoints. In my opinion, it is fundamental
 to clearly distinguish scope values (standardized, static) and
 resource server addresses (deployment specific) and to manage their
 relationships. The current scope definition is much to weak and insufficient.
 Probably, the UMA concepts of hosts, resources sets, and corresponding
 scopes could be adopted for that purpose.
 
 OAuth today requires clients to register with the service provider before
 they are deployed. Would you really expect IMAP clients, e.g.
 Thunderbird, to register with any a-Mail services upfront? So clients should
 be given a way to register dynamically to the authorization servers. This
 should also allow us to cover client instance aspects.
 It is interesting to note, that such a mechanism would allow us to get rid of
 secret-less clients and the one-time usage requirement for authorization
 codes.
 
 We also assume the client to know the URLs of the resource server and the
 corresponding authorization server and to use HTTPS server authentication
 to verify the resource server's authenticity. This is impossible in the 
 standard
 scenario. Clients must be able to discover the authorization server a
 particular resource server relies on at runtime. The discovery mechanism
 could be specified by the OAuth WG, but could also be part of an application
 protocols specification. But we MUST find another way to prevent token
 phishing by counterfeit resource servers.
 
 As one approach, the client could pass the (previously HTTPS
 validated) resource server's URL with the authorization request. The
 authorization server should then refuse such requests for any unknown
 (counterfeit) resource servers. Such an additional parameter could also serve
 as namespace for scope values and enable service providers to run multiple
 instances of the same service within a single deployment.
 
 If the additional data enlarges the request payload to much, we could
 consider to adopt the request by reference proposal.
 
 Let's now assume, OAuth is successful in the world of standard protocols and
 we will see plenty of deployments with a bunch of different OAuth
 protected resource servers. Shall this servers all be accessible with a single
 token? In my opinion, this would cause security, privacy and/or
 scalability/performance problems. To give just the most obvious example,
 the target audience of such a token cannot be restricted enough, which may
 allow a resource server (or an attacker in control of it) to abuse the token 
 on
 other servers. But 

Re: [OAUTH-WG] Rechartering

2011-10-20 Thread Eran Hammer-Lahav
Who is we had already decided? This was not discussed on this list.

EHL

 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Hannes Tschofenig
 Sent: Thursday, October 20, 2011 10:19 AM
 To: Richer, Justin P.
 Cc: OAuth WG; Barry Leiba
 Subject: Re: [OAUTH-WG] Rechartering
 
 Certainly not everyone needs to pay attention to everything. We are,
 however, trying to determine whether there is a critical mass of interested
 persons for a given item in terms of reviews, document authors,
 implementers, and deployers.
 
 I do not see a problem at all with working on JWT within the OAuth working
 group. I thought that we had already decided in the past that the JSON
 signature  encryption work would go into JOES (earlier WOES) and the
 home for JWT is the OAuth working group. The area directors may have a
 different opinion but for the moment this is my working assumption.
 
 Ciao
 Hannes
 
 
 On Oct 20, 2011, at 9:30 AM, Richer, Justin P. wrote:
 
  I think it will be true that the whole working group won't be focusing on 
  all
 documents at the same time, much in the same way that different subsets of
 our current WG have focused on things like the security document or SAML
 bindings. In this fashion, I believe we'll be able to pull expertise from
 different sectors to produce a family of documents that live in an ecosystem
 around OAuth.
 
  For many of these documents, even though they're not directly OAuth
 pieces (like JWT), but where else should they live? This may not be The Way
 That IETF Does It (I'm honestly not sure), but in my opinion, as long as each
 document has a dedicated editor and at least some interaction/support with
 the group we can handle many of these smaller items.
 
  -- Justin
  
  From: oauth-boun...@ietf.org [oauth-boun...@ietf.org] on behalf of
  Barry Leiba [barryle...@computer.org]
  Sent: Thursday, October 20, 2011 12:05 PM
  To: OAuth WG
  Subject: Re: [OAUTH-WG] Rechartering
 
  do we have the band width to work on all these items, as some are big
  and some are fairly small and contained. May have to have some
  prioritized list of where people think these fit.
 
  Yes, exactly.  And one of the things we'd like to hear from all of you
  is what your priorities are... how you would prioritize the list.
 
  Barry, chair-like object
  ___
  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


Re: [OAUTH-WG] Rechartering

2011-10-20 Thread Eran Hammer-Lahav
This is not how the IETF, or for that matter, any standards body operates. 
Working groups must be focused with a clearly defined purpose. For example, JWT 
is a large enough effort and clear enough to form a working group today - just 
go ahead and propose it. JWT has OAuth binding but it is not part of OAuth. JWT 
to OAuth is what WebDAV is to HTTP.

It is not enough to have critical mass for each document if there isn't a 
significant overlap in audience across each. Trying to do too much at the same 
times creates list noise and really forces those with day jobs not dedicated to 
standards to leave the WG.

Bundling efforts makes sense when they are small enough and can be finished in 
a short period of time. Some of these documents can also live on the list but 
not become official WG documents. Take a look at HTTPbis - they have a clear 
charter and set of documents but the list is discussing about a dozen of other 
individual submissions, some from the editors and chair of the WG, without any 
problem or heavy handed process.

EHL



 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Richer, Justin P.
 Sent: Thursday, October 20, 2011 9:31 AM
 To: Barry Leiba; OAuth WG
 Subject: Re: [OAUTH-WG] Rechartering
 
 I think it will be true that the whole working group won't be focusing on all
 documents at the same time, much in the same way that different subsets of
 our current WG have focused on things like the security document or SAML
 bindings. In this fashion, I believe we'll be able to pull expertise from
 different sectors to produce a family of documents that live in an ecosystem
 around OAuth.
 
 For many of these documents, even though they're not directly OAuth
 pieces (like JWT), but where else should they live? This may not be The Way
 That IETF Does It (I'm honestly not sure), but in my opinion, as long as each
 document has a dedicated editor and at least some interaction/support with
 the group we can handle many of these smaller items.
 
  -- Justin
 
 From: oauth-boun...@ietf.org [oauth-boun...@ietf.org] on behalf of Barry
 Leiba [barryle...@computer.org]
 Sent: Thursday, October 20, 2011 12:05 PM
 To: OAuth WG
 Subject: Re: [OAUTH-WG] Rechartering
 
  do we have the band width to work on all these items, as some are big
  and some are fairly small and contained. May have to have some
  prioritized list of where people think these fit.
 
 Yes, exactly.  And one of the things we'd like to hear from all of you is what
 your priorities are... how you would prioritize the list.
 
 Barry, chair-like object
 ___
 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] Rechartering

2011-10-20 Thread Eran Hammer-Lahav
What possible rational is there for SWD to belong in the OAuth working group 
and in the security area?

EHL

 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Mike Jones
 Sent: Thursday, October 20, 2011 12:12 PM
 To: Hannes Tschofenig; OAuth WG
 Subject: Re: [OAUTH-WG] Rechartering
 
 Thanks, Hannes.  Here's my prioritized list of new work:
 
 1.  JSON Web Token (JWT)
 2.  Simple Web Discovery (SWD)
 3.  JSON Web Token (JWT) Bearer Token Profile
 4.  Token Revocation
 
 My prioritized list of existing work items to complete after the core and
 bearer specs are:
 
 A.  Assertions Specification
 B.  SAML Bearer Token Profile
 
 I am ambivalent about whether the working group takes on most of the
 other work items.
 
 Responding to Eran's comments on SWD versus host-meta, these specs have
 significantly different goals and use substantially different mechanisms with
 different privacy characteristics.  Also, if you compare the relative 
 complexity
 of the example at http://tools.ietf.org/html/draft-hammer-hostmeta-
 17#appendix-A versus the example at http://tools.ietf.org/html/draft-jones-
 simple-web-discovery-01#section-1, you can see why SWD was chosen for
 use in OpenID Connect to discover OAuth authorization and resource server
 endpoints.
 
   -- Mike
 
 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Hannes Tschofenig
 Sent: Wednesday, October 19, 2011 10:09 PM
 To: OAuth WG
 Subject: [OAUTH-WG] Rechartering
 
 Hi all,
 
 in preparation of the upcoming IETF meeting Barry and I would like to start a
 re-chartering discussion.  We both are currently attending the Internet
 Identity Workshop and so we had the chance to solicit input from the
 participants. This should serve as a discussion starter.
 
 Potential future OAuth charter items (in random order):
 
 
 
 1) Dynamic Client Registration Protocol
 
 Available document:
 http://datatracker.ietf.org/doc/draft-hardjono-oauth-dynreg/
 
 2) Token Revocation
 
 Available document:
 http://datatracker.ietf.org/doc/draft-lodderstedt-oauth-revocation/
 
 3) UMA
 
 Available document:
 http://datatracker.ietf.org/doc/draft-hardjono-oauth-umacore/
 
 4) Client Instance Extension
 
 Available document:
 http://tools.ietf.org/id/draft-richer-oauth-instance-00.txt
 
 5) XML Encoding
 
 Available document:
 http://tools.ietf.org/id/draft-richer-oauth-xml-00.txt
 
 6) JSON Web Token
 
 Available document:
 http://tools.ietf.org/html/draft-jones-json-web-token-05
 
 7) JSON Web Token (JWT) Bearer Profile
 
 Available document:
 http://tools.ietf.org/html/draft-jones-oauth-jwt-bearer-00
 
 8) User Experience Extension
 
 Available document:
 http://tools.ietf.org/html/draft-recordon-oauth-v2-ux-00
 
 9) Request by Reference
 
 Available document:
 http://tools.ietf.org/html/draft-sakimura-oauth-requrl-00
 
 10) Simple Web Discovery
 
 Available document:
 http://tools.ietf.org/html/draft-jones-simple-web-discovery-00
 
 
 
 We have the following questions:
 
 a) Are you interested in any of the above-listed items? (as a reviewer, co-
 author, implementer, or someone who would like to deploy). It is also useful
 to know if you think that we shouldn't work on a specific item.
 
 b) Are there other items you would like to see the group working on?
 
 Note: In case your document is expired please re-submit it.
 
 Ciao
 Hannes  Barry
 
 ___
 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] Rechartering

2011-10-20 Thread Eran Hammer-Lahav
We also use HTTP, but we don't discuss it here.

OAuth discovery, automation, cross-vendor interop, and dynamic client 
registration are all part of one big topic. Before we can discuss any 
particular drafts or proposals, we must first understand the problem space, 
collect use cases and requirements, and figure out what we are trying to solve. 
Then we can decide if this is big enough for a new working group or not and 
charter the work. Once the WG starts working on it, it can decide based on the 
requirements which technologies to use and SWD can be one option.

However, even if an OAuth-related effort decides to use SWD, it is still not 
the place to work on it. SWD is clearly an Application area work and should be 
discussed there.

EHL


 -Original Message-
 From: Mike Jones [mailto:michael.jo...@microsoft.com]
 Sent: Thursday, October 20, 2011 12:46 PM
 To: Eran Hammer-Lahav; Hannes Tschofenig; OAuth WG
 Subject: RE: [OAUTH-WG] Rechartering
 
 Because it's intended for (and used for) discovery of OAuth endpoints...
 
 -Original Message-
 From: Eran Hammer-Lahav [mailto:e...@hueniverse.com]
 Sent: Thursday, October 20, 2011 12:42 PM
 To: Mike Jones; Hannes Tschofenig; OAuth WG
 Subject: RE: [OAUTH-WG] Rechartering
 
 What possible rational is there for SWD to belong in the OAuth working group
 and in the security area?
 
 EHL
 
  -Original Message-
  From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
  Of Mike Jones
  Sent: Thursday, October 20, 2011 12:12 PM
  To: Hannes Tschofenig; OAuth WG
  Subject: Re: [OAUTH-WG] Rechartering
 
  Thanks, Hannes.  Here's my prioritized list of new work:
 
  1.  JSON Web Token (JWT)
  2.  Simple Web Discovery (SWD)
  3.  JSON Web Token (JWT) Bearer Token Profile 4.  Token Revocation
 
  My prioritized list of existing work items to complete after the core
  and bearer specs are:
 
  A.  Assertions Specification
  B.  SAML Bearer Token Profile
 
  I am ambivalent about whether the working group takes on most of the
  other work items.
 
  Responding to Eran's comments on SWD versus host-meta, these specs
  have significantly different goals and use substantially different
  mechanisms with different privacy characteristics.  Also, if you
  compare the relative complexity of the example at
  http://tools.ietf.org/html/draft-hammer-hostmeta-
  17#appendix-A versus the example at
  http://tools.ietf.org/html/draft-jones-
  simple-web-discovery-01#section-1, you can see why SWD was chosen for
  use in OpenID Connect to discover OAuth authorization and resource
  server endpoints.
 
  -- Mike
 
  -Original Message-
  From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
  Of Hannes Tschofenig
  Sent: Wednesday, October 19, 2011 10:09 PM
  To: OAuth WG
  Subject: [OAUTH-WG] Rechartering
 
  Hi all,
 
  in preparation of the upcoming IETF meeting Barry and I would like to
  start a re-chartering discussion.  We both are currently attending the
  Internet Identity Workshop and so we had the chance to solicit input
  from the participants. This should serve as a discussion starter.
 
  Potential future OAuth charter items (in random order):
 
  
 
  1) Dynamic Client Registration Protocol
 
  Available document:
  http://datatracker.ietf.org/doc/draft-hardjono-oauth-dynreg/
 
  2) Token Revocation
 
  Available document:
  http://datatracker.ietf.org/doc/draft-lodderstedt-oauth-revocation/
 
  3) UMA
 
  Available document:
  http://datatracker.ietf.org/doc/draft-hardjono-oauth-umacore/
 
  4) Client Instance Extension
 
  Available document:
  http://tools.ietf.org/id/draft-richer-oauth-instance-00.txt
 
  5) XML Encoding
 
  Available document:
  http://tools.ietf.org/id/draft-richer-oauth-xml-00.txt
 
  6) JSON Web Token
 
  Available document:
  http://tools.ietf.org/html/draft-jones-json-web-token-05
 
  7) JSON Web Token (JWT) Bearer Profile
 
  Available document:
  http://tools.ietf.org/html/draft-jones-oauth-jwt-bearer-00
 
  8) User Experience Extension
 
  Available document:
  http://tools.ietf.org/html/draft-recordon-oauth-v2-ux-00
 
  9) Request by Reference
 
  Available document:
  http://tools.ietf.org/html/draft-sakimura-oauth-requrl-00
 
  10) Simple Web Discovery
 
  Available document:
  http://tools.ietf.org/html/draft-jones-simple-web-discovery-00
 
  
 
  We have the following questions:
 
  a) Are you interested in any of the above-listed items? (as a
  reviewer, co- author, implementer, or someone who would like to
  deploy). It is also useful to know if you think that we shouldn't work on a
 specific item.
 
  b) Are there other items you would like to see the group working on?
 
  Note: In case your document is expired please re-submit it.
 
  Ciao
  Hannes  Barry
 
  ___
  OAuth mailing list
  OAuth@ietf.org
  https://www.ietf.org/mailman/listinfo/oauth

Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues Proposed Resolutions

2011-10-19 Thread Eran Hammer-Lahav
I don't think defining them as URI's is helpful here. But the set must be 
inclusive of URI characters.

EHL

 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Marius Scurtescu
 Sent: Wednesday, October 19, 2011 10:31 AM
 To: Mike Jones
 Cc: OAuth WG
 Subject: Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues 
 Proposed Resolutions
 
 On Wed, Oct 19, 2011 at 10:26 AM, Mike Jones
 michael.jo...@microsoft.com wrote:
  Yes, it covers all the characters legal in URIs.  Per earlier discussion on 
  the
 list, scopes are not restricted to being URIs, as existing practice includes
 scope elements that are not URIs such as email profile, and openid.
 
 All those simple words are URIs. They are relative URIs (just the path), but
 URIs nonetheless.
 
 Marius
 
 
                                 -- Mike
 
  -Original Message-
  From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
  Of Marius Scurtescu
  Sent: Wednesday, October 19, 2011 10:24 AM
  To: Julian Reschke
  Cc: OAuth WG
  Subject: Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues 
  Proposed Resolutions
 
  Marius
 
 
 
  On Tue, Oct 18, 2011 at 9:39 AM, Julian Reschke julian.resc...@gmx.de
 wrote:
  On 2011-10-18 17:38, Eran Hammer-Lahav wrote:
 
  Space is allowed inside a quoted string and is already not allowed
  inside each scope string.
 
  EHL
  ...
 
  a) yes.
 
  b) well:
 
    The value of the scope parameter is expressed as a list of space-
    delimited, case sensitive strings.  The strings are defined by the
    authorization server.  If the value contains multiple
  space-delimited
    strings, their order does not matter, and each string adds an
    additional access range to the requested scope.
 
  That certainly implies that you can't have a space inside a token,
  but it could be clearer.
 
  Optimally, state the character repertoire precisely:
 
   scopetokenchar =  %x21 / %x23-5B / %x5D-7E
   ; HTTPbis P1 qdtext except whitespace, restricted to US-ASCII
 
  ?
 
  Is this covering all characters allowed in a URI? Why not define scopes as a
 list of URIs?
 
 
  Best regards, Julian
  ___
  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


Re: [OAUTH-WG] Rechartering

2011-10-19 Thread Eran Hammer-Lahav
No-brainer, low-hanging-fruit:

2) Token Revocation
8) User Experience Extension

Don't see the point, but simple enough not to care if plenty of others want to 
see it included:

4) Client Instance Extension
5) XML Encoding
9) Request by Reference

Now for the objectionable...

1) Dynamic Client Registration Protocol

This is premature standardization and must be deferred until we have enough 
real world experience and real world requirements. Since we don't have enough 
interoperable web protocols (e.g. sharing photos), there is little need for 
dynamic client registration at this point. Doing this wrong would be extremely 
costly. We have tried this multiple times with OAuth 1.0 and failed because 
there was no one at the table shipping real-world products that needed this 
functionality.

3) UMA

This is big enough, and complex enough, for its own working group and list 
(which I thought it already had elsewhere). Does not belong here. It is a layer 
above OAuth, not part of it.

6) JSON Web Token
7) JSON Web Token (JWT) Bearer Profile

This is big enough for its own working group and list. It also overlaps with 
the new JSON signature working group recently created.

10) Simple Web Discovery

First, this clearly does not belong here. This is a classic Application area 
item, and should really be raised in the application area general WG. I'd also 
point out that the IESG has recently approved the publication of host-meta as a 
proposed standard and the latest version includes a JSON flavor which makes 
this work redundant.

EHL



 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Hannes Tschofenig
 Sent: Wednesday, October 19, 2011 10:09 PM
 To: OAuth WG
 Subject: [OAUTH-WG] Rechartering
 
 Hi all,
 
 in preparation of the upcoming IETF meeting Barry and I would like to start a
 re-chartering discussion.  We both are currently attending the Internet
 Identity Workshop and so we had the chance to solicit input from the
 participants. This should serve as a discussion starter.
 
 Potential future OAuth charter items (in random order):
 
 
 
 1) Dynamic Client Registration Protocol
 
 Available document:
 http://datatracker.ietf.org/doc/draft-hardjono-oauth-dynreg/
 
 2) Token Revocation
 
 Available document:
 http://datatracker.ietf.org/doc/draft-lodderstedt-oauth-revocation/
 
 3) UMA
 
 Available document:
 http://datatracker.ietf.org/doc/draft-hardjono-oauth-umacore/
 
 4) Client Instance Extension
 
 Available document:
 http://tools.ietf.org/id/draft-richer-oauth-instance-00.txt
 
 5) XML Encoding
 
 Available document:
 http://tools.ietf.org/id/draft-richer-oauth-xml-00.txt
 
 6) JSON Web Token
 
 Available document:
 http://tools.ietf.org/html/draft-jones-json-web-token-05
 
 7) JSON Web Token (JWT) Bearer Profile
 
 Available document:
 http://tools.ietf.org/html/draft-jones-oauth-jwt-bearer-00
 
 8) User Experience Extension
 
 Available document:
 http://tools.ietf.org/html/draft-recordon-oauth-v2-ux-00
 
 9) Request by Reference
 
 Available document:
 http://tools.ietf.org/html/draft-sakimura-oauth-requrl-00
 
 10) Simple Web Discovery
 
 Available document:
 http://tools.ietf.org/html/draft-jones-simple-web-discovery-00
 
 
 
 We have the following questions:
 
 a) Are you interested in any of the above-listed items? (as a reviewer, co-
 author, implementer, or someone who would like to deploy). It is also useful
 to know if you think that we shouldn't work on a specific item.
 
 b) Are there other items you would like to see the group working on?
 
 Note: In case your document is expired please re-submit it.
 
 Ciao
 Hannes  Barry
 
 ___
 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] draft-ietf-oauth-v2-bearer-09: Open Issues Proposed Resolutions

2011-10-18 Thread Eran Hammer-Lahav
Space is allowed inside a quoted string and is already not allowed inside each 
scope string.

EHL

 -Original Message-
 From: Julian Reschke [mailto:julian.resc...@gmx.de]
 Sent: Tuesday, October 18, 2011 6:50 AM
 To: Eran Hammer-Lahav
 Cc: Hannes Tschofenig; OAuth WG
 Subject: Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues 
 Proposed Resolutions
 
 On 2011-10-17 20:53, Eran Hammer-Lahav wrote:
  All I agree with is to limit the scope character-set in the v2 spec to the
 subset of ASCII allowed in HTTP header quoted-string, excluding  and \ so no
 escaping is needed, ever.
 
 You also need to have one character reserved as delimiter for multiple
 scopes inside quoted-string, so is SP out?
 
 Best regards, Julian
___
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


Re: [OAUTH-WG] draft-ietf-oauth-v2-22

2011-10-18 Thread Eran Hammer-Lahav
Sending to the right place.

On Oct 18, 2011, at 20:36, qijun83 
qiju...@gmail.commailto:qiju...@gmail.com wrote:

Dear Sir,

It's really very pleasure for me to write to you for asking some questions 
about oauth-v2-22 as follows.

In section 2.3 (Client Authentication), it is recommended to use the HTTP Basic 
authentication scheme
like Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW, which is included of 
user_id and
password as defined in [RFC2617http://tools.ietf.org/html/rfc2617], instead 
of using the parameters of client_id and client_secret in
HTTP request body.
I want to know,
(1). whether user_id equals to client_id, and password equals to 
client_secret.
(2). and whether it is allowed to use both of the  HTTP Basic authentication 
scheme and the client
credentials in the request body at the same time.

Looking forward to hearing from you.

Yours, sincerely
Qijun Zhang

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


Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues Proposed Resolutions

2011-10-17 Thread Eran Hammer-Lahav
I agree.

EHL

 -Original Message-
 From: John Bradley [mailto:ve7...@ve7jtb.com]
 Sent: Monday, October 17, 2011 6:07 AM
 To: Richer, Justin P.
 Cc: Eran Hammer-Lahav; OAuth WG
 Subject: Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues 
 Proposed Resolutions
 
 The scopes cross all of the profiles.
 
 I expect that restricting the character sets for bearer tokens, MAC, and other
 future variants should be dealt with in those profiles.
 
 Without restricting scope in core, we leave the possibility of coming up with
 different rules in different profiles e.g. MAC vs Bearer.
 
 It is probably best to have one rule in core that works across all the 
 profiles.
 
 John B.
 On 2011-10-16, at 7:19 PM, Richer, Justin P. wrote:
 
  I think the limit makes sense, but then are tokens limited by the same
 rules? They need to live in all the same places (query parameters, headers,
 forms) that scopes do and would be subject to the same kinds of encoding
 woes that scopes will. Or am I missing something obvious as to why this isn't
 a problem for tokens (both bearer tokens and the public part of MAC tokens)
 but is a problem for scope strings?
 
  -- Justin
  
  From: oauth-boun...@ietf.org [oauth-boun...@ietf.org] on behalf of
  John Bradley [ve7...@ve7jtb.com]
  Sent: Sunday, October 16, 2011 8:11 PM
  To: Eran Hammer-Lahav
  Cc: OAuth WG
  Subject: Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues 
 Proposed Resolutions
 
  Restricting it now in the core spec is going to save a lot of headaches 
  later.
 
  John B.
  On 2011-10-16, at 3:54 PM, Eran Hammer-Lahav wrote:
 
  It's an open question for the list.
 
  EHL
 
  -Original Message-
  From: Julian Reschke [mailto:julian.resc...@gmx.de]
  Sent: Sunday, October 16, 2011 11:00 AM
  To: Mike Jones
  Cc: Tschofenig, Hannes (NSN - FI/Espoo); Hannes Tschofenig; OAuth
  WG; Eran Hammer-Lahav
  Subject: Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues 
  Proposed Resolutions
 
  On 2011-10-16 18:44, Mike Jones wrote:
  As Eran wrote on 9/30, The fact that the v2 spec allows a wide
  range of
  characters in scope was unintentional. The design was limited to
  allow simple ASCII strings and URIs.
  ...
 
  I see. Thanks.
 
  Is this going to be clarified in -23?
 
  Best regards, Julian
  ___
  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] draft-ietf-oauth-v2-bearer-09: Open Issues Proposed Resolutions

2011-10-17 Thread Eran Hammer-Lahav
All I agree with is to limit the scope character-set in the v2 spec to the 
subset of ASCII allowed in HTTP header quoted-string, excluding  and \ so no 
escaping is needed, ever.

EHL

 -Original Message-
 From: Hannes Tschofenig [mailto:hannes.tschofe...@gmx.net]
 Sent: Monday, October 17, 2011 8:25 AM
 To: Eran Hammer-Lahav
 Cc: Hannes Tschofenig; John Bradley; Richer, Justin P.; OAuth WG
 Subject: Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues 
 Proposed Resolutions
 
 It is good that we have an agreement among a few people that more text
 needs to be provided in the core specification on the issue of the scope
 element.
 
 Now, there is still the question of what the text should say. The questions
 from my earlier mails are therefore still applicable and need an answer.
 
 Ciao
 Hannes
 
 On Oct 17, 2011, at 7:27 AM, Eran Hammer-Lahav wrote:
 
  I agree.
 
  EHL
 
  -Original Message-
  From: John Bradley [mailto:ve7...@ve7jtb.com]
  Sent: Monday, October 17, 2011 6:07 AM
  To: Richer, Justin P.
  Cc: Eran Hammer-Lahav; OAuth WG
  Subject: Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues 
  Proposed Resolutions
 
  The scopes cross all of the profiles.
 
  I expect that restricting the character sets for bearer tokens, MAC,
  and other future variants should be dealt with in those profiles.
 
  Without restricting scope in core, we leave the possibility of coming
  up with different rules in different profiles e.g. MAC vs Bearer.
 
  It is probably best to have one rule in core that works across all the
 profiles.
 
  John B.
  On 2011-10-16, at 7:19 PM, Richer, Justin P. wrote:
 
  I think the limit makes sense, but then are tokens limited by the
  same
  rules? They need to live in all the same places (query parameters,
  headers,
  forms) that scopes do and would be subject to the same kinds of
  encoding woes that scopes will. Or am I missing something obvious as
  to why this isn't a problem for tokens (both bearer tokens and the
  public part of MAC tokens) but is a problem for scope strings?
 
  -- Justin
  
  From: oauth-boun...@ietf.org [oauth-boun...@ietf.org] on behalf of
  John Bradley [ve7...@ve7jtb.com]
  Sent: Sunday, October 16, 2011 8:11 PM
  To: Eran Hammer-Lahav
  Cc: OAuth WG
  Subject: Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues 
  Proposed Resolutions
 
  Restricting it now in the core spec is going to save a lot of headaches
 later.
 
  John B.
  On 2011-10-16, at 3:54 PM, Eran Hammer-Lahav wrote:
 
  It's an open question for the list.
 
  EHL
 
  -Original Message-
  From: Julian Reschke [mailto:julian.resc...@gmx.de]
  Sent: Sunday, October 16, 2011 11:00 AM
  To: Mike Jones
  Cc: Tschofenig, Hannes (NSN - FI/Espoo); Hannes Tschofenig; OAuth
  WG; Eran Hammer-Lahav
  Subject: Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues
   Proposed Resolutions
 
  On 2011-10-16 18:44, Mike Jones wrote:
  As Eran wrote on 9/30, The fact that the v2 spec allows a wide
  range of
  characters in scope was unintentional. The design was limited to
  allow simple ASCII strings and URIs.
  ...
 
  I see. Thanks.
 
  Is this going to be clarified in -23?
 
  Best regards, Julian
  ___
  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


Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues Proposed Resolutions

2011-10-16 Thread Eran Hammer-Lahav
It's an open question for the list.

EHL

 -Original Message-
 From: Julian Reschke [mailto:julian.resc...@gmx.de]
 Sent: Sunday, October 16, 2011 11:00 AM
 To: Mike Jones
 Cc: Tschofenig, Hannes (NSN - FI/Espoo); Hannes Tschofenig; OAuth WG;
 Eran Hammer-Lahav
 Subject: Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues 
 Proposed Resolutions
 
 On 2011-10-16 18:44, Mike Jones wrote:
  As Eran wrote on 9/30, The fact that the v2 spec allows a wide range of
 characters in scope was unintentional. The design was limited to allow simple
 ASCII strings and URIs.
  ...
 
 I see. Thanks.
 
 Is this going to be clarified in -23?
 
 Best regards, Julian
___
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues Proposed Resolutions

2011-10-14 Thread Eran Hammer-Lahav
This is not sufficient.

For scope, if you are going to restrict the allowed characters, you must either 
specify how to encode all other values to fit the field, or we must move this 
restriction to the v2 specification so that no encoding is required.

For the token, you need to also define allowed token values so that they will 
fit in the header without encode, or specify an encoding scheme. The MAC token 
restricts token values (called MAC identifier) to %x20-21 / %x23-5B / %x5D-7E 
(any printable ASCII character except for  and \).

EHL


From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf Of Mike 
Jones
Sent: Friday, October 14, 2011 8:43 AM
To: Hannes Tschofenig; OAuth WG
Subject: Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues  Proposed 
Resolutions


Thanks for the useful discussion and the write-up, Hannes.  For context, Hannes 
and I discussed how to resolve the remaining Bearer spec issues in a manner 
that meets the needs of implementations and will not generate objections during 
the IESG or IETF Last Call reviews.  A few additional comments...



1.  Error Description - Nothing to add to Hannes' write-up.



2.  Scope - I was planning to allow a broader set of ASCII characters than the 
token set, as these characters are inadequate for the use of URIs/URLs as 
scope elements.  In particular, scope elements need to permit the full sets of 
reserved http://tools.ietf.org/html/rfc3986#section-2.2 and unreserved 
http://tools.ietf.org/html/rfc3986#section-2.3 characters in RFC 
3986http://tools.ietf.org/html/rfc3986.  The draft I am working on will say 
that scope is a space separated set of elements, where the elements consist of 
one or more characters from the union of the reserved and unreserved sets.



3.  Authorization Request Header Field - We agreed on the call that we're not 
doing implementers any favors by allowing both the b64token and #auth-param 
syntaxes, and that it is better to specify one or the other.  Since existing 
practice corresponds to the b4token syntax, the choice is clear which to 
specify.  Thus, it was a mistake to introduce the #auth-param choice in draft 
9.  It will be removed in draft 10, which is shortly forthcoming.



-- Mike



-Original Message-
From: oauth-boun...@ietf.orgmailto:oauth-boun...@ietf.org 
[mailto:oauth-boun...@ietf.org]mailto:[mailto:oauth-boun...@ietf.org] On 
Behalf Of Hannes Tschofenig
Sent: Friday, October 14, 2011 5:25 AM
To: OAuth WG
Subject: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues  Proposed 
Resolutions



Hi all,



I had a discussion with Mike and Julian to hear what to discuss the open issues 
with the OAuth Bearer Token draft. Below is a short writeup of my impressions.



1. Error Description



The error description field provides information to the software developer and 
is not meant to be shown to the end user. As such, there is no desire to 
provide internationalization support for this field. Hence, it has a similar 
characteristic as the HTTP 'Reason-Phrase.



http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p1-messaging-latest.html#reason.phrase
 says





The Reason Phrase exists for the sole purpose of providing a textual 
description associated with the numeric status code, out of deference to 
earlier Internet application protocols that were more frequently used with 
interactive text clients. A client SHOULD ignore the content of the Reason 
Phrase.



Reason-Phrase  = *( HTAB / SP / VCHAR / obs-text ) 



We can use something similar for the error description field and even simplify 
it further by omitting HTAB and obs-text:



  error-desc  = error_description = *( SP / VCHAR )



2. Scope



The scope field is yet another item that will not be shown to the user and it 
serves the purpose of an identifier for authorization comparison. So, we don't 
need to have any internationalization support here either.



The suggestion is to re-use the 'token ABNF syntax from the HTTP spec:

http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p1-messaging-latest.html#rfc.section.3.2.3



3. Authorization Request Header Field



Finally, there is the authorization request header field where we have to 
decide how we want to deal with extensions.

The current specification says:



  credentials = Bearer 1*SP ( b64token / #auth-param )



This means that we can have either a base64 opaque blob or a parameter like 
syntax (but not both).



An example of the b64token is



Authorization: Bearer vF9dft4qmT



and an example of the auth-param usage is



Authorization: Bearer t=vF9dft4qmT



With an opaque blob extensibility is limited and for this reason, I guess, Mike 
had provided the additional option of auth-parameter.



If we want to allow extensibility then we have to go for the auth-param 
approach. If we only use the auth-param (without the b64token) then there may 
be an issue with already existing 

Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues Proposed Resolutions

2011-10-14 Thread Eran Hammer-Lahav
Relying on b64token is not enough because you are only restricting the header 
syntax, not the other methods. Also, you are not restricting the server from 
issuing other values, in which case the client will need to figure out how to 
use the header with those values. My point is that you need to explicitly 
define the allowed range for tokens. Saying they must comply with the b64token 
rule is enough, just not enough to leave it implied via the header definition.

EHL

From: Mike Jones [mailto:michael.jo...@microsoft.com]
Sent: Friday, October 14, 2011 9:51 AM
To: Eran Hammer-Lahav; Hannes Tschofenig; OAuth WG
Subject: RE: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues  Proposed 
Resolutions

I am fine with this scope character set restriction also being added to the 
core spec.

As to your second comment, you'll find that the b64token 
definitionhttp://tools.ietf.org/html/draft-ietf-httpbis-p7-auth-16#section-2.1
 already provides a character set restriction (as you suggest is needed).

-- Mike

From: Eran Hammer-Lahav 
[mailto:e...@hueniverse.com]mailto:[mailto:e...@hueniverse.com]
Sent: Friday, October 14, 2011 8:55 AM
To: Mike Jones; Hannes Tschofenig; OAuth WG
Subject: RE: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues  Proposed 
Resolutions

This is not sufficient.

For scope, if you are going to restrict the allowed characters, you must either 
specify how to encode all other values to fit the field, or we must move this 
restriction to the v2 specification so that no encoding is required.

For the token, you need to also define allowed token values so that they will 
fit in the header without encode, or specify an encoding scheme. The MAC token 
restricts token values (called MAC identifier) to %x20-21 / %x23-5B / %x5D-7E 
(any printable ASCII character except for  and \).

EHL


From: oauth-boun...@ietf.orgmailto:oauth-boun...@ietf.org 
[mailto:oauth-boun...@ietf.org]mailto:[mailto:oauth-boun...@ietf.org] On 
Behalf Of Mike Jones
Sent: Friday, October 14, 2011 8:43 AM
To: Hannes Tschofenig; OAuth WG
Subject: Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues  Proposed 
Resolutions


Thanks for the useful discussion and the write-up, Hannes.  For context, Hannes 
and I discussed how to resolve the remaining Bearer spec issues in a manner 
that meets the needs of implementations and will not generate objections during 
the IESG or IETF Last Call reviews.  A few additional comments...



1.  Error Description - Nothing to add to Hannes' write-up.



2.  Scope - I was planning to allow a broader set of ASCII characters than the 
token set, as these characters are inadequate for the use of URIs/URLs as 
scope elements.  In particular, scope elements need to permit the full sets of 
reserved http://tools.ietf.org/html/rfc3986#section-2.2 and unreserved 
http://tools.ietf.org/html/rfc3986#section-2.3 characters in RFC 
3986http://tools.ietf.org/html/rfc3986.  The draft I am working on will say 
that scope is a space separated set of elements, where the elements consist of 
one or more characters from the union of the reserved and unreserved sets.



3.  Authorization Request Header Field - We agreed on the call that we're not 
doing implementers any favors by allowing both the b64token and #auth-param 
syntaxes, and that it is better to specify one or the other.  Since existing 
practice corresponds to the b4token syntax, the choice is clear which to 
specify.  Thus, it was a mistake to introduce the #auth-param choice in draft 
9.  It will be removed in draft 10, which is shortly forthcoming.



-- Mike



-Original Message-
From: oauth-boun...@ietf.orgmailto:oauth-boun...@ietf.org 
[mailto:oauth-boun...@ietf.org]mailto:[mailto:oauth-boun...@ietf.org] On 
Behalf Of Hannes Tschofenig
Sent: Friday, October 14, 2011 5:25 AM
To: OAuth WG
Subject: [OAUTH-WG] draft-ietf-oauth-v2-bearer-09: Open Issues  Proposed 
Resolutions



Hi all,



I had a discussion with Mike and Julian to hear what to discuss the open issues 
with the OAuth Bearer Token draft. Below is a short writeup of my impressions.



1. Error Description



The error description field provides information to the software developer and 
is not meant to be shown to the end user. As such, there is no desire to 
provide internationalization support for this field. Hence, it has a similar 
characteristic as the HTTP 'Reason-Phrase.



http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p1-messaging-latest.html#reason.phrase
 says





The Reason Phrase exists for the sole purpose of providing a textual 
description associated with the numeric status code, out of deference to 
earlier Internet application protocols that were more frequently used with 
interactive text clients. A client SHOULD ignore the content of the Reason 
Phrase.



Reason-Phrase  = *( HTAB / SP / VCHAR / obs-text ) 



We can use

Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-08.txt WGLC comments

2011-10-12 Thread Eran Hammer-Lahav
Not that I will ever use this, but this is really broken way to create a 
protocol. Now is the time to make hard choices and pick one format.

EHL

 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Mike Jones
 Sent: Wednesday, October 12, 2011 11:39 AM
 To: Julian Reschke
 Cc: oauth@ietf.org
 Subject: Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-08.txt WGLC
 comments
 
 One possible syntax is:
 
 Bearer access_token=xyz_-123,more_info=pdq
 
 Ultimately though, the format of the bearer token is outside of the scope of
 the spec, and up to the participants to determine, including whether to use
 b64token syntax or params syntax.
 
   -- Mike
 
 -Original Message-
 From: Julian Reschke [mailto:julian.resc...@gmx.de]
 Sent: Wednesday, October 12, 2011 11:35 AM
 To: Mike Jones
 Cc: Manger, James H; oauth@ietf.org
 Subject: Re: [OAUTH-WG] draft-ietf-oauth-v2-bearer-08.txt WGLC
 comments
 
 On 2011-10-12 20:26, Mike Jones wrote:
  Because b64token is existing practice
   ...
 
 include-disclaimer-about-maturity-of-internet-drafts/
 
 Anyway, how do you then send credentials that include the bearer token
 plus additional parameters? Example, please.
 
 Best regards, Julian
 
 ___
 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] Possible alternative resolution to issue 26

2011-10-02 Thread Eran Hammer-Lahav
I agree with this analysis and its conclusions.

EHL

From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf Of 
Manger, James H
Sent: Sunday, October 02, 2011 5:51 AM
To: Mike Jones; oauth@ietf.org
Subject: Re: [OAUTH-WG] Possible alternative resolution to issue 26

The best solution is to drop the scope field from the WWW-Authenticate: 
Bearer ... response header. scope is relevant to an OAuth2-core flow, not to 
presenting a bearer token. scope could make sense in a WWW-Authenticate: 
OAuth2 ... response header as long as other necessary details such as an 
authorization URI were also provided. Dropping scope and error_description 
(as the error should be described in the response body) would eliminate these 
encoding problems.


If the group really wants to keep scope, I don't think RFC 5987 is a good 
solution. RFC 5987 might have been ok for adding internationalization support 
to long-standing ASCII-only fields in a world of multiple character sets - but 
none of that applies here. Having to change the field name from scope to 
scope* when you have a non-ASCII value is the biggest flaw.

The simplest solution is to explicitly restrict scope values to some subset of 
printable ASCII in OAuth2 Core. Not being able to support Unicode in a new 
protocol is slightly disappointing, but I can live with it.

My preferred escaping solution would be a JSON string, UTF-8 encoded: json.org, 
RFC 4627; value in double-quotes; slash is the escape char; supports Unicode; 
eg scope=coll\u00E8gues. This is backward-compatible with HTTP's 
quoted-string syntax. It is forward-compatible with UTF-8 HTTP headers (if that 
occurs). JSON is well-supported (and required for other OAuth2 exchanges). [I 
might suggest json-string to the httpbis group as a global replacement for 
quoted-string (or at least as a recommendation for new fields).]

--
James Manger

From: oauth-boun...@ietf.orgmailto:oauth-boun...@ietf.org 
[mailto:oauth-boun...@ietf.org]mailto:[mailto:oauth-boun...@ietf.org] On 
Behalf Of Mike Jones
Sent: Friday, 30 September 2011 4:53 AM
To: oauth@ietf.orgmailto:oauth@ietf.org
Subject: [OAUTH-WG] Possible alternative resolution to issue 26

There seems to now be more working group interest in representing non-ASCII 
characters in scope strings than had previously been in evidence.  If we decide 
to define a standard representation for doing so, using RFC 
5987http://tools.ietf.org/html/rfc5987 (Character Set and Language Encoding 
for Hypertext Transfer Protocol (HTTP) Header Field Parameters) seems to be the 
clear choice.  I'd be interested in knowing how many working group members are 
in favor of either:

1.  Using RFC 5987 encoding for the scope parameter.
2.  Continuing to specify no non-ASCII encoding for scope parameter values.

As a related issue, some working group members have objected to specifying 
UTF-8 encoding of the error_description value, requesting the use of RFC 5987 
encoding instead.  I'd also be interested in knowing how many working group 
members are in favor of either:

A.  Using RFC 5987 encoding for the error_description parameter.
B.  Continuing to specify UTF-8 encoding for the error_description parameter.

(As editor, I would make the observation that if we choose RFC 5987 encoding 
for either of these parameters, it would be logical to do so for the other one 
as well.)

In the interest of finishing the specification in a way that meets everyone's 
needs,
-- Mike

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


Re: [OAUTH-WG] Possible alternative resolution to issue 26

2011-09-30 Thread Eran Hammer-Lahav
Two observations:


-  I doubt anyone is going to implement RFC 5987 in most OAuth 2.0 
libraries, mostly because it offers little value and,

-  No one really needs scope values other than limited ASCII or URIs

There should not be any interoperability issues with the error_description 
value as long as it is valid for HTTP transport because it is for debugging 
only. If a provider returns some other character set than plain ASCII in there, 
it is safe to assume the developer will figure it out.

The fact that the v2 spec allows a wide range of characters in scope was 
unintentional. The design was limited to allow simple ASCII strings and URIs. 
Crossing the boundaries of v2 into the bearer spec is the first place where 
this flexibility has been tested.

Scope are machine-readable strings and URIs already provide a way to include 
internationalization. OAuth parameters are all in English and it is reasonable 
to expect most providers to craft their scope values within those undeclared 
boundaries.

I am not expressing a strong opinion because I don't think this is a real 
issue. Internationalization matters when it comes to end-user interaction, not 
developers. But the most consistent choice based on the past 2 years of use 
cases and examples is to simply limit the scope character-set in v2 and avoid 
all this.

EHL


From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf Of Mike 
Jones
Sent: Friday, September 30, 2011 8:20 AM
To: oauth@ietf.org
Subject: Re: [OAUTH-WG] Possible alternative resolution to issue 26

Thus far, I've received no responses preferring 1 or 2 or preferring A or B.  
Could people please weigh in so that the working group has data to base a 
decision on to close this issue?

Thanks,
-- Mike

From: oauth-boun...@ietf.orgmailto:oauth-boun...@ietf.org 
[mailto:oauth-boun...@ietf.org]mailto:[mailto:oauth-boun...@ietf.org] On 
Behalf Of Mike Jones
Sent: Thursday, September 29, 2011 11:53 AM
To: oauth@ietf.orgmailto:oauth@ietf.org
Subject: [OAUTH-WG] Possible alternative resolution to issue 26

There seems to now be more working group interest in representing non-ASCII 
characters in scope strings than had previously been in evidence.  If we decide 
to define a standard representation for doing so, using RFC 
5987http://tools.ietf.org/html/rfc5987 (Character Set and Language Encoding 
for Hypertext Transfer Protocol (HTTP) Header Field Parameters) seems to be the 
clear choice.  I'd be interested in knowing how many working group members are 
in favor of either:

1.  Using RFC 5987 encoding for the scope parameter.
2.  Continuing to specify no non-ASCII encoding for scope parameter values.

As a related issue, some working group members have objected to specifying 
UTF-8 encoding of the error_description value, requesting the use of RFC 5987 
encoding instead.  I'd also be interested in knowing how many working group 
members are in favor of either:

A.  Using RFC 5987 encoding for the error_description parameter.
B.  Continuing to specify UTF-8 encoding for the error_description parameter.

(As editor, I would make the observation that if we choose RFC 5987 encoding 
for either of these parameters, it would be logical to do so for the other one 
as well.)

In the interest of finishing the specification in a way that meets everyone's 
needs,
-- Mike

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


Re: [OAUTH-WG] Authorization code use in draft-ietf-oauth-v2-21

2011-09-20 Thread Eran Hammer-Lahav


 On Sep 9, 2011, at 15:31, André DeMarre andredema...@gmail.com
 wrote:
 
  Greetings Everyone,
 
  I hope the draft isn't too far along for these comments.
  (draft-ietf-oauth-v2-21)
 
  1. AUTHORIZATION CODE RESTRICTIONS
 
  The specification (particularly Section 4.1) does not say if the
  authorization server may or may not allow an authorization code to be
  used more than once in exchange for an access token. (Section 4.1.3)
 
  With this ambiguity, some authorization server implementations might
  allow authorization codes to be reused by the client (whether
  intentionally or not). I don't see any benefit in allowing this and
  think it should be forbidden for several reasons.
 
  Allowing this enables a scenario where an authorization code may be
  reused when the client should use the refresh token instead. The
  refresh token has more desirable security properties.
 
  The usefulness of authorization codes should be restricted wherever
  possible because they are revealed to resource owners and can be sent
  over unsecure connections when the client does not require TLS on its
  redirection URI. These properties combined with the possibility that
  the authorization code flow may be used by public clients might open
  more severe attack vectors.
 
  I think it should be clearly stated that the authorization server MUST
  NOT issue more than one access token per authorization code grant. An
  authorization code should be discarded after its first use and new
  access tokens should only be issued when exchanged for refresh tokens.

Tweaked the code description slightly:

REQUIRED. The authorization code generated by the authorization 
server. The
authorization code MUST expire shortly after it is issued to 
mitigate the risk of
leaks. A maximum authorization code lifetime of 10 minutes is 
RECOMMENDED. The
client MUST NOT use the authorization code more than once. If 
an authorization code
is used more than once, the authorization server MUST deny the 
request and SHOULD
attempt to revoke all tokens previously issued based on that 
authorization code.
The authorization code is bound to the client identifier and 
redirection URI.

  2. AUTHORIZATION CODE VS. TOKEN?
 
  Much less important, and please forgive me if this has already been
  discussed, but why isn't the authorization code called an
  authorization token? It is similar to the refresh token in that it can
  be presented in exchange for an access token at the token endpoint. I
  see it as another type of token and wonder if the language used should
  perhaps reflect that as well.

It's bad enough the refresh token uses 'token'. Adding another 'token' will be 
too confusing.

  3. GRAMMAR CORRECTION IN SECTION 10.12
 
  In Section 10.12 paragraph three it says (e.g. a hash of the session
  cookie used to authentication the user-agent). This should say
  authenticate instead of authentication.

Thanks,

EHL


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


Re: [OAUTH-WG] Typo in Sec 5.1

2011-09-20 Thread Eran Hammer-Lahav
Thanks. Fixed in a few other places too.

EHL

From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf Of Paul 
Madsen
Sent: Monday, September 12, 2011 1:30 PM
To: oauth@ietf.org
Subject: [OAUTH-WG] Typo in Sec 5.1


scope

 OPTIONAL.  The scope of the access request as described by

 Section 
3.3http://tools.ietf.org/html/draft-ietf-oauth-v2-21#section-3.3.



presumably this should be 'access token'



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


Re: [OAUTH-WG] Typos and language in -21

2011-09-20 Thread Eran Hammer-Lahav
Thanks.

EHL

 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Niv Steingarten
 Sent: Monday, September 12, 2011 2:01 PM
 To: OAuth WG
 Subject: [OAUTH-WG] Typos and language in -21
 
 In section 10.12 (CSRF):
 
 5th paragraph: A CSRF attack against the against the authorization server's
 authorization endpoint
 
 One against the is redundant.
 
 4th paragraph: The binding value enables the client to validate the validity 
 of
 the request by matching the binding value to the user-agent's authenticated
 state.
 
 The phrase validate the validity of the request sounds a bit awkward in
 my opinion. I'd personally go with either establish the validity of the
 request or simply validate the request.
 
 
 -- Niv
 ___
 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] Section 4.3. Resource Owner Password Credentials: Invalid Credentials Error Handling

2011-09-20 Thread Eran Hammer-Lahav
'invalid_grant'. Added (e.g.) to the error code to make it more explicit.

EHL

 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Colm Divilly
 Sent: Tuesday, September 13, 2011 9:08 AM
 To: oauth@ietf.org
 Subject: [OAUTH-WG] Section 4.3. Resource Owner Password Credentials:
 Invalid Credentials Error Handling
 
 Apologies if this has been covered before, a cursory search of the archives
 and issue tracker didn't turn up anything.
 
 What is the expected error response when performing a Resource Owner
 Password Credentials flow, if the resource owner provides incorrect
 credentials?
 
  From reading the spec it looks like the expectation is that a response like 
 the
 following should be generated:
 
   HTTP/1.1 400 Bad Request
   Content-Type: application/json;charset=UTF-8
   Cache-Control: no-store
   Pragma: no-cache
 
   {
 error:invalid_request
   }
 
 Which is not terribly helpful for a user-agent trying to determine that it is 
 the
 user supplied credentials at fault (and therefore be able to re-prompt the
 user for credentials). Perhaps something like the following would be more
 useful:
 
   HTTP/1.1 400 Bad Request
   Content-Type: application/json;charset=UTF-8
   Cache-Control: no-store
   Pragma: no-cache
 
   {
 error:invalid_resource_owner_credentials
   }
 
 A bit verbose perhaps, any alternative suggestions?
 
 Regards,
 Colm Divilly
 ___
 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] OAuth 2.0 v21 Nits and Typos

2011-09-20 Thread Eran Hammer-Lahav
Thanks.

 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Anganes, Amanda L
 Sent: Monday, September 19, 2011 8:23 AM
 To: oauth@ietf.org
 Subject: [OAUTH-WG] OAuth 2.0 v21 Nits and Typos
 
 Lots of minor grammar and wording catches here. I apologize if any of these
 were already brought up and addressed.
 
 1.2.3, second paragraph: When issuing an implicit grant, the authorization
 server does not authenticate the client and in some cases, the client identity
 can be verified... should be When issuing an implicit grant, the 
 authorization
 server does not authenticate the client. In some cases, the client identity 
 can
 be verified...

 1.5, first paragraph. Last sentence should be changed to Issuing a refresh
 token is optional. If an authorization server issues a refresh token, it is
 included when issuing an access token.

 2.1, definition of public client: last sentence ends with via any other mean
 which should be via any other means.

 2.1, definition of native applications: On the other hand, dynamically issued
 credentials such as access tokens or refresh tokens, can receive an
 acceptable level of protection should be On the other hand, dynamically
 issued credentials such as access tokens or refresh tokens can receive an
 acceptable level of protection (final comma is unnecessary).

 3.1, second paragraph. Add a comma after beyond the scope of this
 specification, so it reads The means through which the client obtains the
 location of the authorization endpoint are beyond the scope of this
 specification, but the location is typically provided in the service
 documentation.
 
 3.2.1, first sentence. Unnecessary comma between requirements and
 MUST; should read Confidential clients, clients issued client credentials, 
 or
 clients assigned other authentication requirements MUST authenticate...

 4.1, section (E): last sentence is missing a subject. If valid, responds back
 with an... should read If valid, the authorization server responds back with
 an...

 4.1.2 and 4.1.2.1, also 4.2.2 and 4.2.2.1, state description: last sentence is
 missing a MUST. Should read REQUIRED if the state parameter was present
 in the client authorization request. The state parameter MUST be set to the
 exact value received from the client.

 4.1.3, redirect_uri description: Change REQUIRED, if the redirect_uri
 parameter was included in the authorization request described in Section
 4.1.1, and their values MUST be identical to REQUIRED, if the redirect_uri
 parameter was included in the authorization request as described in Section
 4.1.1. If included, the two values MUST be identical.

 4.1.3, final paragraph (The authorization server MUST: ...). Is any 
 additional
 normative language required for lists such as this in order to specify that 
 the
 AS must do ALL of the items in the list? Similar MUST lists appear elsewhere
 throughout the rest of the document.

The entire list is required.

 Also, final bullet should be reworded; suggest ensure that the redirect_uri
 parameter is present if the redirect_uri parameter was included in the initial
 authorization request as described in Section 4.1.1, and if included ensure
 that their values are identical.
 
 4.2, first paragraph: clarify that implicit grants can be used only for access
 tokens by including the word only here: The implicit grant type is used to
 obtain access tokens only...

That might not be accurate with extensions.

 4.3.2, paragraph after term parameter descriptions: If the client type is
 confidential or was issued client credentials should be reworded to If the
 client type is confidential or the client was issued client credentials.
 
 9, bullets following second paragraph: Change this to a definition list format
 instead of a bulleted list.

This is not definitions.

 9, final bullet following when choosing between an external or embedded
 user-agent...: Last sentence starts Embedded user-agent educate... but
 should be Embedded user-agents educate...
 
 10.2, second paragraph: last sentence is a fragment. Reword to For
 example, the authorization server should engage the resource owner to
 assist in identify the client and its origin.
 
 10.5, second paragraph, first sentence: extraneous comma between
 authorization server and is. Should be ...verify that the resource owner
 who granted authorization at the authorization server is the same resource
 owner...
 
 10.6, last paragraph, first sentence: extraneous comma between
 authorization code and is the same. Should be ... the authorization
 server MUST ensure that the redirection URI used to obtain the
 authorization code is the same as the redirection URI provided ...
 Last sentence should be reworded; suggest The authorization server MUST
 require public clients and SHOULD require confidential clients to register 
 their
 redirection URIs. If a redirection URI is provided in the authorization 
 request,
 the authorization server 

Re: [OAUTH-WG] secdir review of draft-ietf-oauth-v2

2011-09-20 Thread Eran Hammer-Lahav
(+OAuth WG, -everyone else)

Thanks Leif.

See comments inline. Whatever issues are still open will be addressed along 
with the rest of the IETF LC feedback.

EHL


 -Original Message-
 From: Leif Johansson [mailto:le...@sunet.se]
 Sent: Monday, September 12, 2011 11:31 AM

 ** General observations:

 POST and/or GET

 Examples are sometimes POST and sometimes GET. In many cases it is not
 clear to me from the surrounding text if both POST and GET are allowed
 or if only one is mandated. Illustrating with both a GET _and_ POST
 example in the cases where both are supported would help or make the
 method explicit in the text before the example.

 The P-word

 The term 'password' is sprinkled throughout the document, sometimes as
 in client password or resource owner password credentials and I
 suspect that sometimes it is password as in 'an example of a
 credential type' and in other cases it is password as in 'plain old
 password'. This needs to be cleared up throughout (I've included some 
 examples below).

 Normative Language

 I've often found myself wanting more normative language often to
 replace existing but less precise text. I've called out some important cases 
 below.

 Unknown parameters

 The sentence The client SHOULD ignore unrecognized response
 parameters
 occurs in several places. First of all I would argue that this has to
 be a MUST if you want to be able to guarantee extensibility. Secondly
 there are some error responses that are triggered by unsupported
 request parameters. This seems like an inconsistency.

 ** Specifics

 1.1 Roles

 Forward references to the sections where the roles are defined would
 improve readability.

What sections? That's the only place these roles are defined.

 As an illustration of an alternative model for the authorization
 server maybe an informative reference to UMA would be illustrative here.

A reference to UMA would be confusing in this document.

 1.2 Protocol Flow

 (A) talks about 'an intermediary such as an authorization server.' it
 isn't clear it me if this refers to a separate authorization server or
 if it is the same authorization server that is referenced in (B).

Changed to:

  (A) The client requests authorization from the resource owner. 
The authorization request
  can be made directly to the resource owner (as shown), or 
preferably indirectly via
  the authorization server as an intermediary.

 1.3.3 Resource Owner Password Credentials

 When I first read this I thought - why not talk about Resource Owner
 Credentials - in fact there is a parenthesis there (e.g a username
 and password) that seems to indicate that other credentials could be 
 supported.

 This needs to be cleared up. Either its username and password and
 nothing else or there is a way to support things like Negotiate or
 X.509-based credentials in which case it should really be Resource
 Owner Credentials with no reference to passwords other than as as an
 example of one possible credential type.

Changed to:

(i.e. username and password)

This is explicitly just for username and password. Other types require an 
extension.

 1.4 Access Token

 first paragraph: The string is usually opaque. This should be
 reformulated as normative language. In fact I would have liked
 guidance on generating those tokens (which has been brought up on the
 list) possibly as part of an implementation-guide.

There is not requirement for the string to be opaque, but the general 
architecture assumes it is. Otherwise, please suggest language.

 1.5 Refresh Token

 Why is the refresh token not simply treated as an access token for the
 access token resource in the authorization server? This would seem to
 simplify the model a bit by removing a type of token whose semantic
 (at least to this
 reviewer) is a duplication of a normal access token for a particular
 type of resource.

Simpler architecture but probably more confusing to many developers.

 Also in the first paragraph: (access tokens may have a shorter
 lifetime and fewer permissions. Why not try to write normative
 language here - there are security implications of allowing a refresh
 token to get more permissions
 (say) than the original access token.

This was discussed before and we could not reach consensus.

 2.1 Client types

 I find the terminology public/confidential somewhat counter-intuitive.
 An app you have on your personal device is 'public' while a shared
 cloud service is 'confidential'...hmm...

These are the best terms we could come up with. Not intuitive but well defined.

 This section also lacks normative language which isn't good. There
 should be language defining the behavior of public and confidential
 client aswell as the three profiles.

 For instance under native application we have It is assumed that any
 client authentication credentials included in the application can be
 extracted. This should really be normative language. Some of what I
 am 

Re: [OAUTH-WG] Fwd: secdir review of draft-ietf-oauth-v2

2011-09-20 Thread Eran Hammer-Lahav
If the server issues clients with password credentials it MUST support HTTP 
Basic (this is the flip side of 'the client MAY use HTTP Basic') and should 
only support the client_secret parameter if it has clients incapable of using 
HTTP Basic.

This language has been tweaked to reach a delicate balance. I'm not inclined to 
touch it.

EHL

 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of André DeMarre
 Sent: Wednesday, September 14, 2011 5:25 PM
 To: OAuth WG
 Subject: Re: [OAUTH-WG] Fwd: secdir review of draft-ietf-oauth-v2

 I agree that stating Clients in possession of a client password MAY use the
 HTTP Basic authentication scheme [Section 2.3.1 paragraph 1] implies that
 authorization servers MUST support HTTP basic authentication, but such is
 never asserted. Instead, it says The authorization server MAY accept any
 form of client authentication meeting its security requirements. [Section 2.3
 paragraph 1] This is somewhat contradictory.

 I can understand that requiring a specific method of client authentication is
 desirable for maximum interoperability, but this would be problematic for
 authorization server implementations that wish to enforce stronger security
 than HTTP Basic. Such implementations would be forced to deviate from the
 specification. In particular, implementations which choose MAC access
 tokens instead of Bearer tokens may wish to add a layer of security to
 defend against improperly configured TLS connections, or to protect clients
 who connect to the wrong server.
 [http://hueniverse.com/2010/09/oauth-bearer-tokens-are-a-terrible-idea/]
 Such implementations will also find HTTP Basic undesirable for client
 authentication. To require a form of client authentication that isn't 
 universally
 sufficient could become a source of criticism and deter adoption of OAuth
 2.0.

 I think the best solution is to clarify section 2.3.1 as follows:
 ---
 Clients in possession of client credentials MAY use any form of authentication
 scheme supported by the authorization server.
 ---
 And then follow with the existing example that demonstrates HTTP Basic.

 Regards,
 Andre DeMarre

 On Tue, Sep 13, 2011 at 4:52 PM, Greg Brail g...@apigee.com wrote:
  I would like to add my support to the comments below on section 2.3,
  specifically 2.3.1.
 
  It is clear to me from reading section 2.3 that clients MAY use HTTP
  basic, or they MAY include client_id and client_secret in the request
  body -- however, the latter is not recommended.
 
  It is not clear what the authorization server MUST support. IMHO, that
  leads us to a situation in which there is no universally-agreed set of
  authentication technology that all programmers can assume is going to
  work, which means that interoperability will be difficult as some
  authorization servers will support Basic, others will support the
  request body, and others will do neither in favor of something else.
 
  I would prefer that we make both HTTP basic AND the request body
  mechanisms in this section both required on the server side, thus
  giving the client the option of choosing one or the other. That would
  mean re-writing the beginning of section 2.3.1 as shown below.
 
  If I have missed other discussion on this topic I apologize. If there
  is already consensus to make the message body authentication
  optional rather than required for the authorization SERVER then I
  would still recommend that we make HTTP Basic a MUST in order to allow
  easier interop.
 
  Proposed change to 2.3.1:
 
  
 
  The authorization server MUST support the HTTP Basic authentication
  scheme as defined in [RFC2617] as a way to identify clients. The
  client identifier is used as the username, and the client password is
  used as the password.
 
  For example (extra line breaks are for display purposes only):
 
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
 
  Alternatively, the authorization server MUST also allow the client to
  include the client credentials in the request body using the following
  parameters:
 
client_id
  REQUIRED.  The client identifier issued to the client during
  the registration process described by Section 2.2.
client_secret
  REQUIRED.  The client secret.  The client MAY omit the
  parameter if the client secret is an empty string.
 
  Clients in possession of a client password MAY use either mechanism in
  order to authenticate with the authorization server. However,
  including the client credentials in the request body using the two
  parameters is NOT RECOMMENDED, and should be limited to clients unable
  to directly utilize the HTTP Basic authentication scheme (or other
  password-based HTTP authentication schemes).
 
   (Rest of section remains as-is with the paragraph beginning For
  example...)
 
  Gregory Brail   |   Technology   |   Apigee   |   +1-650-937-9302
 
  On Mon, Sep 12, 2011 at 2:02 PM, Stephen Farrell
  

Re: [OAUTH-WG] Fwd: secdir review of draft-ietf-oauth-v2

2011-09-20 Thread Eran Hammer-Lahav
This will go into the IETF LC feedback loop.

EHL

 -Original Message-
 From: André DeMarre [mailto:andredema...@gmail.com]
 Sent: Tuesday, September 20, 2011 7:12 PM
 To: Eran Hammer-Lahav; OAuth WG
 Subject: Re: [OAUTH-WG] Fwd: secdir review of draft-ietf-oauth-v2

  If the server issues clients with password credentials it MUST support HTTP
 Basic (this is the flip side of 'the client MAY use HTTP Basic') and should 
 only
 support the client_secret parameter if it has clients incapable of using HTTP
 Basic.

 Very well. Without changing the meaning, I think the community would be
 well served by appending paragraph 2 of Section 2.3 as follows:
 
Confidential clients are typically issued (or establish) a set of
client credentials used for authenticating with the authorization
server (e.g. password, public/private key pair).  If clients are
issued passwords, the authorization server MUST support the HTTP
Basic authentication scheme as defined in [RFC2617] and described
by Section 2.3.1.
 
 This helps to communicate that authorization servers are only required to
 support HTTP Basic if they issue client passwords.

 Andre

 On Tue, Sep 20, 2011 at 3:20 PM, Eran Hammer-Lahav
 e...@hueniverse.com wrote:
  If the server issues clients with password credentials it MUST support HTTP
 Basic (this is the flip side of 'the client MAY use HTTP Basic') and should 
 only
 support the client_secret parameter if it has clients incapable of using HTTP
 Basic.
 
  This language has been tweaked to reach a delicate balance. I'm not
 inclined to touch it.
 
  EHL
 
  -Original Message-
  From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On
  Behalf Of André DeMarre
  Sent: Wednesday, September 14, 2011 5:25 PM
  To: OAuth WG
  Subject: Re: [OAUTH-WG] Fwd: secdir review of draft-ietf-oauth-v2
 
  I agree that stating Clients in possession of a client password MAY
  use the HTTP Basic authentication scheme [Section 2.3.1 paragraph 1]
  implies that authorization servers MUST support HTTP basic
  authentication, but such is never asserted. Instead, it says The
  authorization server MAY accept any form of client authentication
  meeting its security requirements. [Section 2.3 paragraph 1] This is
 somewhat contradictory.
 
  I can understand that requiring a specific method of client
  authentication is desirable for maximum interoperability, but this
  would be problematic for authorization server implementations that
  wish to enforce stronger security than HTTP Basic. Such
  implementations would be forced to deviate from the specification. In
  particular, implementations which choose MAC access tokens instead of
  Bearer tokens may wish to add a layer of security to defend against
  improperly configured TLS connections, or to protect clients who connect
 to the wrong server.
  [http://hueniverse.com/2010/09/oauth-bearer-tokens-are-a-terrible-ide
  a/] Such implementations will also find HTTP Basic undesirable for
  client authentication. To require a form of client authentication
  that isn't universally sufficient could become a source of criticism
  and deter adoption of OAuth 2.0.
 
  I think the best solution is to clarify section 2.3.1 as follows:
  ---
  Clients in possession of client credentials MAY use any form of
  authentication scheme supported by the authorization server.
  ---
  And then follow with the existing example that demonstrates HTTP Basic.
 
  Regards,
  Andre DeMarre
 
  On Tue, Sep 13, 2011 at 4:52 PM, Greg Brail g...@apigee.com wrote:
   I would like to add my support to the comments below on section
   2.3, specifically 2.3.1.
  
   It is clear to me from reading section 2.3 that clients MAY use
   HTTP basic, or they MAY include client_id and client_secret in the
   request body -- however, the latter is not recommended.
  
   It is not clear what the authorization server MUST support. IMHO,
   that leads us to a situation in which there is no
   universally-agreed set of authentication technology that all
   programmers can assume is going to work, which means that
   interoperability will be difficult as some authorization servers
   will support Basic, others will support the request body, and others will
 do neither in favor of something else.
  
   I would prefer that we make both HTTP basic AND the request body
   mechanisms in this section both required on the server side, thus
   giving the client the option of choosing one or the other. That
   would mean re-writing the beginning of section 2.3.1 as shown below.
  
   If I have missed other discussion on this topic I apologize. If
   there is already consensus to make the message body
   authentication optional rather than required for the authorization
   SERVER then I would still recommend that we make HTTP Basic a MUST
   in order to allow easier interop.
  
   Proposed change to 2.3.1:
  
   
  
   The authorization server MUST support the HTTP Basic authentication

Re: [OAUTH-WG] Fwd: New Version Notification for draft-lodderstedt-oauth-revocation-03.txt

2011-09-19 Thread Eran Hammer-Lahav
Just a general note: you don't need every spec to become a working group item. 
If you get an area director to sponsor your draft, you can push it through 
sooner as an individual submission. Sometimes you don't even need sponsorship.

I'm not saying this out of any objection to the WG taking on this work, just 
that I don't see a reason to wait. If you feel this simple document is ready 
and has consensus, you should find a sponsor and move to IETF LC.

EHL


From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf Of 
Marius Scurtescu
Sent: Monday, September 19, 2011 11:48 AM
To: Chuck Mortimore
Cc: OAuth WG
Subject: Re: [OAUTH-WG] Fwd: New Version Notification for 
draft-lodderstedt-oauth-revocation-03.txt

+1
On Fri, Sep 16, 2011 at 1:06 PM, Chuck Mortimore 
cmortim...@salesforce.commailto:cmortim...@salesforce.com wrote:
If it's not already implicit by our implementation, I'm voicing our support for 
this becoming a working group item.

- cmort

On Sep 16, 2011, at 12:31 PM, Torsten Lodderstedt 
tors...@lodderstedt.netmailto:tors...@lodderstedt.net wrote:
Hi all,

I just published a new revision of the token revocation draft. We added JSONP 
support (thanks to Marius) and aligned the text with draft 21 of the core spec.

We would like to bring this draft forward as working group item (once the WG is 
ready). We think its relevance is illustrated by the fact that this draft (or 
its predecessor) has already been implemented by Google, Salesforce, and 
Deutsche Telekom.

regards,
Torsten.

 Original-Nachricht 
Betreff:

New Version Notification for draft-lodderstedt-oauth-revocation-03.txt

Datum:

Fri, 16 Sep 2011 12:20:14 -0700

Von:

internet-dra...@ietf.orgmailto:internet-dra...@ietf.org

An:

tors...@lodderstedt.netmailto:tors...@lodderstedt.net

CC:

sdro...@gmx.demailto:sdro...@gmx.de, 
tors...@lodderstedt.netmailto:tors...@lodderstedt.net, 
mscurte...@google.commailto:mscurte...@google.com



A new version of I-D, draft-lodderstedt-oauth-revocation-03.txt has been 
successfully submitted by Torsten Lodderstedt and posted to the IETF repository.



Filename:draft-lodderstedt-oauth-revocation

Revision:03

Title:   Token Revocation

Creation date:   2011-09-16

WG ID:   Individual Submission

Number of pages: 6



Abstract:

   This draft proposes an additional endpoint for OAuth authorization

   servers for revoking tokens.









The IETF Secretariat
___
OAuth mailing list
OAuth@ietf.orgmailto: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] Draft 20 last call comment (Resource Owner Impersonation)

2011-09-14 Thread Eran Hammer-Lahav
Is this malicious piece of software external a native application either past 
of a native client or external to the browser?

EHL

 -Original Message-
 From: Torsten Lodderstedt [mailto:tors...@lodderstedt.net]
 Sent: Wednesday, September 14, 2011 6:51 AM
 To: Eran Hammer-Lahav
 Cc: Niv Steingarten; oauth@ietf.org
 Subject: RE: [OAUTH-WG] Draft 20 last call comment (Resource Owner
 Impersonation)
 
 Hi Eran,
 
  As far as I understood, in a textbook CSRF attack the attacker would
  create his own requests in order to abuse a user's session. This can
  be prevented by utilizing standard CSRF coutermeasures (page token,
  nounce, signature as parameter on every request URL), which bind URLs
  to a certain session.
 
 A textbook CSRF attack is when an attacker constructs a URI and then
 manipulate a user-agent with an active session to call that. In the
 simplest example, an attacker constructs a URI that transfers a
 million dollars from the current account to its, then tricks the user
 to click on that link or automatically redirects the user to that URI.
  Because the user is already signed in and has an active session token,
 the request goes through.
 
 To prevent it, the request URI must include an artifact that binds the
 request to the active session. Since the attacker has no way of
 accessing the session information, it cannot construct as a URI. In
 practice, this means adding a hidden form parameter to the button with
 some hash of the session information that the server can verify.
 
 So I would conclude we have the same understanding of what CSRF means.
 
  But why should the attacker create requests et all? All he needs is
  already provided by the authorization server themselves. The
  malicious client can download the HTML pages comprising the
  authorization flow from the authz server and use the embedded URLs to
  issue the requests which normaly would have been issued by the
  resource owner herself (using the use agent indeed). It's more or
  less the push on a I agree
  button we are talking about. The authorization server may add a page
  token to the respective form URL. But it does not matter since the
  client just uses the authz server manufactured URL to post the form.
 
 Of course it matters.
 
 The only way the attacker can get access is by calling the 'I agree'
  button action via an active user session. The attacker cannot access
 the hidden form value with the session hash (or whatever the server is
 using for CSRF protection). So whatever URI it constructs will not work
 when called with the active user session.
 
 My point is: the attacker in the threat I'm trying to describe does not need 
 to
 create any URL since it just remote controls the user-agent. The malicous
 code runs outside of the browser and just uses the URLs provided by the
 authz server. Yes, there need to be a session. No, the attacker does not
 need to inject any URL he made up.
 
  So let's assume the attacker has to programmatically handle HTML
  forms the authorization server delivers to the user agent. As you
  correctly pointed out, the pre-requisite for such an attack to
  succeed is that the resource owner must be authenticated somehow,
  e.g. based on a session cookie. Which also means, we are talking
  about clients running on the victim's device, within the user agent
  or as native app.
 
  I see the following possible scenarios:
 
  1) external system browser - The app could utilize an existing
  session within the system browser on the victim's device. It could
  then remote control a browser window, e.g. using low-level operating
  system messages (send mouse click) or component techniques such as
  ActiveX. There are tools available to create macros which
  automatically control and obtain data from such applications. So this
  should be feasible.
 
  2) internal browser (cross-browser cookies) - If the authorization
  server uses cross-browser cookie techniques, such as flash cookies,
  the attacker could instantiate an internal (invisible) browser and
  try to utilize a session associated with such a cookie. I assume
  controlling such a browser instance will be even simpler then in (1).
 
  3) internal browser (silent authz flow) - This is a scenario where
  the attacker is unable to abuse an existing session on the device. It
  could instead create an internal browser and perform an authorization
  flow with the resource owner for one particular scope. Using the same
  browser instance and based on the cookies obtained in the first run,
  it could silently perform additional authorization flows for other
  scopes.
 
  4) internal browser (non-interactive authentication methods) - There
  are authentication methods available w/o the need for
  user-interaction, for examples SIM card authentication or
  certificate-based authentication.
  The attacker could utilize an internal, invisible browser instance in
  combination with such an authentication method in order to perform

Re: [OAUTH-WG] Nit: Language in section 1.1

2011-09-14 Thread Eran Hammer-Lahav
I have no objection, but much clearer? :-)

EHL

 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Justin Richer
 Sent: Wednesday, September 14, 2011 6:04 AM
 To: Greg Brail
 Cc: oauth@ietf.org
 Subject: Re: [OAUTH-WG] Nit: Language in section 1.1
 
 +1, this wording is much clearer to me, too
 
  -- justin
 
 On Tue, 2011-09-13 at 19:25 -0400, Greg Brail wrote:
  This part of section 1.1 is confusing to me and I stumble whenever I
  read it – I see that Brian Eaton suggested looking at it a while back
  but I don’t think it got changed:
 
 
 
  “OAuth includes four roles working together to grant and provide
 
 access to protected resources - access restricted resources
  requiring
 
 authentication:”
 
 
 
  I would suggest something simpler, such as:
 
 
 
  “OAuth includes four roles that work together to grant and provide
  access to protected resources that require authentication.”
 
 
 
 
 
  Gregory Brail   |   Technology   |   Apigee   |   +1-650-937-9302
 
 
 
 
 
 
 ___
 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] Draft 20 last call comment (Resource Owner Impersonation)

2011-09-14 Thread Eran Hammer-Lahav
I suggest we address this particular scenario in the thread model document.

EHL

 -Original Message-
 From: Torsten Lodderstedt [mailto:tors...@lodderstedt.net]
 Sent: Wednesday, September 14, 2011 7:26 AM
 To: Eran Hammer-Lahav
 Cc: Niv Steingarten; oauth@ietf.org
 Subject: RE: [OAUTH-WG] Draft 20 last call comment (Resource Owner
 Impersonation)
 
 It is a native app and it is external wrt the browser.
 
 regards,
 Torsten.
 
 On Wed, 14 Sep 2011 06:59:47 -0700, Eran Hammer-Lahav wrote:
  Is this malicious piece of software external a native application
  either past of a native client or external to the browser?
 
  EHL
 
  -Original Message-
  From: Torsten Lodderstedt [mailto:tors...@lodderstedt.net]
  Sent: Wednesday, September 14, 2011 6:51 AM
  To: Eran Hammer-Lahav
  Cc: Niv Steingarten; oauth@ietf.org
  Subject: RE: [OAUTH-WG] Draft 20 last call comment (Resource Owner
  Impersonation)
 
  Hi Eran,
 
   As far as I understood, in a textbook CSRF attack the attacker
  would
   create his own requests in order to abuse a user's session. This
  can
   be prevented by utilizing standard CSRF coutermeasures (page
  token,
   nounce, signature as parameter on every request URL), which bind
  URLs
   to a certain session.
 
  A textbook CSRF attack is when an attacker constructs a URI and
  then
  manipulate a user-agent with an active session to call that. In the
  simplest example, an attacker constructs a URI that transfers a
  million dollars from the current account to its, then tricks the
  user
  to click on that link or automatically redirects the user to that
  URI.
   Because the user is already signed in and has an active session
  token,
  the request goes through.
 
  To prevent it, the request URI must include an artifact that binds
  the
  request to the active session. Since the attacker has no way of
  accessing the session information, it cannot construct as a URI.
  In
  practice, this means adding a hidden form parameter to the button
  with
  some hash of the session information that the server can verify.
 
  So I would conclude we have the same understanding of what CSRF
  means.
 
   But why should the attacker create requests et all? All he needs
  is
   already provided by the authorization server themselves. The
   malicious client can download the HTML pages comprising the
   authorization flow from the authz server and use the embedded
  URLs to
   issue the requests which normaly would have been issued by the
   resource owner herself (using the use agent indeed). It's more or
   less the push on a I agree
   button we are talking about. The authorization server may add a
  page
   token to the respective form URL. But it does not matter since
  the
   client just uses the authz server manufactured URL to post the
  form.
 
  Of course it matters.
 
  The only way the attacker can get access is by calling the 'I
  agree'
   button action via an active user session. The attacker cannot
  access
  the hidden form value with the session hash (or whatever the
  server is
  using for CSRF protection). So whatever URI it constructs will not
  work
  when called with the active user session.
 
  My point is: the attacker in the threat I'm trying to describe does
  not need to create any URL since it just remote controls the
  user-agent. The malicous code runs outside of the browser and just
  uses the URLs provided by the authz server. Yes, there need to be a
  session. No, the attacker does not need to inject any URL he made up.
 
   So let's assume the attacker has to programmatically handle HTML
   forms the authorization server delivers to the user agent. As you
   correctly pointed out, the pre-requisite for such an attack to
   succeed is that the resource owner must be authenticated somehow,
   e.g. based on a session cookie. Which also means, we are talking
   about clients running on the victim's device, within the user
  agent
   or as native app.
  
   I see the following possible scenarios:
  
   1) external system browser - The app could utilize an existing
   session within the system browser on the victim's device. It
  could
   then remote control a browser window, e.g. using low-level
  operating
   system messages (send mouse click) or component techniques such
  as
   ActiveX. There are tools available to create macros which
   automatically control and obtain data from such applications. So
  this
   should be feasible.
  
   2) internal browser (cross-browser cookies) - If the
  authorization
   server uses cross-browser cookie techniques, such as flash
  cookies,
   the attacker could instantiate an internal (invisible) browser
  and
   try to utilize a session associated with such a cookie. I assume
   controlling such a browser instance will be even simpler then in
  (1).
  
   3) internal browser (silent authz flow) - This is a scenario
  where
   the attacker is unable to abuse an existing session on the
  device. It
   could instead

Re: [OAUTH-WG] Authorization code use in draft-ietf-oauth-v2-21

2011-09-09 Thread Eran Hammer-Lahav
Sending to the right address. 

EHL

On Sep 9, 2011, at 15:31, André DeMarre andredema...@gmail.com wrote:

 Greetings Everyone,
 
 I hope the draft isn't too far along for these comments.
 (draft-ietf-oauth-v2-21)
 
 1. AUTHORIZATION CODE RESTRICTIONS
 
 The specification (particularly Section 4.1) does not say if the
 authorization server may or may not allow an authorization code to be
 used more than once in exchange for an access token. (Section 4.1.3)
 
 With this ambiguity, some authorization server implementations might
 allow authorization codes to be reused by the client (whether
 intentionally or not). I don't see any benefit in allowing this and
 think it should be forbidden for several reasons.
 
 Allowing this enables a scenario where an authorization code may be
 reused when the client should use the refresh token instead. The
 refresh token has more desirable security properties.
 
 The usefulness of authorization codes should be restricted wherever
 possible because they are revealed to resource owners and can be sent
 over unsecure connections when the client does not require TLS on its
 redirection URI. These properties combined with the possibility that
 the authorization code flow may be used by public clients might open
 more severe attack vectors.
 
 I think it should be clearly stated that the authorization server MUST
 NOT issue more than one access token per authorization code grant. An
 authorization code should be discarded after its first use and new
 access tokens should only be issued when exchanged for refresh tokens.
 
 
 2. AUTHORIZATION CODE VS. TOKEN?
 
 Much less important, and please forgive me if this has already been
 discussed, but why isn't the authorization code called an
 authorization token? It is similar to the refresh token in that it can
 be presented in exchange for an access token at the token endpoint. I
 see it as another type of token and wonder if the language used should
 perhaps reflect that as well.
 
 
 3. GRAMMAR CORRECTION IN SECTION 10.12
 
 In Section 10.12 paragraph three it says (e.g. a hash of the session
 cookie used to authentication the user-agent). This should say
 authenticate instead of authentication.
 
 Regards,
 Andre DeMarre

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


Re: [OAUTH-WG] problem statement

2011-09-07 Thread Eran Hammer-Lahav
Michael,

I suggest you go back and read the entire thread again:

http://www.ietf.org/mail-archive/web/oauth/current/maillist.html

I don't think you have been listening to the 11 (!) people who all completely 
disagree with you and dismiss your suggestions (on technical grounds). The one 
person who supported your plea didn't actually make any technical contribution.

If anyone wants to make accusations about behaving like adults, that should be 
the 11 people who tried to explain why you are simply wrong and were completely 
ignored by you. Any perceived hostility is easily justified by having to 
explain the same thing over and over again to someone who refuses to list and 
insists on labeling this work as lacking and insecure. We take real security 
pretty seriously here.

You asked a question as someone very new to thinking about this problem space 
and was answered by experts. The fact that you refuse to accept their answers 
is while being , at this point, your problem. You were given multiple 
opportunities to present an alternative text and technical justification to 
support it, but refused to do so.
 
You might not like my tone, but I consider making a statement like this:

 In fact, you guys have convinced me that OAuth gives inferior protection at
 considerable expense for all concerned.

an irresponsible and serious offense - the kind of baseless FUD that can cause 
real damage to important work.

EHL

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


Re: [OAUTH-WG] problem statement

2011-09-07 Thread Eran Hammer-Lahav
Melinda,

We clearly have different views on what it means to [deal] with this like an 
adult. I would like to address what I *think* were your two main points: the 
lack of civility in addressing the feedback provided by Mr. Thomas, and the 
alleged IETF process violation by me as editor. I have not seen any actual 
technical argument coming from you in support of this change other than 'why 
not'.

While the 11 people who replied to this thread did dismiss the claim and the 
need to address it, the conversation was pretty calm and polite. I suggest you 
go back and read the entire thread:

http://www.ietf.org/mail-archive/web/oauth/current/maillist.html

Any hints of hostility you find can be justly explained by the frustration of 
trying to talk to someone who refuses to listen and insists on making a change 
that everyone else objects to. Given that this is a technical working group, I 
can safely state that this objection was unanimous based on technical arguments.

Process-wise, we are operating under clear and explicit directions from the 
chairs to only consider changes to the document based on *proposed text* and 
consensus. As editor, it is completely within my authority to dismiss proposals 
and changes not matching the criteria set by the chairs, and it is my stated 
responsibility to reject changes where there clearly is no consensus. While the 
chairs can change their instructions, someone still has to provide text, which 
is the only way you can reach consensus.

And for the record, in this case, there is clear cut IETF consensus not to make 
any changes (1 in support, 11 against, and 1 'why not'). That's a close as the 
IETF gets to unanimity. I agree that the editor is not empowered to make such 
final declarations, but everyone is free to make that observation, including 
the editor. I have never refused to make a change in face of clear guidance 
from the chairs, nor have I ever suggested I have the authority to make such 
final calls. I find that suggestion disrespectful to my unparalleled 
contribution to this work over 4 years.

Your entire argument is basically 'why not, it's only a few lines in the 
introduction'. I find this both counter-productive and harmful. The suggested 
change boils down to explaining to the reader that installing untrusted clients 
on a user device can have wide repercussions to the security properties of this 
protocol. But such a claim is both obvious (to everyone but one) and incomplete.

It is the incompleteness part that most people objected to, and the fact that 
any attempt at a comprehensive text would mean significant and open-ended 
delay. The number of potential ways for malicious code to find its way onto a 
user device are practically unlimited, and every single one of them will lead 
to the same security degradation described in this thread.

There are certain things we have to take for granted when writing a 
specification like this. One of them is the reader's understanding that there 
are many factors outside the scope of the protocol, and malware is one of the 
most obvious factors. I am completely serious when I say that earthquakes (as 
suggested jokingly by others) present equal thread to the security model of 
this protocol because the user hand might shake when trying to deny client 
access and hitting the approve button instead.

So following your login, why not discuss the potential impact of a physical 
disruption to the user interaction with the authorization endpoint? I am dead 
serious as I consider the two threats to be of equal relevance to this 
document. There are many examples of over-specification causing more harm than 
good and this is clearly one of those cases. 'Why not' is never an acceptable 
argument for making changes, especially at this stage and for a security 
protocol. I would also note that every example you tried to give for why 
accommodating this is the right thing based on past protocols was proved to be 
misleading or misguided.

I would also note that the proposed changes (guessing based on the information 
provided in lieu of actual text) will not result in *any* actionable result by 
anyone, if only because there is nothing to do about it other than educate 
users not to install untrusted software of any kind on any device.

Trying to portray the answer below as a more adult response is interesting. If 
you note, no one actually suggested we change the security thread model 
document, only that it provides a comprehensive description of the protocol. I 
am pretty sure most WG participants will still object to this change made in 
that document for the same reasons.

As editor, I consider this matter closed and will not make any changes based on 
the information presented. You are free ask the chairs to open an issue block 
the progress of the draft until this is resolved to your satisfaction.

EHL



 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of 

Re: [OAUTH-WG] OAuth2 Implementation questions (client secret and refresh tokens)

2011-09-07 Thread Eran Hammer-Lahav
You can revoke access tokens but only if they are Stateful (which usually means 
a DB lookup for every API call which doesn’t scale as well).

EHL

From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf Of 
Phillip Hunt
Sent: Wednesday, September 07, 2011 4:24 PM
To: William Mills
Cc: Quizlet Dev Team; oauth@ietf.org
Subject: Re: [OAUTH-WG] OAuth2 Implementation questions (client secret and 
refresh tokens)

You can also use a long lived refresh token in combination with a short access 
token. The client is then forced to periodically reauthenticate (without the 
user) before getting a new access token.

Refresh also gives the authzn server a chance to revoke access. Hence it is 
better to use shorter lived access tokens with long lived refresh tokens.

Phil

On 2011-09-07, at 15:27, William Mills 
wmi...@yahoo-inc.commailto:wmi...@yahoo-inc.com wrote:
I'll talk to the refresh token question:  they give you a hook for 
extensibility and key rotation.  If you want to rotate your encryption keys or 
extend the data carried in the token in any way then you want to be able to 
cleanly refresh your tokens.  Note that the refresh flow allows you to issue a 
new refresh token at the same time.  It also allows a clean path to convert 
tokens in a new client if you decide you want SAML tokens instead of MAC for 
example.

If you want those things you want to use refresh tokens.  You can have long 
lived access tokens too, and just use the refresh tokens when you want to do 
something new with the access tokens.

-bill


From: Dave Rochwerger da...@quizlet.commailto:da...@quizlet.com
To: oauth@ietf.orgmailto:oauth@ietf.org
Cc: Quizlet Dev Team devt...@quizlet.commailto:devt...@quizlet.com
Sent: Wednesday, September 7, 2011 2:15 PM
Subject: [OAUTH-WG] OAuth2 Implementation questions (client secret and refresh 
tokens)
Hi all,

I have been implementing OAuth2 based on the various drafts for our new API. 
Initially, I implemented everything as per the spec, but due to our particular 
scenario and restrictions we have in place, there are some fundamental 
questions that I am unable to defend.

I am hoping this group could help answer them for me.

Our scenario:
==
* We are implementing an API to allow 3rd party developers to access users' 
protected resources via their applications. The applications will mostly be 
native phone apps, but some will have web server backends (javascript-only 
applications are not a concern at the moment).
* We want to provide very long-lived (forever) tokens.
* We are implementing the authorization code flow as that seems best suited 
to us (we don't want the implicit flow because end-users would have to 
re-authorize every hour).

Our architecture:

* We control both the API server and the authorization server.
* All requests to protected resources (ie: to the API server) are always done 
over SSL.
* All requests to the authz server (token and authorize endpoints) are always 
done over SSL.
* We enforce that every client must supply the state parameter (and our 
guidelines say they must verify the state for CSRF mitigation).
* We enforce that every client must register a redirect URI.
* We validate the redirect_uri used to request an access token is the same that 
was used to obtain the auth code.
* The only time a request is not made over SSL is the redirect with the 
auth_code which is very short-lived (30 seconds) and is tied to a verified 
redirect URI.
* We enforce that access tokens must be provided using the Authorization header 
only (and of course, over SSL).
* We have guidelines saying that all mobile apps must use the native browser 
(and not an embedded web UI).

Questions:

1. Given the above scenario, what use are refresh tokens?
  - Access tokens can not leak because every request (to resource and authz 
server) containing an access token is done over SSL. We control both the authz 
and resource servers, so tokens in logs (and other suggested reasons in the 
archives) are not an issue.
  - Long-lived refresh tokens and short-lived access tokens are supposed to 
provide security due to possible access token leakage... but in our 100% SSL 
scenario, if access tokens are able to leak, then so would the client id, 
secret and refresh token.
  - Having a long-lived refresh token that can be exchanged for another access 
token adds a level of complexity (a second HTTPS request every so often) and 
seems to provide no benefit for our case.


2. What is the point of the client secret (in our scenario)?
- We originally were treating the clients as confidential, but after re-reading 
the native-application section, it seems we really should treat them as public 
(phone apps can be decompiled and the secret discovered).
- The spec says that the authz server should authenticate confidential clients, 
but public clients are allowed to just send their public client id (and no 
secret).
- The only verification 

Re: [OAUTH-WG] problem statement

2011-09-06 Thread Eran Hammer-Lahav
I agree. If you are going to install a native app, you better trust it not to 
do bad things. Grabbing your password is the least interesting thing such an 
app can abuse. I don't see any need to change the v2 draft. 

EHL

On Sep 6, 2011, at 11:10, Igor Faynberg igor.faynb...@alcatel-lucent.com 
wrote:

 Mike,
 
 You've got the problem statement right: allowing the user to authorize  
 resource access to another party without divulging user's credentials is 
 the objective of OAuth. You are also right in that the attack you have 
 described defies the whole purpose of OAuth.  I do not think though that 
 it is related to OAuth per se.
 
 To this end, the security work led by Torsten has thoroughly analyzed 
 the protocol and specified protection against multiple protocol 
 attacks.  From what you described, it appears to me that the attack you 
 mention is not related to the protocol but rather to the user's 
 environment.  There is no possible protection from key loggers that a 
 protocol can implement. I could be mistaken; in any case, it looks like 
 the problem rests with the implementation of WebView.
 
 If I am wrong, I would appreciate a detailed description of what happened.
 
 Igor
 
 On 9/6/2011 1:40 PM, Michael Thomas wrote:
 Hi all,
 
 Barry suggested that I might subscribe and explain what I sent him.
 
 My basic problem is that in neither the protocol nor the threats drafts,
 I can't seem to find what problem is actually trying to be solved with
 oauth, and what assumptions you're making about various elements.
 
 Here's what I did. I've written an app, and I wanted re-integrate the
 ability to send tweets after they deprecated Basic. So the app has a
 webView (android, iphone...) which it obviously completely controls.
 With oauth, the webview UA will ultimately redirect off to Twitter's
 site to collect the user's credentials and grant my app's backend an
 access token (sorry if I get terminology screwed up, i'm just coming
 up to speed).
 
 What occurs to me is that webview affords exactly zero protection from
 my client (ie, the app) from getting the user's twitter credentials. All
 I have to do is set up a keypress handler on that webview and in a few
 minutes of hacking I have a key logger. etc.
 
 So what I can't tell is whether this is a problem or not, because I
 don't know what problem you're trying to solve. If the object of oauth
 isn't to keep user/server credentials out of the hands of a third party,
 then what is it trying to solve? Is there an expectation that the
 UA is trusted by the user/server? What happens when that's not the case?
 
 Regardless of whether I'm misunderstanding, it would sure be nice to have
 both the problem and your assumptions laid out, hopefully with some 
 prominence
 so you don't get these sort of dumb questions.
 
 Mike
 ___
 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] problem statement

2011-09-06 Thread Eran Hammer-Lahav
Don't install crap on you device or computer. OAuth is the least of your 
concern if you install bad software. 

If there was a solution to this we would not need an antivirus. 

EHL 

On Sep 6, 2011, at 11:23, Michael Thomas m...@mtcc.com wrote:

 Eran Hammer-Lahav wrote:
 I agree. If you are going to install a native app, you better trust it not 
 to do bad things. Grabbing your password is the least interesting thing such 
 an app can abuse. I don't see any need to change the v2 draft. 
 
 How, exactly, is the user supposed to protect themselves against rogue apps?
 It sounds like the solution is to tell them to never use oauth in an app at 
 all.
 
 Is oauth only intended to be used on standalone trustable web browsers? I 
 don't recall
 seeing that anywhere.
 
 Mike
 
 
 EHL
 
 On Sep 6, 2011, at 11:10, Igor Faynberg igor.faynb...@alcatel-lucent.com 
 wrote:
 
 Mike,
 
 You've got the problem statement right: allowing the user to authorize  
 resource access to another party without divulging user's credentials is 
 the objective of OAuth. You are also right in that the attack you have 
 described defies the whole purpose of OAuth.  I do not think though that 
 it is related to OAuth per se.
 
 To this end, the security work led by Torsten has thoroughly analyzed 
 the protocol and specified protection against multiple protocol 
 attacks.  From what you described, it appears to me that the attack you 
 mention is not related to the protocol but rather to the user's 
 environment.  There is no possible protection from key loggers that a 
 protocol can implement. I could be mistaken; in any case, it looks like 
 the problem rests with the implementation of WebView.
 
 If I am wrong, I would appreciate a detailed description of what happened.
 
 Igor
 
 On 9/6/2011 1:40 PM, Michael Thomas wrote:
 Hi all,
 
 Barry suggested that I might subscribe and explain what I sent him.
 
 My basic problem is that in neither the protocol nor the threats drafts,
 I can't seem to find what problem is actually trying to be solved with
 oauth, and what assumptions you're making about various elements.
 
 Here's what I did. I've written an app, and I wanted re-integrate the
 ability to send tweets after they deprecated Basic. So the app has a
 webView (android, iphone...) which it obviously completely controls.
 With oauth, the webview UA will ultimately redirect off to Twitter's
 site to collect the user's credentials and grant my app's backend an
 access token (sorry if I get terminology screwed up, i'm just coming
 up to speed).
 
 What occurs to me is that webview affords exactly zero protection from
 my client (ie, the app) from getting the user's twitter credentials. All
 I have to do is set up a keypress handler on that webview and in a few
 minutes of hacking I have a key logger. etc.
 
 So what I can't tell is whether this is a problem or not, because I
 don't know what problem you're trying to solve. If the object of oauth
 isn't to keep user/server credentials out of the hands of a third party,
 then what is it trying to solve? Is there an expectation that the
 UA is trusted by the user/server? What happens when that's not the case?
 
 Regardless of whether I'm misunderstanding, it would sure be nice to have
 both the problem and your assumptions laid out, hopefully with some 
 prominence
 so you don't get these sort of dumb questions.
 
 Mike
 ___
 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


Re: [OAUTH-WG] problem statement

2011-09-06 Thread Eran Hammer-Lahav
I'm dismissive of this being an OAuth problem. 

EHL

On Sep 6, 2011, at 11:35, Michael Thomas m...@mtcc.com wrote:

 Eran Hammer-Lahav wrote:
 Don't install crap on you device or computer. OAuth is the least of your 
 concern if you install bad software. 
 
 If there was a solution to this we would not need an antivirus. 
 
 How exactly does an end user know what is crap or not? Or are you just 
 dismissive of apps in
 general? I don't think that apple and google are going to close up shop 
 because it breaks oauth's
 trust model.
 
 Mike
 
 
 EHL 
 
 On Sep 6, 2011, at 11:23, Michael Thomas m...@mtcc.com wrote:
 
 Eran Hammer-Lahav wrote:
 I agree. If you are going to install a native app, you better trust it not 
 to do bad things. Grabbing your password is the least interesting thing 
 such an app can abuse. I don't see any need to change the v2 draft. 
 How, exactly, is the user supposed to protect themselves against rogue apps?
 It sounds like the solution is to tell them to never use oauth in an app at 
 all.
 
 Is oauth only intended to be used on standalone trustable web browsers? I 
 don't recall
 seeing that anywhere.
 
 Mike
 
 EHL
 
 On Sep 6, 2011, at 11:10, Igor Faynberg 
 igor.faynb...@alcatel-lucent.com wrote:
 
 Mike,
 
 You've got the problem statement right: allowing the user to authorize  
 resource access to another party without divulging user's credentials is 
 the objective of OAuth. You are also right in that the attack you have 
 described defies the whole purpose of OAuth.  I do not think though that 
 it is related to OAuth per se.
 
 To this end, the security work led by Torsten has thoroughly analyzed 
 the protocol and specified protection against multiple protocol 
 attacks.  From what you described, it appears to me that the attack you 
 mention is not related to the protocol but rather to the user's 
 environment.  There is no possible protection from key loggers that a 
 protocol can implement. I could be mistaken; in any case, it looks like 
 the problem rests with the implementation of WebView.
 
 If I am wrong, I would appreciate a detailed description of what happened.
 
 Igor
 
 On 9/6/2011 1:40 PM, Michael Thomas wrote:
 Hi all,
 
 Barry suggested that I might subscribe and explain what I sent him.
 
 My basic problem is that in neither the protocol nor the threats drafts,
 I can't seem to find what problem is actually trying to be solved with
 oauth, and what assumptions you're making about various elements.
 
 Here's what I did. I've written an app, and I wanted re-integrate the
 ability to send tweets after they deprecated Basic. So the app has a
 webView (android, iphone...) which it obviously completely controls.
 With oauth, the webview UA will ultimately redirect off to Twitter's
 site to collect the user's credentials and grant my app's backend an
 access token (sorry if I get terminology screwed up, i'm just coming
 up to speed).
 
 What occurs to me is that webview affords exactly zero protection from
 my client (ie, the app) from getting the user's twitter credentials. All
 I have to do is set up a keypress handler on that webview and in a few
 minutes of hacking I have a key logger. etc.
 
 So what I can't tell is whether this is a problem or not, because I
 don't know what problem you're trying to solve. If the object of oauth
 isn't to keep user/server credentials out of the hands of a third party,
 then what is it trying to solve? Is there an expectation that the
 UA is trusted by the user/server? What happens when that's not the case?
 
 Regardless of whether I'm misunderstanding, it would sure be nice to have
 both the problem and your assumptions laid out, hopefully with some 
 prominence
 so you don't get these sort of dumb questions.
 
 Mike
 ___
 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


Re: [OAUTH-WG] problem statement

2011-09-06 Thread Eran Hammer-Lahav
Framing this as an OAuth issue is wrong. In your scenario:

1. Install bad app
2. Do protocol X
3. Bad things happen

X can be anything. For example, the app can add a root cert to your os and 
break TLS protection. 

EHL

On Sep 6, 2011, at 11:50, Michael Thomas m...@mtcc.com wrote:

 William Mills wrote:
 OAuth doesn't solve this problem, and can't.  Generally the question is 
 whether the app appears to come from a reputable source, and nowadays 
 whether it's signed (in windows land) or otherwize certified by the 
 provider.
 
 If you manage to solve this problem in a real way I'd be interested in 
 investing in your company.
 
 Then what I don't see anywhere is that oauth is not applicable to embedded
 web objects, and that end users should *never* trust oauth in a, say, phone
 app. As far as I can tell, the server deploying oauth can't tell that it's
 being misused, so this is all on the shoulders of the end user.
 
 It sure looks like oauth is easily subverted in the real world.
 
 Mike
 
 
 
 *From:* Michael Thomas m...@mtcc.com
 *To:* Eran Hammer-Lahav e...@hueniverse.com
 *Cc:* oauth@ietf.org oauth@ietf.org
 *Sent:* Tuesday, September 6, 2011 11:34 AM
 *Subject:* Re: [OAUTH-WG] problem statement
 
 Eran Hammer-Lahav wrote:
 Don't install crap on you device or computer. OAuth is the least of 
 your concern if you install bad software.
 If there was a solution to this we would not need an antivirus.
 
 How exactly does an end user know what is crap or not? Or are you just 
 dismissive of apps in
 general? I don't think that apple and google are going to close up shop 
 because it breaks oauth's
 trust model.
 
 Mike
 
 
 EHL
 On Sep 6, 2011, at 11:23, Michael Thomas m...@mtcc.com 
 mailto:m...@mtcc.com wrote:
 
 Eran Hammer-Lahav wrote:
 I agree. If you are going to install a native app, you better trust 
 it not to do bad things. Grabbing your password is the least interesting 
 thing such an app can abuse. I don't see any need to change the v2 draft.
 How, exactly, is the user supposed to protect themselves against 
 rogue apps?
 It sounds like the solution is to tell them to never use oauth in an 
 app at all.
 
 Is oauth only intended to be used on standalone trustable web 
 browsers? I don't recall
 seeing that anywhere.
 
 Mike
 
 EHL
 
 On Sep 6, 2011, at 11:10, Igor Faynberg 
 igor.faynb...@alcatel-lucent.com 
 mailto:igor.faynb...@alcatel-lucent.com wrote:
 
 Mike,
 
 You've got the problem statement right: allowing the user to 
 authorize  resource access to another party without divulging user's 
 credentials is the objective of OAuth. You are also right in that the 
 attack you have described defies the whole purpose of OAuth.  I do not 
 think though that it is related to OAuth per se.
 
 To this end, the security work led by Torsten has thoroughly 
 analyzed the protocol and specified protection against multiple protocol 
 attacks.  From what you described, it appears to me that the attack you 
 mention is not related to the protocol but rather to the user's 
 environment.  There is no possible protection from key loggers that a 
 protocol can implement. I could be mistaken; in any case, it looks like 
 the problem rests with the implementation of WebView.
 
 If I am wrong, I would appreciate a detailed description of what 
 happened.
 
 Igor
 
 On 9/6/2011 1:40 PM, Michael Thomas wrote:
 Hi all,
 
 Barry suggested that I might subscribe and explain what I sent him.
 
 My basic problem is that in neither the protocol nor the threats 
 drafts,
 I can't seem to find what problem is actually trying to be solved 
 with
 oauth, and what assumptions you're making about various elements.
 
 Here's what I did. I've written an app, and I wanted re-integrate the
 ability to send tweets after they deprecated Basic. So the app has a
 webView (android, iphone...) which it obviously completely controls.
 With oauth, the webview UA will ultimately redirect off to Twitter's
 site to collect the user's credentials and grant my app's backend an
 access token (sorry if I get terminology screwed up, i'm just coming
 up to speed).
 
 What occurs to me is that webview affords exactly zero protection 
 from
 my client (ie, the app) from getting the user's twitter 
 credentials. All
 I have to do is set up a keypress handler on that webview and in 
 a few
 minutes of hacking I have a key logger. etc.
 
 So what I can't tell is whether this is a problem or not, because I
 don't know what problem you're trying to solve. If the object of 
 oauth
 isn't to keep user/server credentials out of the hands of a third 
 party,
 then what is it trying to solve? Is there an expectation that the
 UA is trusted by the user/server? What happens when that's not 
 the case?
 
 Regardless of whether I'm misunderstanding, it would sure be nice 
 to have
 both the problem and your assumptions laid out, hopefully with 
 some prominence
 so you don't get

Re: [OAUTH-WG] problem statement

2011-09-06 Thread Eran Hammer-Lahav
You are one making the argument that no one should be installing apps.

There is no known way to stop users from installing malware and viruses other 
than not letting them install anything off a whitelist. The problem you are 
describing has nothing to do with OAuth, its a fundamental problem with running 
untrusted code on your devices. Once you do that, yes, OAuth can be exploited 
but that's true for every authentication scheme when one side is compromised.

My point, which you seems to miss, is that the same argument can be made 
against any other protocol. TLS offers your certain protections but they are 
all gone if you install a bad native app – following your logic people should 
not use TLS in apps either.

I do not consider this an issue.

EHL

From: Michael Thomas m...@mtcc.commailto:m...@mtcc.com
Date: Tue, 6 Sep 2011 11:58:11 -0700
To: Eran Hammer-lahav e...@hueniverse.commailto:e...@hueniverse.com
Cc: igor.faynb...@alcatel-lucent.commailto:igor.faynb...@alcatel-lucent.com 
igor.faynb...@alcatel-lucent.commailto:igor.faynb...@alcatel-lucent.com, 
oauth@ietf.orgmailto:oauth@ietf.org oauth@ietf.orgmailto:oauth@ietf.org
Subject: Re: [OAUTH-WG] problem statement

Eran Hammer-Lahav wrote:
I'm dismissive of this being an OAuth problem.

Which brings us back to my original problem: what is the problem it's trying to 
solve?
What are the assumptions it makes? What is its applicability? None of those are 
addressed
very well if at all in the drafts. I'm sure that I'm not the only one who would 
be very
surprised to hear that using oauth on a phone app is a bad idea.

Put it this way: your favorite example of a photo printing service needing 
access to flickr.
It's ok if you do that from a browser, but not if the photo printer makes an 
app. How many users,
exactly, are going to know that they shouldn't do the second one?

I think that's an oauth problem because oauth makes it *seem* like you're 
protected from
the third party, whereas if the app itself asked for your login credentials 
there would
be far less confusion. So in that sense, oauth is making things worse, not 
better.

Mike

EHL
On Sep 6, 2011, at 11:35, Michael Thomas 
m...@mtcc.commailto:m...@mtcc.com wrote:
Eran Hammer-Lahav wrote:
Don't install crap on you device or computer. OAuth is the least of your 
concern if you install bad software.

If there was a solution to this we would not need an antivirus.
How exactly does an end user know what is crap or not? Or are you just 
dismissive of apps in
general? I don't think that apple and google are going to close up shop because 
it breaks oauth's
trust model.

Mike

EHL

On Sep 6, 2011, at 11:23, Michael Thomas 
m...@mtcc.commailto:m...@mtcc.com wrote:

Eran Hammer-Lahav wrote:
I agree. If you are going to install a native app, you better trust it not to 
do bad things. Grabbing your password is the least interesting thing such an 
app can abuse. I don't see any need to change the v2 draft.
How, exactly, is the user supposed to protect themselves against rogue apps?
It sounds like the solution is to tell them to never use oauth in an app at all.

Is oauth only intended to be used on standalone trustable web browsers? I don't 
recall
seeing that anywhere.

Mike

EHL

On Sep 6, 2011, at 11:10, Igor Faynberg 
igor.faynb...@alcatel-lucent.commailto:igor.faynb...@alcatel-lucent.com 
wrote:

Mike,

You've got the problem statement right: allowing the user to authorize
resource access to another party without divulging user's credentials is
the objective of OAuth. You are also right in that the attack you have
described defies the whole purpose of OAuth.  I do not think though that
it is related to OAuth per se.

To this end, the security work led by Torsten has thoroughly analyzed
the protocol and specified protection against multiple protocol
attacks.  From what you described, it appears to me that the attack you
mention is not related to the protocol but rather to the user's
environment.  There is no possible protection from key loggers that a
protocol can implement. I could be mistaken; in any case, it looks like
the problem rests with the implementation of WebView.

If I am wrong, I would appreciate a detailed description of what happened.

Igor

On 9/6/2011 1:40 PM, Michael Thomas wrote:
Hi all,

Barry suggested that I might subscribe and explain what I sent him.

My basic problem is that in neither the protocol nor the threats drafts,
I can't seem to find what problem is actually trying to be solved with
oauth, and what assumptions you're making about various elements.

Here's what I did. I've written an app, and I wanted re-integrate the
ability to send tweets after they deprecated Basic. So the app has a
webView (android, iphone...) which it obviously completely controls.
With oauth, the webview UA will ultimately redirect off to Twitter's
site to collect the user's credentials and grant my app's backend an
access token (sorry if I get terminology screwed up, i'm just coming
up to speed

Re: [OAUTH-WG] problem statement

2011-09-06 Thread Eran Hammer-Lahav
I understood his request and disagree that any action needs to be taken. It is 
unreasonable to expect every protocol to discuss the security considerations of 
a user installing malware.

EHL

From: Melinda Shore melinda.sh...@gmail.commailto:melinda.sh...@gmail.com
Date: Tue, 6 Sep 2011 12:18:18 -0700
To: oauth@ietf.orgmailto:oauth@ietf.org 
oauth@ietf.orgmailto:oauth@ietf.org
Subject: Re: [OAUTH-WG] problem statement

On 09/06/2011 11:11 AM, Jill Burrows wrote:
I repeat, it is not an OAuth problem.

If I'm reading Mike correctly (and if I'm not it won't be the
first time I've misunderstood him), he's not really asking for
OAUTH to solve this particular problem but to clarify the
documents and beef up discussions of what is and is not in
scope.  He read the document and couldn't figure out whether
or not this particular problem is the business of the working
group.

Melinda
___
OAuth mailing list
OAuth@ietf.orgmailto: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] problem statement

2011-09-06 Thread Eran Hammer-Lahav
It is a problem. For a few months now we have been going through this over and 
over again. The longer we work on this draft the more of this two-sentence 
changes people suggest. They don't make the document any better, create a false 
sense of comprehensiveness, and just further delay being done. 

So yeah, unless you can prove that there is an actual problem, we are done. 

EHL

On Sep 6, 2011, at 15:22, Melinda Shore melinda.sh...@gmail.com wrote:

 On 09/06/2011 12:59 PM, John Kemp wrote:
 The point is that you have a point.
 
 He does, and that's in some large part why I don't
 fully understand the temperature of the responses.
 I do not think it's a particularly big deal to stick
 a couple of sentences in the security considerations
 underscoring the fact that OAUTH can't do anything
 about a compromised host or a malicious application.
 I've learned to live with the fact that sometimes
 people implementing or deploying security technologies
 don't fully understand them and it's my impression that
 there's some number of people out there who think that
 OAUTH and other third-party protocols provide sufficient
 protection against password snagging.
 
 Melinda
 ___
 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] problem statement

2011-09-06 Thread Eran Hammer-Lahav
Wg consensus is clearly to do nothing here. 

EHL

On Sep 6, 2011, at 17:05, Michael Thomas m...@mtcc.com wrote:

 On 09/06/2011 03:27 PM, Eran Hammer-Lahav wrote:
 So yeah, unless you can prove that there is an actual problem, we are done.
 
 
 I will point out that the chairs make that determination based on
 working group consensus, not the document editor.
 
 Mike
___
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


Re: [OAUTH-WG] problem statement

2011-09-06 Thread Eran Hammer-Lahav
The chairs have the final say, not a monopoly on making observations. The 
editor role *is* to distill wg discussion onto proposed changes. So saying I 
have no intention on making changes is clearly within my authority and the 
chair have the right to override that call. 

EHL

On Sep 6, 2011, at 17:13, Melinda Shore melinda.sh...@gmail.com wrote:

 On 09/06/2011 04:09 PM, Eran Hammer-Lahav wrote:
 Wg consensus is clearly to do nothing here.
 
 ??  No, it clearly is not, unless you're laboring
 under the misconception that consensus means voting.
 At any rate the job of calling consensus *explicitly*
 belongs to working group chairs, not editors.
 
 Melinda
___
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


Re: [OAUTH-WG] problem statement

2011-09-06 Thread Eran Hammer-Lahav
What do you think such a warning would accomplish? There are no ways to 
mitigate malware (bad client or otherwise), and using passwords make it even 
easier. 

End users are not going to read the specification and service providers have 
absolutely no alternatives.

As for the example, the issue you described with accepting every CA is 
completely irrelavent because changing the root certificates will be done in 
secrecy by the installed malware. 

I have not seen any argument showing how such a warming makes any difference in 
deploying OAuth (or not).

Can you propose text and show how it mau affect implementation?

EHL


On Sep 6, 2011, at 17:50, Melinda Shore melinda.sh...@gmail.com wrote:

 On 09/06/2011 04:23 PM, Peter Saint-Andre wrote:
 I just looked at the most recent specifications for TLS (RFC 5246) and
 secure shell (RFC 4253), which I think we'd all agree are two quite
 successful security technologies. Neither of those specs says anything
 about not protecting humans users from malicious clients that perform
 keylogging to capture security-critical data the user might enter.
 
 I think there's an argument to be made that the user interface
 is sufficiently different that those might not be a great model.
 But it's also the case that there have been security problems
 with both that may or may not have been avoided in part by
 putting in warnings not to trust every crappy, random CA
 certificate that wafts by, or not to respond Sure - thanks!
 to every ssh host key you're offered.
 
 Melinda
 ___
 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] problem statement

2011-09-06 Thread Eran Hammer-Lahav
You clearly feel strongly about this. The only way forward if you want to 
pursue this is to suggest text and show how providing it will lead to more 
secure implementations. Otherwise this is just going in circles. 

EHL

On Sep 6, 2011, at 18:13, Michael Thomas m...@mtcc.com wrote:

 On 09/06/2011 06:08 PM, Peter Saint-Andre wrote:
 Put me in the may not have been avoided camp. We can't legislate
 common sense (which, sadly, is all too uncommon).
 
 
 Can somebody show me in the archives where this has been
 discussed before? Specifically about oauth clients that also
 have control of the web UA?
 
 In any case, you site this as common sense. It's not. You are
 close to the problem. Nobody else is.
 
 Mike
 ___
 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] problem statement

2011-09-06 Thread Eran Hammer-Lahav
*I* am not going to do anything to move this forward which means nothing will 
happen unless someone propose text. Even the chairs can't instruct the editor 
to produce new prose.

All the chairs are going to do is give you the same answer. If you want the wg 
to consider anything at this point you must provide text. In fact, they already 
issued this clear instructions. 

Now, the overwhelming resistance to such a change would make *me* reconsider 
spending my time on this of I was in your position, but proposing text is the 
only advise the chairs can offer you at this point. 

If you think you can offer text that will win wg consensus you should. Arguing 
with me as a participant is, unfortunately, part of the deal. 

EHL

On Sep 6, 2011, at 18:27, Michael Thomas m...@mtcc.com wrote:

 On 09/06/2011 06:24 PM, Eran Hammer-Lahav wrote:
 You clearly feel strongly about this. The only way forward if you want to 
 pursue this is to suggest text and show how providing it will lead to more 
 secure implementations. Otherwise this is just going in circles.
 
 
 Didn't you just get done announcing how you weren't going to do anything
 under any circumstances unless you were forced to by the chairs? I think
 I'll wait for them to chime in before I waste my time.
 
 Mike
___
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


Re: [OAUTH-WG] Auth Code Swap Attack

2011-09-06 Thread Eran Hammer-Lahav
Perfect. Thanks Phil.

EHL

On Sep 6, 2011, at 20:42, Phil Hunt phil.h...@oracle.com wrote:

 Eran,

 Just took a look at the text. This new version looks much improved. I think 
 this is a good compromise.

 Thanks,

 Phil

 @independentid
 www.independentid.com
 phil.h...@oracle.com





 On 2011-09-04, at 4:25 PM, Eran Hammer-Lahav wrote:

 The corresponding 'state' parameter definition:

   RECOMMENDED. An opaque value used by the client to maintain 
 state between the request
   and callback. The authorization server includes this value 
 when redirecting the
   user-agent back to the client. The parameter SHOULD be used 
 for preventing
   cross-site request forgery as described in section 10.12.

 EHL

 -Original Message-
 From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf
 Of Eran Hammer-Lahav
 Sent: Sunday, September 04, 2011 4:20 PM
 To: William J. Mills; Anthony Nadalin; Torsten Lodderstedt
 Cc: OAuth WG (oauth@ietf.org)
 Subject: Re: [OAUTH-WG] Auth Code Swap Attack

 This is my proposed text for -21 (based on Bill's text as a starting point):

 10.12.  Cross-Site Request Forgery

  Cross-site request forgery (CSRF) is an exploit in which an attacker
  causes the user-agent of a victim end-user to follow a malicious URI
  (e.g. provided to the user-agent as a misleading link, image, or
  redirection) to a trusting server (usually established via the
  presence of a valid session cookie).

  A CSRF attack against the client's redirection URI allows an attacker
  to inject their own authorization code or access token, which can
  result in the client using an access token associated with the
  attacker's protected resources rather than the victim's (e.g. save
  the victim's bank account information to a protected resource
  controlled by the attacker).

  The client MUST implement CSRF protection for its redirection URI.
  This is typically accomplished by requiring any request sent to the
  redirection URI endpoint to include a value that binds the request to
  the user-agent's authenticated state (e.g. a hash of the session
  cookie used to authentication the user-agent).  The client SHOULD
  utilize the state request parameter to deliver this value to the
  authorization server when making an authorization request.

  Once authorization has been obtained from the end-user, the
  authorization server redirects the end-user's user-agent back to the
  client with the required binding value contained in the state
  parameter.  The binding value enables the client to validate the
  validity of the request by matching the binding value to the user-
  agent's authenticated state.  The binding value used for CSRF
  protection MUST contain a non-guessable value, and the user-agent's
  authenticated state (e.g. session cookie, HTML5 local storage) MUST
  be kept in a location accessible only to the client and the user-
  agent (i.e., protected by same-origin policy).

  A CSRF attack against the against the authorization server's
  authorization endpoint can result in an attacker obtaining end-user
  authorization for a malicious client without involving or alerting
  the end-user.

  The authorization server MUST implement CSRF protection for its
  authorization endpoint, and ensure that a malicious client cannot
  obtain authorization without the awareness and explicit consent of
  the resource owner.

 EHL


 From: William J. Mills [mailto:wmi...@yahoo-inc.com]
 Sent: Thursday, August 25, 2011 12:11 PM
 To: Anthony Nadalin; Eran Hammer-Lahav; Torsten Lodderstedt
 Cc: OAuth WG (oauth@ietf.org)
 Subject: Re: [OAUTH-WG] Auth Code Swap Attack

 I had proposed text, and I'll reprise it here with a modification to make 
 the
 authorizaton server related explicit.

 10.12.  Cross-Site Request Forgery

 Cross-site request forgery (CSRF) is an attack whereby malicious URLs are
 sent to the user-agent of an end user (generally as hidden links or images)
 and transmitted from the user-agent the server trusts or has authenticated.
 The most commonly exploited mechanism for this is credentials held in
 cookies automatically presented by a web browser.  CSRF attacks against the
 client's redirection URI allow an attacker to inject their own authorization
 code or access token, which can result in the client using an access token
 associated with the attacker's account rather than the victim's.  CSRF 
 attacks
 are also possible against an authorization endpoint resulting in delivering 
 a
 user credential to an attacker.

 Client applications MUST implement CSRF protection for the redirection
 URI.  CSRF protection for a request is data included in the request that 
 ties
 that request to the user's authenticated state, i.e. a cryptographic 
 signature
 of the user credential and the redirection URI path.  Upon receipt of a
 request the client application computes the CSRF data based on the
 presented credential and compares

Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner Impersonation)

2011-09-04 Thread Eran Hammer-Lahav
Sorry for the late response.

 -Original Message-
 From: Torsten Lodderstedt [mailto:tors...@lodderstedt.net]
 Sent: Sunday, August 21, 2011 10:59 AM
 To: Eran Hammer-Lahav
 Cc: Niv Steingarten; oauth@ietf.org
 Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
 Impersonation)
 
 Hi Eran,
  This is still just a CSRF attack.
 
  I think you may be right. I still believe this particular style of
  attack on the authorization server is worth mentioning, be it in its
  own separate section or under the existing CSRF section (as you
 suggested).
  This is not a style of attack but techniques to enhance other exploits, in 
  this
 case, CSRF. If you lack CSRF protection, then yes, lack of resource owner
 forced interaction will make it easier to execute. But that's just a tiny 
 speed
 bump considering the actual exploit.
 
  I don't see any reason to include this new text based on this threat 
  analysis.
 
  However, this doesn't mean this discussion wasn't useful. We did identify
 the need to explicitly discuss CSRF attacks on the authorization endpoint. We
 need to explicitly separate the two target of CSRF attacks (client, server)
 because while the solution is the same, the implementation is very different
 (due to the use of redirections in one).
 
 I agree, we should explicitely document these two variants of CSRF (client,
 authz server). But I suspect it's not only CSRF we are talking about in this
 thread - at least not textbook CSRF. Let me explain my
 thoughts:
 
 As far as I understood, in a textbook CSRF attack the attacker would create
 his own requests in order to abuse a user's session. This can be prevented by
 utilizing standard CSRF coutermeasures (page token, nounce, signature as
 parameter on every request URL), which bind URLs to a certain session.

A textbook CSRF attack is when an attacker constructs a URI and then manipulate 
a user-agent with an active session to call that. In the simplest example, an 
attacker constructs a URI that transfers a million dollars from the current 
account to its, then tricks the user to click on that link or automatically 
redirects the user to that URI. Because the user is already signed in and has 
an active session token, the request goes through.

To prevent it, the request URI must include an artifact that binds the request 
to the active session. Since the attacker has no way of accessing the session 
information, it cannot construct as a URI. In practice, this means adding a 
hidden form parameter to the button with some hash of the session information 
that the server can verify.

 But why should the attacker create requests et all? All he needs is already
 provided by the authorization server themselves. The malicious client can
 download the HTML pages comprising the authorization flow from the authz
 server and use the embedded URLs to issue the requests which normaly
 would have been issued by the resource owner herself (using the use agent
 indeed). It's more or less the push on a I agree
 button we are talking about. The authorization server may add a page token
 to the respective form URL. But it does not matter since the client just uses
 the authz server manufactured URL to post the form.

Of course it matters.

The only way the attacker can get access is by calling the 'I agree' button 
action via an active user session. The attacker cannot access the hidden form 
value with the session hash (or whatever the server is using for CSRF 
protection). So whatever URI it constructs will not work when called with the 
active user session.

 So let's assume the attacker has to programmatically handle HTML forms the
 authorization server delivers to the user agent. As you correctly pointed out,
 the pre-requisite for such an attack to succeed is that the resource owner
 must be authenticated somehow, e.g. based on a session cookie. Which also
 means, we are talking about clients running on the victim's device, within the
 user agent or as native app.
 
 I see the following possible scenarios:
 
 1) external system browser - The app could utilize an existing session within
 the system browser on the victim's device. It could then remote control a
 browser window, e.g. using low-level operating system messages (send
 mouse click) or component techniques such as ActiveX. There are tools
 available to create macros which automatically control and obtain data from
 such applications. So this should be feasible.
 
 2) internal browser (cross-browser cookies) - If the authorization server uses
 cross-browser cookie techniques, such as flash cookies, the attacker could
 instantiate an internal (invisible) browser and try to utilize a session
 associated with such a cookie. I assume controlling such a browser instance
 will be even simpler then in (1).
 
 3) internal browser (silent authz flow) - This is a scenario where the 
 attacker
 is unable to abuse an existing session on the device. It could instead create
 an internal

Re: [OAUTH-WG] redirect uri validation

2011-09-04 Thread Eran Hammer-Lahav
That's not complete. A valid redirection URI is not enough to verify client 
identity at the time it is presented, but it is enough in many cases to prevent 
leaking credentials later on.

How about a slight change:

  A valid redirection URI is not sufficient to verify the client's 
identity when asking for
  end-user authorization, but can be used to prevent delivering 
credentials to a
  counterfeit client after obtaining end-user authorization.

EHL

 -Original Message-
 From: Torsten Lodderstedt [mailto:tors...@lodderstedt.net]
 Sent: Monday, August 15, 2011 1:36 PM
 To: Eran Hammer-Lahav
 Cc: e...@sled.com; oauth@ietf.org
 Subject: Re: [OAUTH-WG] redirect uri validation
 
 Hi Eran,
 
 Am 15.08.2011 08:57, schrieb Eran Hammer-Lahav:
  Added to 1.4.2:
 
   When issuing an implicit grant, the authorization server does 
  not
 authenticate the
   client and [[in some cases]], the client identity [[can]] be 
  verified via
 the redirection URI
   used to deliver the access token to the client. The access 
  token may
 be exposed to the
   resource owner or other applications with access to the 
  resource
 owner's user-agent.
 
  Hope this is sufficient.
 
 What do you want to express? Clients can sometimes be verified via
 redirection URI?
 
 My intention was to point out that an invalid redirect URI is a counter-
 evidence for a client's identity but a valid redirect URI is _not_ an evidence
 for its identity.
 
 I would suggest to add the text below to section 10.1., last paragraph after
 the sentence
 
 For
 example, by requiring the registration of the client redirection URI
 or enlisting the resource owner to confirm identity.
 
 proposed text:
 
 Please note: while an invalid redirection URI indicates a counterfeit client, 
 a
 valid redirection URI is not sufficient to confirm a client's identity.
 
 regards,
 Torsten.
 
 
 
  EHL
 
  -Original Message-
  From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On
  Behalf Of Eran Hammer-Lahav
  Sent: Sunday, August 14, 2011 11:09 PM
  To: Torsten Lodderstedt
  Cc: tors...@lodderstedt-online.de; oauth@ietf.org
  Subject: Re: [OAUTH-WG] redirect uri validation
 
  Where would you suggest I add this?
 
  EHL
 
  -Original Message-
  From: Torsten Lodderstedt [mailto:tors...@lodderstedt.net]
  Sent: Monday, July 25, 2011 10:42 AM
  To: Eran Hammer-Lahav
  Cc: tors...@lodderstedt-online.de; oauth@ietf.org
  Subject: Re: [OAUTH-WG] redirect uri validation
 
  Hi Eran,
 
  OAuth 1.0 was highly criticized for failing to address client
  identity in public clients. I believe OAuth 2.0 offers a much
  better story, within the boundariesof what’s possible today.
  Agreed. I think we must honestly discuss the value of client
  authentication/identification itself. I personally think it is
  over-emphazised right now. The strength of OAuth 2.0 is that it
  allows solutions where neither client nor resource server have
  access or
  do store end-user credentials.
  Client authentication is nice but not the main feature.
  Do you have any specific suggestions not already mentioned on the
 list?
  I would suggest to mention that while an invalid redirect_uri
  indicates a counterfeit clients a valid redirect does not prove the
  calling
  client's identity.
  regards,
  Torsten.
 
 
  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
___
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


Re: [OAUTH-WG] treatment of client_id for authentication and identification

2011-09-04 Thread Eran Hammer-Lahav
New tweak:

The security ramifications of allowing unauthenticated access by 
public clients to the
token endpoint, as well as the issuance of refresh tokens to public 
clients MUST be
taken into consideration.

EHL

 -Original Message-
 From: Richer, Justin P. [mailto:jric...@mitre.org]
 Sent: Friday, August 19, 2011 4:56 AM
 To: Eran Hammer-Lahav; Lu, Hui-Lan (Huilan); Brian Campbell
 Cc: oauth
 Subject: RE: [OAUTH-WG] treatment of client_id for authentication and
 identification
 
 I find the original text clearer, myself.
 
  -- Justin
 
 From: oauth-boun...@ietf.org [oauth-boun...@ietf.org] On Behalf Of Eran
 Hammer-Lahav [e...@hueniverse.com]
 Sent: Thursday, August 18, 2011 5:16 PM
 To: Lu, Hui-Lan (Huilan); Brian Campbell
 Cc: oauth
 Subject: Re: [OAUTH-WG] treatment of client_id for authentication and
 identification
 
  -Original Message-
  From: Lu, Hui-Lan (Huilan) [mailto:huilan...@alcatel-lucent.com]
  Sent: Thursday, August 18, 2011 1:45 PM
  To: Eran Hammer-Lahav; Brian Campbell
  Cc: oauth
  Subject: RE: [OAUTH-WG] treatment of client_id for authentication and
  identification
 
  Eran Hammer-Lahav wrote:
   Added to 2.4.1:
  
   client_secret
   REQUIRED. The client secret. The client MAY omit the
   parameter if the client secret
   is an empty string.
 
  I would suggest rewording the above as follows:
  client_secret
REQUIRED unless it is an empty string. The client secret.
 
 unless its value is an empty string. Do people read this new text to mean
 OPTIONAL if not empty?
 
   Added to 3.2.1:
  
   A public client that was not issued a client password MAY use 
   the
   'client_id' request parameter to identify itself when sending
   requests to the token endpoint.
 
  It is difficult to parse the last sentence of 3.2.1: The security
  ramifications of allowing unauthenticated access by public clients to
  the token endpoint MUST be considered, as well as the issuance of
  refresh tokens to public clients, their scope, and lifetime.
 
  I think it should be rewritten and reference relevant parts of
  security considerations.
 
 Text?
 
 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


Re: [OAUTH-WG] Auth Code Swap Attack

2011-09-04 Thread Eran Hammer-Lahav
This is my proposed text for -21 (based on Bill's text as a starting point):

10.12.  Cross-Site Request Forgery

   Cross-site request forgery (CSRF) is an exploit in which an attacker
   causes the user-agent of a victim end-user to follow a malicious URI
   (e.g. provided to the user-agent as a misleading link, image, or
   redirection) to a trusting server (usually established via the
   presence of a valid session cookie).

   A CSRF attack against the client's redirection URI allows an attacker
   to inject their own authorization code or access token, which can
   result in the client using an access token associated with the
   attacker's protected resources rather than the victim's (e.g. save
   the victim's bank account information to a protected resource
   controlled by the attacker).

   The client MUST implement CSRF protection for its redirection URI.
   This is typically accomplished by requiring any request sent to the
   redirection URI endpoint to include a value that binds the request to
   the user-agent's authenticated state (e.g. a hash of the session
   cookie used to authentication the user-agent).  The client SHOULD
   utilize the state request parameter to deliver this value to the
   authorization server when making an authorization request.

   Once authorization has been obtained from the end-user, the
   authorization server redirects the end-user's user-agent back to the
   client with the required binding value contained in the state
   parameter.  The binding value enables the client to validate the
   validity of the request by matching the binding value to the user-
   agent's authenticated state.  The binding value used for CSRF
   protection MUST contain a non-guessable value, and the user-agent's
   authenticated state (e.g. session cookie, HTML5 local storage) MUST
   be kept in a location accessible only to the client and the user-
   agent (i.e., protected by same-origin policy).

   A CSRF attack against the against the authorization server's
   authorization endpoint can result in an attacker obtaining end-user
   authorization for a malicious client without involving or alerting
   the end-user.

   The authorization server MUST implement CSRF protection for its
   authorization endpoint, and ensure that a malicious client cannot
   obtain authorization without the awareness and explicit consent of
   the resource owner.

EHL


From: William J. Mills [mailto:wmi...@yahoo-inc.com] 
Sent: Thursday, August 25, 2011 12:11 PM
To: Anthony Nadalin; Eran Hammer-Lahav; Torsten Lodderstedt
Cc: OAuth WG (oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

I had proposed text, and I'll reprise it here with a modification to make the 
authorizaton server related explicit.

10.12.  Cross-Site Request Forgery 

Cross-site request forgery (CSRF) is an attack whereby malicious URLs are sent 
to the user-agent of an end user (generally as hidden links or images) and 
transmitted from the user-agent the server trusts or has authenticated. The 
most commonly exploited mechanism for this is credentials held in cookies 
automatically presented by a web browser.  CSRF attacks against the client's 
redirection URI allow an attacker to inject their own authorization code or 
access token, which can result in the client using an access token associated 
with the attacker's account rather than the victim's.  CSRF attacks are also 
possible against an authorization endpoint resulting in delivering a user 
credential to an attacker.   

Client applications MUST implement CSRF protection for the redirection URI.  
CSRF protection for a request is data included in the request that ties that 
request to the user's authenticated state, i.e. a cryptographic signature of 
the user credential and the redirection URI path.  Upon receipt of a request 
the client application computes the CSRF data based on the presented credential 
and compares that to the CSRF protection data presented in the request.  CSRF 
protection data MUST contain a non-guessable value, and the client MUST keep it 
in a location accessible only by the client or the user-agent (i.e., protected 
by same-origin policy). The state redirection URI parameter is provided as 
one method of carrying CSRF protection data, and is RECOMMENDED to provide the 
greatest compatibility with systems implementing strong redirection URI 
validation.  

Authorization servers MUST implement CSRF protection for authorization 
requests, use of the state parameter is RECOMMENDED as the way to transmit 
the CSRF protection data.  The CSRF protection data MUST contain a 
non-guessable value, and MUST be presented as part of the authorization request 
data (e.g. not as a cookie).  Authorization servers MAY use proof of previous  
authorization by a user for a client in lieu of explicit CSRF protection.

For example, using a DOM variable, HTTP cookie, or HTML5 client-side 
storage.  The authorization server includes the value of the state

Re: [OAUTH-WG] Security area review

2011-09-04 Thread Eran Hammer-Lahav
Where is this feedback?

 -Original Message-
 From: Hannes Tschofenig [mailto:hannes.tschofe...@gmx.net]
 Sent: Monday, August 29, 2011 1:16 AM
 To: Eran Hammer-Lahav
 Cc: Hannes Tschofenig; OAuth WG
 Subject: Re: [OAUTH-WG] Security area review
 
 Hi Eran,
 
 I gave presentations to the security area directorate, and have asked for
 review comments. Some of the folks (such as Tom Yu, and Shawn Emery)
 showed up in the meetings and the side meetings and provided comments.
 As Barry said, there will be more review comments flying in after the
 document left the working group.
 
 Ciao
 Hannes
 
 PS: I had also given presentations at the SAAG meeting to solicit more
 feedback.
 
 On Aug 6, 2011, at 10:29 AM, Eran Hammer-Lahav wrote:
 
  Did the chairs issue a last call request to anyone in the security area? I
 thought the whole point of moving this working group from apps to security
 was to increase the review and participation of that area. So far I have seen
 absolutely nothing to indicate any such contribution. I would like to know
 what actual actions are being taken to turn this promise into reality.
 
  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


[OAUTH-WG] Request for open issues resolution

2011-09-04 Thread Eran Hammer-Lahav
#19 - no text proposed, consider current text sufficient. Close.
#20 - reference to DOM variable removed. Close.
#21 - resolved by new text, no comments received. Close.
#24 - pending comments. Close if agreed to by Torsten.
#25 - no comments received to proposed text which has been applied. Close.

I will post -21 shortly and will follow with -22 if needed later this week. I 
am only posting -21 to help facilitate the discussion moving forward, not to 
imply consensus on items still open (issue #24 and new CSRF text).

EHL

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


[OAUTH-WG] Draft -21 next steps

2011-09-04 Thread Eran Hammer-Lahav
I'd like to ask the chairs to declare a 2 weeks review period limited to 
changes made since -20 after which we will either declare -21 as the final WG 
draft or publish a quick -22 with all changes agreed prior on the list and no 
additional WG review period. Of course, the chairs can change all these rules 
as they see fit.

EHL


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


Re: [OAUTH-WG] Auth Code Swap Attack

2011-08-25 Thread Eran Hammer-Lahav
Everyone yourself included indicated that the combination of MUST prevent CSRF 
and SHOULD use 'state' is the way to go. Yes, we still need to agree on text 
but the normative language part is settled.

If you still insist on making 'state' required, I will defer to the chairs to 
decide how to move forward.

EHL

From: Anthony Nadalin tony...@microsoft.commailto:tony...@microsoft.com
Date: Thu, 25 Aug 2011 08:11:01 -0700
To: Eran Hammer-lahav e...@hueniverse.commailto:e...@hueniverse.com, 
Torsten Lodderstedt tors...@lodderstedt.netmailto:tors...@lodderstedt.net
Cc: OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org) 
oauth@ietf.orgmailto:oauth@ietf.org
Subject: RE: [OAUTH-WG] Auth Code Swap Attack

I have not seen any updated text, so I don’t believe we have consensus. Also we 
have a flawed protocol and we are not providing a fix, suggest that MUST be on 
the state also unless someone has a better fix

From: oauth-boun...@ietf.orgmailto:oauth-boun...@ietf.org 
[mailto:oauth-boun...@ietf.org] On Behalf Of Eran Hammer-Lahav
Sent: Wednesday, August 24, 2011 7:54 AM
To: Torsten Lodderstedt
Cc: OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

I believe we have full consensus on this approach.

EHL

From: Torsten Lodderstedt 
[mailto:tors...@lodderstedt.net]mailto:[mailto:tors...@lodderstedt.net]
Sent: Tuesday, August 23, 2011 11:06 PM
To: Eran Hammer-Lahav
Cc: OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

making CSRF prevention a MUST and recommending the state parameter as 
implementation pattern is ok with me.

regards,
Torsten.

Am 21.08.2011 21:02, schrieb Eran Hammer-Lahav:
I light to the recent discussion, do you still feel that changing ‘state’ from 
optional to required is the best approach?

EHL

From: Torsten Lodderstedt [mailto:tors...@lodderstedt.net]
Sent: Sunday, August 21, 2011 11:04 AM
To: Eran Hammer-Lahav
Cc: OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

My intention is to require clients to implement CSRF prevention. I thought 
making the state parameter mandatory would be the straightforward way.

regards,
Torsten.

Am 18.08.2011 08:04, schrieb Eran Hammer-Lahav:
I would like to hear from the other 3 authors of the proposed change about 
their reasons for changing the use of ‘state’ from recommended to required for 
CSRF prevention. It would also help moving this issue forward if the 4 authors 
can provide answers or clarifications on the issues raised below.

Assuming we can count all 4 authors are in favor of making the change, I 
believe we have a tie (4:4) and therefore no consensus for making it (as of 
this point). However, we did identify issues with the section’s language and 
clarity which we should address either way.

To clarify – I am not proposing we close this issue just yet.

EHL

From:oauth-boun...@ietf.orgmailto:oauth-boun...@ietf.org 
[mailto:oauth-boun...@ietf.org] On Behalf Of Eran Hammer-Lahav
Sent: Monday, August 15, 2011 9:35 AM
To: OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

To demonstrate why making state required as proposed isn’t very helpful, here 
is an incomplete list of other requirements needed to make an effective CSRF:

* State value must not be empty (a common bug in many implementations using 
simple value comparison).

* ‘Non-guessable’ isn’t sufficient as most developers will simply use a hash of 
the session cookie, with or without salt which isn’t sufficient. We use “cannot 
be generated, modified, or guessed to produce valid values” elsewhere in the 
document, but this is much easier to get right for access tokens and refresh 
tokens than CSRF tokens which are often just some algorithm on top of the 
session cookie.

* State CSRF value should be short-lived or based on a short-lived session 
cookie to prevent the use of a leaked state value in multiple attacks on the 
same user session once the leak is no longer viable.

In addition, this is not what “state” was originally intended for. If the 
working group decides to mandate a CSRF parameter, it should probably be a new 
parameter with a more appropriate name (e.g. ‘csrf’). By forcing clients to use 
“state” for this purpose, developers will need to use dynamic queries for other 
state information which further reduces the security of the protocol (as the 
draft recommends not using dynamic callback query components). Encoding both 
CSRF tokens and other state information can be non-intuitive or complicated for 
some developers/platforms.

EHL




From: Eran Hammer-Lahav
Sent: Friday, August 12, 2011 2:53 PM
To: Anthony Nadalin; OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

This is really just a flavor of CSRF attacks. I have no objections to better 
documenting it (though I feel the current text is already sufficient), but we 
can't realistically expect to identify

Re: [OAUTH-WG] Auth Code Swap Attack

2011-08-25 Thread Eran Hammer-Lahav
We already have one recommended implementation with 'state'. It is clearly 
described in the security section which is the right place to define it. I will 
further emphasize it in the 'state' parameter definition as previously proposed.

BTW, as stated repeatedly before, making the parameter required does not 
provide *ANY* CSRF protection. It just forces it to be included. To guarantee 
CSRF protection, you need a LOT more normative language in how to bind the 
state value with some form of session information on the user-agent – which is 
clearly outside the scope of this working group. Requiring CSRF protection 
accomplishes that, and if a developer doesn't know how to do that, 
unfortunately, we will not be able to help within the scope of this document – 
which doesn't exclude it from being discussed in details in the thread model 
document as advised by the chairs.

CSRF is a serious attack vector, but our correct course is to highlight it, 
suggest a path, and leave it to developers to implement proper security like 
the other handful of possible attacks listed.

EHL

From: Phil Hunt phil.h...@oracle.commailto:phil.h...@oracle.com
Date: Thu, 25 Aug 2011 09:25:30 -0700
To: Anthony Nadalin tony...@microsoft.commailto:tony...@microsoft.com
Cc: Eran Hammer-lahav e...@hueniverse.commailto:e...@hueniverse.com, 
Torsten Lodderstedt tors...@lodderstedt.netmailto:tors...@lodderstedt.net, 
OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org) 
oauth@ietf.orgmailto:oauth@ietf.org
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

I agree. I think at least one implementation must be included in the spec.  
However, I'd like to see it left that more methods could be implemented in the 
future.

I can live with SHOULD given the definition in 2119.  Or phrased MUST 
implement at least the following method... for stronger language.

Tony is correct, I think it is a serious issue given the dependence on grants 
being passed by URLs through redirects.

Phil

@independentid
www.independentid.comhttp://www.independentid.com
phil.h...@oracle.commailto:phil.h...@oracle.com





On 2011-08-25, at 8:11 AM, Anthony Nadalin wrote:

I have not seen any updated text, so I don’t believe we have consensus. Also we 
have a flawed protocol and we are not providing a fix, suggest that MUST be on 
the state also unless someone has a better fix

From: oauth-boun...@ietf.orgmailto:oauth-boun...@ietf.org 
[mailto:oauth-boun...@ietf.org] On Behalf Of Eran Hammer-Lahav
Sent: Wednesday, August 24, 2011 7:54 AM
To: Torsten Lodderstedt
Cc: OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

I believe we have full consensus on this approach.

EHL

From: Torsten Lodderstedt 
[mailto:tors...@lodderstedt.net]mailto:[mailto:tors...@lodderstedt.net]
Sent: Tuesday, August 23, 2011 11:06 PM
To: Eran Hammer-Lahav
Cc: OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

making CSRF prevention a MUST and recommending the state parameter as 
implementation pattern is ok with me.

regards,
Torsten.

Am 21.08.2011 21:02, schrieb Eran Hammer-Lahav:
I light to the recent discussion, do you still feel that changing ‘state’ from 
optional to required is the best approach?

EHL

From: Torsten Lodderstedt [mailto:tors...@lodderstedt.net]
Sent: Sunday, August 21, 2011 11:04 AM
To: Eran Hammer-Lahav
Cc: OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

My intention is to require clients to implement CSRF prevention. I thought 
making the state parameter mandatory would be the straightforward way.

regards,
Torsten.

Am 18.08.2011 08:04, schrieb Eran Hammer-Lahav:
I would like to hear from the other 3 authors of the proposed change about 
their reasons for changing the use of ‘state’ from recommended to required for 
CSRF prevention. It would also help moving this issue forward if the 4 authors 
can provide answers or clarifications on the issues raised below.

Assuming we can count all 4 authors are in favor of making the change, I 
believe we have a tie (4:4) and therefore no consensus for making it (as of 
this point). However, we did identify issues with the section’s language and 
clarity which we should address either way.

To clarify – I am not proposing we close this issue just yet.

EHL

From: oauth-boun...@ietf.orgmailto:oauth-boun...@ietf.org 
[mailto:oauth-boun...@ietf.org] On Behalf Of Eran Hammer-Lahav
Sent: Monday, August 15, 2011 9:35 AM
To: OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

To demonstrate why making state required as proposed isn’t very helpful, here 
is an incomplete list of other requirements needed to make an effective CSRF:

* State value must not be empty (a common bug in many implementations using 
simple value comparison).

* ‘Non-guessable’ isn’t sufficient as most developers will simply use a hash of 
the session cookie, with or without salt which isn’t

Re: [OAUTH-WG] Auth Code Swap Attack

2011-08-24 Thread Eran Hammer-Lahav
I believe we have full consensus on this approach.

EHL

From: Torsten Lodderstedt [mailto:tors...@lodderstedt.net]
Sent: Tuesday, August 23, 2011 11:06 PM
To: Eran Hammer-Lahav
Cc: OAuth WG (oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

making CSRF prevention a MUST and recommending the state parameter as 
implementation pattern is ok with me.

regards,
Torsten.

Am 21.08.2011 21:02, schrieb Eran Hammer-Lahav:
I light to the recent discussion, do you still feel that changing 'state' from 
optional to required is the best approach?

EHL

From: Torsten Lodderstedt [mailto:tors...@lodderstedt.net]
Sent: Sunday, August 21, 2011 11:04 AM
To: Eran Hammer-Lahav
Cc: OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

My intention is to require clients to implement CSRF prevention. I thought 
making the state parameter mandatory would be the straightforward way.

regards,
Torsten.

Am 18.08.2011 08:04, schrieb Eran Hammer-Lahav:
I would like to hear from the other 3 authors of the proposed change about 
their reasons for changing the use of 'state' from recommended to required for 
CSRF prevention. It would also help moving this issue forward if the 4 authors 
can provide answers or clarifications on the issues raised below.

Assuming we can count all 4 authors are in favor of making the change, I 
believe we have a tie (4:4) and therefore no consensus for making it (as of 
this point). However, we did identify issues with the section's language and 
clarity which we should address either way.

To clarify - I am not proposing we close this issue just yet.

EHL

From: oauth-boun...@ietf.orgmailto:oauth-boun...@ietf.org 
[mailto:oauth-boun...@ietf.org] On Behalf Of Eran Hammer-Lahav
Sent: Monday, August 15, 2011 9:35 AM
To: OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

To demonstrate why making state required as proposed isn't very helpful, here 
is an incomplete list of other requirements needed to make an effective CSRF:

* State value must not be empty (a common bug in many implementations using 
simple value comparison).

* 'Non-guessable' isn't sufficient as most developers will simply use a hash of 
the session cookie, with or without salt which isn't sufficient. We use cannot 
be generated, modified, or guessed to produce valid values elsewhere in the 
document, but this is much easier to get right for access tokens and refresh 
tokens than CSRF tokens which are often just some algorithm on top of the 
session cookie.

* State CSRF value should be short-lived or based on a short-lived session 
cookie to prevent the use of a leaked state value in multiple attacks on the 
same user session once the leak is no longer viable.

In addition, this is not what state was originally intended for. If the 
working group decides to mandate a CSRF parameter, it should probably be a new 
parameter with a more appropriate name (e.g. 'csrf'). By forcing clients to use 
state for this purpose, developers will need to use dynamic queries for other 
state information which further reduces the security of the protocol (as the 
draft recommends not using dynamic callback query components). Encoding both 
CSRF tokens and other state information can be non-intuitive or complicated for 
some developers/platforms.

EHL




From: Eran Hammer-Lahav
Sent: Friday, August 12, 2011 2:53 PM
To: Anthony Nadalin; OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

This is really just a flavor of CSRF attacks. I have no objections to better 
documenting it (though I feel the current text is already sufficient), but we 
can't realistically expect to identify and close every possible browser-based 
attack. A new one is invented every other week.

The problem with this text is that developers who do no understand CSRF attacks 
are not likely to implement it correctly with this information. Those who 
understand it do not need the extra verbiage which is more confusing than 
helpful.

As for the new requirements, they are insufficient to actually accomplish what 
the authors propose without additional requirements on state local storage and 
verification to complete the flow. Also, the proposed text needs clarifications 
as noted below.


From: Anthony Nadalin tony...@microsoft.commailto:tony...@microsoft.com
Date: Fri, 12 Aug 2011 12:06:36 -0700
To: OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org) 
oauth@ietf.orgmailto:oauth@ietf.org
Subject: [OAUTH-WG] Auth Code Swap Attack



Recommended Changes to draft-ietf-oauth-v2

In section 4, request options (e.g. 4.1.1) featuring state should change from:

state
OPTIONAL. An opaque value used by the client to maintain state between the 
request and callback. The authorization server includes this value when 
redirecting the user-agent back to the client.

to:

state
REQUIRED. An opaque value used by the client to maintain state between the 
request

Re: [OAUTH-WG] Auth Code Swap Attack

2011-08-22 Thread Eran Hammer-Lahav
Sounds like a good compromise. I will play with the text Bill proposed and 
follow up with new text on the list.

EHL

From: Phil Hunt phil.h...@oracle.commailto:phil.h...@oracle.com
Date: Mon, 22 Aug 2011 08:57:54 -0700
To: Eran Hammer-lahav e...@hueniverse.commailto:e...@hueniverse.com
Cc: record...@gmail.commailto:record...@gmail.com 
record...@gmail.commailto:record...@gmail.com, OAuth WG 
(oauth@ietf.orgmailto:oauth@ietf.org) oauth@ietf.orgmailto:oauth@ietf.org
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

Eran, to summarize,

1. The server cannot tell if the client did its job - so the server can't 
require the client to implement state
2. There are many ways to enforce CSRF

There is an important network effect  here (and in general with OAuth) - that 
client decisions affect the security of the resource server and vice-versa. One 
could argue, that many implementers will want a solution for #1 above -- some 
form of mutual state validation.  This may not be of interest to today's 
implementers, but I know this is critical for government and financial services 
where fraud (and phishing) become a much larger issue.

I am beginning to believe we can't fix this now. This will likely have to be an 
optional RFC for higher strength anti-CSRF which specifies a standard 
methodology that can be verified by the server (so it can enforce that it was 
done).  My belief is that a standard methodology would make things easier for 
developers since they would have clear instructions on how to do it. Hopefully 
this would address folks like Facebook who are concerned developers have a hard 
time getting this right.

Because of this, I re-checked RFC2119 regarding making state RECOMMENDED.  
Whereas REQUIRED is equivalent to MUST, RECOMMENDED is equivalent to 
SHOULD and could be used as a parameter qualifier. Though I agree, 
traditionally this isn't done.  However, my feeling is that the developer needs 
to be alerted to the importance of state. Deciding not to use it means they 
should have some other technique to counter CSRF.  This is what SHOULD is meant 
for.  Changing to RECOMMENDED makes the calls consistent with the security 
consideration requirement that anti-CSRF is a MUST.

Phil

@independentid
www.independentid.com
phil.h...@oracle.commailto:phil.h...@oracle.com





On 2011-08-21, at 10:53 PM, Eran Hammer-Lahav wrote:

-Original Message-
From: Phil Hunt [mailto:phil.h...@oracle.com]
Sent: Sunday, August 21, 2011 10:39 PM
To: David Recordon
Cc: Eran Hammer-Lahav; OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack
I think the complication here is that CSRF issues are multi-site issues where
the attacker cross connecting his client with a victims resource, or a victims
client with the attackers resource.
So while an individual site (e.g. Facebook) may presume little or no risk -
there is a network effect here. A CSRF attacker could be using facebook to
attack another site. See Yaron's original text about Plaxo/Live at the start of
this thread.
It's still just a CSRF attack.
Would it be reasonable to assess whether a resource site could make it
mandatory based on a pre-registered client?  IOW, would Facebook want to
make state mandatory for Confidential clients, but not public clients?
That's irrelevant. The authorization server has absolutely no way of verifying 
if the client is implementing a CSRF protection properly. Making 'state' 
required does not accomplish such an enforcement. A client can pass the 
proposed text requirement with state=ni.
Would it be acceptable to change status from OPTIONAL to RECOMMENDED?
Parameters are either required or optional. We can makes it optional and 
recommended for a particular purpose which is consistent with the existing text.
It should be mandatory to implement CSRF protection. We agree on that and 
should add it to the text. We also agree that 'state' is a great way of 
implementing it and should recommend it. We already do that in the security 
consideration section and can enhance that when defining the 'state' parameter.
EHL


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


Re: [OAUTH-WG] Auth Code Swap Attack

2011-08-21 Thread Eran Hammer-Lahav
I light to the recent discussion, do you still feel that changing 'state' from 
optional to required is the best approach?

EHL

From: Torsten Lodderstedt [mailto:tors...@lodderstedt.net]
Sent: Sunday, August 21, 2011 11:04 AM
To: Eran Hammer-Lahav
Cc: OAuth WG (oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

My intention is to require clients to implement CSRF prevention. I thought 
making the state parameter mandatory would be the straightforward way.

regards,
Torsten.

Am 18.08.2011 08:04, schrieb Eran Hammer-Lahav:
I would like to hear from the other 3 authors of the proposed change about 
their reasons for changing the use of 'state' from recommended to required for 
CSRF prevention. It would also help moving this issue forward if the 4 authors 
can provide answers or clarifications on the issues raised below.

Assuming we can count all 4 authors are in favor of making the change, I 
believe we have a tie (4:4) and therefore no consensus for making it (as of 
this point). However, we did identify issues with the section's language and 
clarity which we should address either way.

To clarify - I am not proposing we close this issue just yet.

EHL

From: oauth-boun...@ietf.orgmailto:oauth-boun...@ietf.org 
[mailto:oauth-boun...@ietf.org] On Behalf Of Eran Hammer-Lahav
Sent: Monday, August 15, 2011 9:35 AM
To: OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

To demonstrate why making state required as proposed isn't very helpful, here 
is an incomplete list of other requirements needed to make an effective CSRF:

* State value must not be empty (a common bug in many implementations using 
simple value comparison).

* 'Non-guessable' isn't sufficient as most developers will simply use a hash of 
the session cookie, with or without salt which isn't sufficient. We use cannot 
be generated, modified, or guessed to produce valid values elsewhere in the 
document, but this is much easier to get right for access tokens and refresh 
tokens than CSRF tokens which are often just some algorithm on top of the 
session cookie.

* State CSRF value should be short-lived or based on a short-lived session 
cookie to prevent the use of a leaked state value in multiple attacks on the 
same user session once the leak is no longer viable.

In addition, this is not what state was originally intended for. If the 
working group decides to mandate a CSRF parameter, it should probably be a new 
parameter with a more appropriate name (e.g. 'csrf'). By forcing clients to use 
state for this purpose, developers will need to use dynamic queries for other 
state information which further reduces the security of the protocol (as the 
draft recommends not using dynamic callback query components). Encoding both 
CSRF tokens and other state information can be non-intuitive or complicated for 
some developers/platforms.

EHL




From: Eran Hammer-Lahav
Sent: Friday, August 12, 2011 2:53 PM
To: Anthony Nadalin; OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

This is really just a flavor of CSRF attacks. I have no objections to better 
documenting it (though I feel the current text is already sufficient), but we 
can't realistically expect to identify and close every possible browser-based 
attack. A new one is invented every other week.

The problem with this text is that developers who do no understand CSRF attacks 
are not likely to implement it correctly with this information. Those who 
understand it do not need the extra verbiage which is more confusing than 
helpful.

As for the new requirements, they are insufficient to actually accomplish what 
the authors propose without additional requirements on state local storage and 
verification to complete the flow. Also, the proposed text needs clarifications 
as noted below.


From: Anthony Nadalin tony...@microsoft.commailto:tony...@microsoft.com
Date: Fri, 12 Aug 2011 12:06:36 -0700
To: OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org) 
oauth@ietf.orgmailto:oauth@ietf.org
Subject: [OAUTH-WG] Auth Code Swap Attack



Recommended Changes to draft-ietf-oauth-v2

In section 4, request options (e.g. 4.1.1) featuring state should change from:

state
OPTIONAL. An opaque value used by the client to maintain state between the 
request and callback. The authorization server includes this value when 
redirecting the user-agent back to the client.

to:

state
REQUIRED. An opaque value used by the client to maintain state between the 
request and callback. The authorization server includes this value when 
redirecting the user-agent back to the client. The encoded value SHOULD enable 
the client application to determine the user-context that was active at the 
time of the  request (see section 10.12). The value MUST NOT be guessable or 
predictable, and MUST be kept confidential.


Making the parameter required without making its usage required (I.e. value 
SHOULD enable) accomplishes nothing

Re: [OAUTH-WG] Auth Code Swap Attack

2011-08-21 Thread Eran Hammer-Lahav


 -Original Message-
 From: Phil Hunt [mailto:phil.h...@oracle.com]
 Sent: Sunday, August 21, 2011 10:39 PM
 To: David Recordon
 Cc: Eran Hammer-Lahav; OAuth WG (oauth@ietf.org)
 Subject: Re: [OAUTH-WG] Auth Code Swap Attack
 
 I think the complication here is that CSRF issues are multi-site issues where
 the attacker cross connecting his client with a victims resource, or a victims
 client with the attackers resource.
 
 So while an individual site (e.g. Facebook) may presume little or no risk -
 there is a network effect here. A CSRF attacker could be using facebook to
 attack another site. See Yaron's original text about Plaxo/Live at the start 
 of
 this thread.

It's still just a CSRF attack.
 
 Would it be reasonable to assess whether a resource site could make it
 mandatory based on a pre-registered client?  IOW, would Facebook want to
 make state mandatory for Confidential clients, but not public clients?

That's irrelevant. The authorization server has absolutely no way of verifying 
if the client is implementing a CSRF protection properly. Making 'state' 
required does not accomplish such an enforcement. A client can pass the 
proposed text requirement with state=ni.

 Would it be acceptable to change status from OPTIONAL to RECOMMENDED?

Parameters are either required or optional. We can makes it optional and 
recommended for a particular purpose which is consistent with the existing text.

It should be mandatory to implement CSRF protection. We agree on that and 
should add it to the text. We also agree that 'state' is a great way of 
implementing it and should recommend it. We already do that in the security 
consideration section and can enhance that when defining the 'state' parameter.

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


Re: [OAUTH-WG] Auth Code Swap Attack

2011-08-18 Thread Eran Hammer-Lahav
I would like to hear from the other 3 authors of the proposed change about 
their reasons for changing the use of 'state' from recommended to required for 
CSRF prevention. It would also help moving this issue forward if the 4 authors 
can provide answers or clarifications on the issues raised below.

Assuming we can count all 4 authors are in favor of making the change, I 
believe we have a tie (4:4) and therefore no consensus for making it (as of 
this point). However, we did identify issues with the section's language and 
clarity which we should address either way.

To clarify - I am not proposing we close this issue just yet.

EHL

From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf Of Eran 
Hammer-Lahav
Sent: Monday, August 15, 2011 9:35 AM
To: OAuth WG (oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

To demonstrate why making state required as proposed isn't very helpful, here 
is an incomplete list of other requirements needed to make an effective CSRF:

* State value must not be empty (a common bug in many implementations using 
simple value comparison).

* 'Non-guessable' isn't sufficient as most developers will simply use a hash of 
the session cookie, with or without salt which isn't sufficient. We use cannot 
be generated, modified, or guessed to produce valid values elsewhere in the 
document, but this is much easier to get right for access tokens and refresh 
tokens than CSRF tokens which are often just some algorithm on top of the 
session cookie.

* State CSRF value should be short-lived or based on a short-lived session 
cookie to prevent the use of a leaked state value in multiple attacks on the 
same user session once the leak is no longer viable.

In addition, this is not what state was originally intended for. If the 
working group decides to mandate a CSRF parameter, it should probably be a new 
parameter with a more appropriate name (e.g. 'csrf'). By forcing clients to use 
state for this purpose, developers will need to use dynamic queries for other 
state information which further reduces the security of the protocol (as the 
draft recommends not using dynamic callback query components). Encoding both 
CSRF tokens and other state information can be non-intuitive or complicated for 
some developers/platforms.

EHL




From: Eran Hammer-Lahav
Sent: Friday, August 12, 2011 2:53 PM
To: Anthony Nadalin; OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

This is really just a flavor of CSRF attacks. I have no objections to better 
documenting it (though I feel the current text is already sufficient), but we 
can't realistically expect to identify and close every possible browser-based 
attack. A new one is invented every other week.

The problem with this text is that developers who do no understand CSRF attacks 
are not likely to implement it correctly with this information. Those who 
understand it do not need the extra verbiage which is more confusing than 
helpful.

As for the new requirements, they are insufficient to actually accomplish what 
the authors propose without additional requirements on state local storage and 
verification to complete the flow. Also, the proposed text needs clarifications 
as noted below.


From: Anthony Nadalin tony...@microsoft.commailto:tony...@microsoft.com
Date: Fri, 12 Aug 2011 12:06:36 -0700
To: OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org) 
oauth@ietf.orgmailto:oauth@ietf.org
Subject: [OAUTH-WG] Auth Code Swap Attack



Recommended Changes to draft-ietf-oauth-v2

In section 4, request options (e.g. 4.1.1) featuring state should change from:

state
OPTIONAL. An opaque value used by the client to maintain state between the 
request and callback. The authorization server includes this value when 
redirecting the user-agent back to the client.

to:

state
REQUIRED. An opaque value used by the client to maintain state between the 
request and callback. The authorization server includes this value when 
redirecting the user-agent back to the client. The encoded value SHOULD enable 
the client application to determine the user-context that was active at the 
time of the  request (see section 10.12). The value MUST NOT be guessable or 
predictable, and MUST be kept confidential.


Making the parameter required without making its usage required (I.e. value 
SHOULD enable) accomplishes nothing. Also, what does MUST be kept 
confidential mean? Confidential from what? Why specify an encoded value?


Section 10.12 Cross-Site Request Forgery

Change to:

Cross-site request forgery (CSRF) is a web-based attack whereby HTTP requests 
are transmitted from the user-agent of an end-user the server trusts or has 
authenticated. CSRF attacks enable the attacker to intermix the attacker's 
security context with that of the resource owner resulting in a compromise of 
either the resource server or of the client application itself. In the OAuth 
context, such attacks allow an attacker

Re: [OAUTH-WG] Authorization Code Leakage feedback (Yaron Goland)

2011-08-18 Thread Eran Hammer-Lahav
I think using phishing here is misleading. This is not a classic phishing 
attack. I'm open to other suggestions.

EHL

From: Lodderstedt, Torsten [mailto:t.lodderst...@telekom.de]
Sent: Wednesday, August 17, 2011 3:22 AM
To: Eran Hammer-Lahav; OAuth WG
Subject: AW: Authorization Code Leakage feedback (Yaron Goland)

Text sounds very good.

wrt title: this threat is about phishing another user's authorization code. 
Because of the design of the protocol this requires the attacker to use another 
redirect URI than used by the legitimate client. To make this the title sound 
bit weird to me. Why not authorization code phishing?

regards,
Torsten.

Von: Eran Hammer-Lahav 
[mailto:e...@hueniverse.com]mailto:[mailto:e...@hueniverse.com]
Gesendet: Mittwoch, 17. August 2011 08:39
An: OAuth WG
Betreff: [OAUTH-WG] Authorization Code Leakage feedback (Yaron Goland)


 10.6. Authorization Code Leakage: Comment I fancy myself as being

 reasonably intelligent and I'm unclear what attack is actually being described

 here.



Yeah... I had to go back to -16 to be reminded of the section original title 
'session fixation attack' to figure out what this was about.



How about this:



10.6.  Authorization Code Redirection URI Manipulation



   When requesting authorization using the authorization code grant

   type, the client can specify a redirection URI via the redirect_uri

   parameter.  If an attacker can manipulate the value of the

   redirection URI, it can cause the authorization server to redirect

   the resource owner user-agent to a URI under the control of the

   attacker with the authorization code.



   An attacker can create an account at a legitimate client and initiate

   the authorization flow.  When the attacker is sent to the

   authorization server to grant access, the attacker grabs the

   authorization URI provided by the legitimate client, and replaces the

   client's redirection URI with a URI under the control of the

   attacker.  The attacker then tricks the victim into following the

   manipulated link to authorize access to the legitimate client.



   Once at the authorization server, the victim is prompted with a

   normal, valid request on behalf of a legitimate and familiar client,

   and authorizes the request.  The victim is then redirected to an

   endpoint under the control of the attacker with the authorization

   code.  The attacker completes the authorization flow by sending

   the authorization code to the client using the original redirection

   URI provided by the client.  The client exchanges the authorization

   code with an access token and links it to the attacker's client

  account which can now gain access to the protected resources

   authorized by the victim (via the client).



   In order to prevent such an attack, the authorization server MUST

   ensure that the redirection URI used to obtain the authorization

   code, is the same as the redirection URI provided when exchanging the

   authorization code for an access token.  The authorization server

   SHOULD require the client to register their redirection URI and if

   provided, MUST validate the redirection URI received in the

   authorization request against the registered value.



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


Re: [OAUTH-WG] Auth Code Swap Attack

2011-08-18 Thread Eran Hammer-Lahav
There was no argument made. You described a CSRF attack scenario which carries 
the exact same risk and uses the exact same solution as the CSRF attack already 
present in the specification. Then jumped from there to a new normative 
requirement. I have not seen any argument to justify the new MUST requirement - 
if I have missed it, please point me in the right direction.

Also, -20 has no such inconsistencies. It is OPTIONAL in one place and 
RECOMMENDED in the other.

However, -20 does not *require* CSRF protection which put it at odds with how 
we address every other attack vector, so we are in full agreement that CSRF 
prevention is a MUST. My text fixes that in a manner consistent with how you 
and the other security consideration section drafters approached many of the 
other sections (by requiring a solution but not limiting developers to a 
particular one).

There are two open issues:

- the quality of the prose (I agree that Bill's text is a good new starting 
point), and

- whether we should dictate to developers the parameter name (and location) of 
the CSRF artifact.

If we decide that we should mandate such a parameter, we then need to decide if 
'state' is the right place and if it is, find a new way to describe it because 
using it for CSRF is a relative new use case for the parameter (which still 
have all the previous use cases).

EHL


From: Phil Hunt [mailto:phil.h...@oracle.com]
Sent: Wednesday, August 17, 2011 11:41 PM
To: Eran Hammer-Lahav
Cc: OAuth WG (oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

I felt the argument provided was persuasive and that the current spec leaves 
implementers open to attack. I get concerned when the core spec says OPTIONAL 
for state and then Security Considerations says REQUIRED. The inconsistency 
seemed to be a flaw in draft 20.

As to your comment about a tie vote, all that shows is a lack of consensus. 
Clearly we need to keep working on some more proposals.

I think it is reasonable to determine whether MUST is appropriate in all cases. 
I agree with what you said earlier, we should have more specific language other 
then of sufficient complexity to describe the value of the state parameter.

I saw a proposal by William Mills that I would like to see more discussion on.

Phil

@independentid
www.independentid.comhttp://www.independentid.com
phil.h...@oracle.commailto:phil.h...@oracle.com




On 2011-08-17, at 11:04 PM, Eran Hammer-Lahav wrote:


I would like to hear from the other 3 authors of the proposed change about 
their reasons for changing the use of 'state' from recommended to required for 
CSRF prevention. It would also help moving this issue forward if the 4 authors 
can provide answers or clarifications on the issues raised below.

Assuming we can count all 4 authors are in favor of making the change, I 
believe we have a tie (4:4) and therefore no consensus for making it (as of 
this point). However, we did identify issues with the section's language and 
clarity which we should address either way.

To clarify - I am not proposing we close this issue just yet.

EHL

From: oauth-boun...@ietf.orgmailto:oauth-boun...@ietf.org 
[mailto:oauth-boun...@ietf.org]mailto:[mailto:oauth-boun...@ietf.org] On 
Behalf Of Eran Hammer-Lahav
Sent: Monday, August 15, 2011 9:35 AM
To: OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org)
Subject: Re: [OAUTH-WG] Auth Code Swap Attack

To demonstrate why making state required as proposed isn't very helpful, here 
is an incomplete list of other requirements needed to make an effective CSRF:

* State value must not be empty (a common bug in many implementations using 
simple value comparison).

* 'Non-guessable' isn't sufficient as most developers will simply use a hash of 
the session cookie, with or without salt which isn't sufficient. We use cannot 
be generated, modified, or guessed to produce valid values elsewhere in the 
document, but this is much easier to get right for access tokens and refresh 
tokens than CSRF tokens which are often just some algorithm on top of the 
session cookie.

* State CSRF value should be short-lived or based on a short-lived session 
cookie to prevent the use of a leaked state value in multiple attacks on the 
same user session once the leak is no longer viable.

In addition, this is not what state was originally intended for. If the 
working group decides to mandate a CSRF parameter, it should probably be a new 
parameter with a more appropriate name (e.g. 'csrf'). By forcing clients to use 
state for this purpose, developers will need to use dynamic queries for other 
state information which further reduces the security of the protocol (as the 
draft recommends not using dynamic callback query components). Encoding both 
CSRF tokens and other state information can be non-intuitive or complicated for 
some developers/platforms.

EHL




From: Eran Hammer-Lahav
Sent: Friday, August 12, 2011 2:53 PM
To: Anthony Nadalin; OAuth WG (oauth@ietf.orgmailto:oauth@ietf.org

Re: [OAUTH-WG] Authorization Code Leakage feedback (Yaron Goland)

2011-08-18 Thread Eran Hammer-Lahav
But it's not really a counterfeit client but a real client with modified 
redirection uri. It is a counterfeit redirection endpoint. *I* understand 
exactly what you mean, but I fear new readers will get completely confused by 
the title.

EHL

From: Lodderstedt, Torsten [mailto:t.lodderst...@telekom.de]
Sent: Thursday, August 18, 2011 12:12 AM
To: Eran Hammer-Lahav; OAuth WG
Subject: AW: Authorization Code Leakage feedback (Yaron Goland)

The security document designates it as Authorization code leakage through 
counterfeit client

http://tools.ietf.org/html/draft-ietf-oauth-v2-threatmodel-00#section-4.4.1.7


Von: Eran Hammer-Lahav 
[mailto:e...@hueniverse.com]mailto:[mailto:e...@hueniverse.com]
Gesendet: Donnerstag, 18. August 2011 08:06
An: Lodderstedt, Torsten; OAuth WG
Betreff: RE: Authorization Code Leakage feedback (Yaron Goland)

I think using phishing here is misleading. This is not a classic phishing 
attack. I'm open to other suggestions.

EHL

From: Lodderstedt, Torsten 
[mailto:t.lodderst...@telekom.de]mailto:[mailto:t.lodderst...@telekom.de]
Sent: Wednesday, August 17, 2011 3:22 AM
To: Eran Hammer-Lahav; OAuth WG
Subject: AW: Authorization Code Leakage feedback (Yaron Goland)

Text sounds very good.

wrt title: this threat is about phishing another user's authorization code. 
Because of the design of the protocol this requires the attacker to use another 
redirect URI than used by the legitimate client. To make this the title sound 
bit weird to me. Why not authorization code phishing?

regards,
Torsten.

Von: Eran Hammer-Lahav 
[mailto:e...@hueniverse.com]mailto:[mailto:e...@hueniverse.com]
Gesendet: Mittwoch, 17. August 2011 08:39
An: OAuth WG
Betreff: [OAUTH-WG] Authorization Code Leakage feedback (Yaron Goland)


 10.6. Authorization Code Leakage: Comment I fancy myself as being

 reasonably intelligent and I'm unclear what attack is actually being described

 here.



Yeah... I had to go back to -16 to be reminded of the section original title 
'session fixation attack' to figure out what this was about.



How about this:



10.6.  Authorization Code Redirection URI Manipulation



   When requesting authorization using the authorization code grant

   type, the client can specify a redirection URI via the redirect_uri

   parameter.  If an attacker can manipulate the value of the

   redirection URI, it can cause the authorization server to redirect

   the resource owner user-agent to a URI under the control of the

   attacker with the authorization code.



   An attacker can create an account at a legitimate client and initiate

   the authorization flow.  When the attacker is sent to the

   authorization server to grant access, the attacker grabs the

   authorization URI provided by the legitimate client, and replaces the

   client's redirection URI with a URI under the control of the

   attacker.  The attacker then tricks the victim into following the

   manipulated link to authorize access to the legitimate client.



   Once at the authorization server, the victim is prompted with a

   normal, valid request on behalf of a legitimate and familiar client,

   and authorizes the request.  The victim is then redirected to an

   endpoint under the control of the attacker with the authorization

   code.  The attacker completes the authorization flow by sending

   the authorization code to the client using the original redirection

   URI provided by the client.  The client exchanges the authorization

   code with an access token and links it to the attacker's client

  account which can now gain access to the protected resources

   authorized by the victim (via the client).



   In order to prevent such an attack, the authorization server MUST

   ensure that the redirection URI used to obtain the authorization

   code, is the same as the redirection URI provided when exchanging the

   authorization code for an access token.  The authorization server

   SHOULD require the client to register their redirection URI and if

   provided, MUST validate the redirection URI received in the

   authorization request against the registered value.



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


Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner Impersonation)

2011-08-18 Thread Eran Hammer-Lahav
Thanks. You have a typo in #1 (the authorization endpoint belongs to the 
authorization server, not client).

This is a textbook CSRF attack on the authorization endpoint.

The right solution is for the authorization server to set or maintain a session 
cookie (or other same-origin-protected state in the browser) in #1 as well as 
some hidden CSRF token in the Accept form and not allow CORS calls to that 
endpoint. I don't see how the measures proposed in the new section are relevant 
here.

EHL


 -Original Message-
 From: Niv Steingarten [mailto:nivst...@gmail.com]
 Sent: Thursday, August 18, 2011 5:49 AM
 To: Eran Hammer-Lahav
 Cc: Torsten Lodderstedt; oauth@ietf.org
 Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
 Impersonation)
 
 Here are two very simple examples. They are very naive ones, but get the
 point across and I would not be suprised if they could be found in the
 wild:
 
 Say a client has its authorization endpoint at
 
   (1) http://www.domain.com/auth.php
 
 A client requests access to protected resources by redirecting the user-agent
 to:
 
   (2)
 http://www.domain.com/auth.php?response_type=codeclient_id=1234;
   redirect_uri=SOMEURIscope=SOMESCOPE
 
 One possible design choice for the developer, if a bad one, is to have the
 'Allow' button point to:
 
   (3) http://www.domain.com/auth.php?[..previous query
 params..]allow=1
 
 In this case, a malicious client who knows the structure of this auth flow, 
 can
 simply skip (2) and redirect the user-agent to (3) in order to gain access to 
 the
 protected resources.
 
 Another possible design choice for the developer (again, a very bad
 one) would be to issue some kind of session cookie after (2) in order to keep
 a state. Then, the 'Allow' button could possibly point to:
 
   (4) http://www.domain.com/allow.php
 
 without any parameters (since the state is maintained by a cookie).
 
 Here, an attacker could launch a request to (2) just to issue the state 
 cookie,
 and immediately redirect the user-agent to (4) in order to gain access to the
 protected resources.
 
 These are two very naive scenarios which can be averted using a nonce for
 example (+ better design choices, for that matter).
 
 In non-user-agent based clients, a client might also be able to actually 
 scrape
 the contents of the authorization HTML page, and simulate the click
 programmatically. In this case a nonce would be useless, but a CAPTCHA or a
 PIN code/password would solve the problem.
 
 -- Niv
 
 
 
 On Thu, Aug 18, 2011 at 08:58, Eran Hammer-Lahav e...@hueniverse.com
 wrote:
  I've read the thread leading to this, and the proposed text and I do not
 understand the attack. Can you provide a step-by-step scenario of how an
 attacker gains access?
 
  Also, it is unlikely that any major provider is going to require CAPCHA as
 part of the authorization flow. This is especially true in the case of using
 OAuth for login which has to be practically transparent (one click). I would
 hate to recommend a solution that no one is going to take seriously.
 
  I'm keeping this proposed text out until we resolve this questions.
 
  EHL
 
 
  -Original Message-
  From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On
  Behalf Of Torsten Lodderstedt
  Sent: Friday, August 12, 2011 7:56 AM
  To: oauth@ietf.org
  Subject: [OAUTH-WG] Draft 20 last call comment (Resource Owner
  Impersonation)
 
  Hi all,
 
  I think the impersonation issue as raised by Niv on the list should
  be covered by the core spec. It directly aims at the trustworthiness
  of the user consent, which in my opinion is one of the core
  principles of OAuth. I therefore suggest to add a description to section 
  10.
 
  Please find below the text Niv and I prepared. In comparison to
  Niv's original proposal, it covers resource owner impersonation for all
 client categories.
 
  regards,
  Torsten.
 
  proposed text:
 
  10.to be determined Resource Owner Impersonation
 
  When a client requests access to protected resources, the
  authorization flow normally involves the resource owner's explicit
  response to the access request, either granting or denying access to the
 protected resources.
 
  A malicious client can exploit knowledge of the structure of this
  flow in order to gain authorization without the resource owner's
  consent, by transmitting the necessary requests programmatically, and
  simulating the flow against the authorization server. An
  suthorization server will be vulnerable to this threat, if it uses
  non-interactive authentication mechanisms or split the authorization flow
 across multiple pages.
 
  It is RECOMMENDED that the authorization server takes measures to
  ensure that the authorization flow cannot be simulated.
  Attacks performed by scripts running within a trusted user-agent can
  be detected by verifying the source of the request using HTTP referrer
 headers.
  In order to prevent such an attack, the authorization server

Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner Impersonation)

2011-08-18 Thread Eran Hammer-Lahav
Hey Torsten,

 -Original Message-
 From: Lodderstedt, Torsten [mailto:t.lodderst...@telekom.de]
 Sent: Thursday, August 18, 2011 12:52 AM
 To: Eran Hammer-Lahav; Torsten Lodderstedt; oauth@ietf.org
 Subject: AW: [OAUTH-WG] Draft 20 last call comment (Resource Owner
 Impersonation)
 
 I've read the thread leading to this, and the proposed text and I do not
 understand the attack. Can you provide a step-by-step scenario of how an
 attacker gains access?
 
 I'm honestly surprised you do not understand the attack. The client simply
 uses screen scraping on the authorization flow and programmatically
 presses the right buttons. This obviously only works if the client can 
 predict
 the form structure and expected input values.

That's not an attack but a description of capabilities. The attack example 
provided by Niv is a *classic* CSRF attack on the authorization endpoint.

 Also, it is unlikely that any major provider is going to require CAPCHA as 
 part
 of the authorization flow. This is especially true in the case of using OAuth
 for login which has to be practically transparent (one click). I would hate 
 to
 recommend a solution that no one is going to take seriously.
 
 This text has been proposed by 2 WG members (Niv and me), and reviewed
 by 3 others (Phil, Tony, Barry) and all agree with it. What is the foundation 
 of
 your strong assessment?

I don't understand the attack and how the proposed solution address it. I'm 
really happy for everyone else who got it, but I need more information to 
process it.

 The text proposes three classes of countermeasures (detect source, prevent
 using unpredictable input, inform resource owner and give her a chance to
 revoke). CAPTCHAs are one out of three examples given for unpredictable
 input. So I don't understand why your objection focuses on it.

True. But it was central in the list discussion and was promoted as strong 
defense to whatever this attack is. I think that CAPCHA is an impractical 
recommendation in general for the authorization endpoint. Can you point to any 
real world example of a large provider forcing CAPCHA on every login? That's 
what this amounts to.

 The selection
 of the appropriate countermeasure is the task of the service provider and it
 will most likely depend this on its capabilities, cost, user experience, and
 risk/impact associated with abuse. CAPTCHAs (and even one time
 passwords) might not be the choice for the average internet service. This will
 be completely different if OAuth is used to process payment transactions.

The text hints at a very dangerous attack vector of scripts doing 'really bad 
things'. But it doesn't show why this attack requires any kind of automation at 
all. If I am targeting just a small number of people, I can automate this by 
sending a message to a human who will break the CAPCHA and quickly return the 
link to approve access. The other measures either have the same properties, are 
just there to annoy the attacker, or provide some kind of after the fact notice 
(when it is clearly too late to prevent damage).

 I'm keeping this proposed text out until we resolve this questions.
 
 See above - I probably misunderstand the IETF process, but several people
 agreed with it and no one (except you) objected. Why do you hold it back?

no one (except you) is an interesting statement... :-)

This is not a process issue. New text has been proposed with the support of a 
few working group members. The working group has been largely silent about it 
(and the review you referenced above was done off list). I have read the new 
text and did not understand it, therefore, could not edit the text as I have 
done with every other proposed language.

No new draft will be published until we resolve all open issues, which is 
exactly what I have stated above. To make it clearer:

I am keeping this proposed text out of *my* working draft for -21 until the 
working group discusses the text further and addresses the issues I have raised 
about the text as a working group member (technical issues) and as an editor 
(clarity issues).

As for IETF process, all it takes is one objection to block text from being 
*automatically* added to the specification. I have not implied anywhere that I 
have made any decision (or have the authority to) with regard to this text, 
only that I'm holding it back until the issues are resolved. And IETF process 
does not require full agreement to solve issues which is the role of the chairs 
to resolve. In this case, we're nowhere near needing help from the chairs - 
just the assistance of the text authors to do their job and explain it.

EHL







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


Re: [OAUTH-WG] Partial set of last call comments on OAuth draft 20 from Yaron Goland

2011-08-18 Thread Eran Hammer-Lahav
Chairs - please open an issue for this: Clarifying reference to refresh tokens 
in section 1.4.3 of -20.

 -Original Message-
 From: Lodderstedt, Torsten [mailto:t.lodderst...@telekom.de]
 Sent: Thursday, August 18, 2011 1:01 AM
 To: Eran Hammer-Lahav; oauth@ietf.org
 Subject: AW: [OAUTH-WG] Partial set of last call comments on OAuth draft 20
 from Yaron Goland
 
  1.4.3.  Resource Owner Password Credentials: Comment on (when
  combined with a refresh token): This is the first time that refresh
  tokens are mentioned in the spec. And yet there is no explanation of
 what they are.
  I suspect they should anyway be introduced in section 1.4.1 (as
  previously
  noted) and then their use here will make sense.  If that isn't
  possible then it would be good to have a forward reference to section
  1.5 below so the reader has some idea of what's going on.
 
 I removed '(when combined with a refresh token)'. This is actually not true
 as there is no assumption that access tokens are always short-lived or that
 refresh tokens will always be issued to native applications using this grant
 type.
 
 -1 against removing this text (w/o an suitable replacement) and w/o group
 consent.

Since you felt it necessary to make this a process issue, I've asked the chairs 
to open a ticket.

 The -20 text clearly points out that this combination ... eliminates the need
 for the client to store the resource owner credentials for future use. The
 resource owner grant type alone does not justify this statement.
 It's true that the spec does not explicitly defines the lifetime assumption 
 for
 access and refresh tokens (which is pity in my opinion). So at least add
 something like if the token lifetime is reasonable long enough.

How about:

   This grant type can eliminates the need for the client to store the resource 
owner
   credentials for future use, by exchanging the credentials with a long-lived 
access
   token or refresh token.

As for Yaron's original comment, I think this text is sufficient and no forward 
reference is needed to 1.5 (which is a few lines lower in the same page). Also, 
with the new organization proposed by Justin, the access token term isn't full 
defined yet either and it reads just fine.

EHL

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


Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner Impersonation)

2011-08-18 Thread Eran Hammer-Lahav


 -Original Message-
 From: Niv Steingarten [mailto:nivst...@gmail.com]
 Sent: Thursday, August 18, 2011 10:16 AM
 To: Eran Hammer-Lahav
 Cc: Torsten Lodderstedt; oauth@ietf.org
 Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
 Impersonation)
 
 (thanks for the typo correction)
 
 Yes, the example I provided is a very lightweight one which does take the
 form of CSRF, but it is only the simplest example of a family of automated
 authorization flow attacks. Indeed, a nonce (or hidden token, both serve the
 same purpose in this case) would be enough here.

Great. So we need to add explicit text about preventing CSRF attacks at the 
authorization endpoint.

 If the client is not user-agent based, a full-fledged forgery of the whole
 process is possible, one in which CORS and sandboxes have no meaning. In a
 native client, unless some kind of human test is performed, the whole flow
 could be spoofed.

Can you provide another example with the same level of detail as you provided 
below?

 A CAPTCHA and/or password entry are not bullet-proof,
 but they provide a steep obstacle for the attacker.

CAPTCHA and password entry are two completely difference measures and are 
rarely interchangeable. CAPTCHA does nothing more than increase the likelihood 
that the entity on the other side is a human. Any attack prevented by CAPTCHA 
must be one in which automation and speed are crucial. I still don't understand 
what it *solves*.

 Another option would be,
 for example, to email the resource owner an OTP, with the following
 message The application [...] requests access to [...]. Please use the number
  to allow it access etc... (similar to Google's and Facebook's two-step
 sign-in).

Two-factor authentication is good, but completely impractical for most web 
authorization scenario. You need to remember that the authorization page is 
used for both the initial grant, but also for delegated login (by far a more 
frequent use). An access token can be issued almost automatically if the client 
has been previously authorized.

 The first attack described in my previous message takes the form of CSRF,
 while the above one may be bypassed by an attacker with the help of some
 sort of clickjacking or similar. Eventually this threat description is for a 
 family
 of attacks which mimic the behavior of the resource owner in order to gain
 access to protected resources, and some possible countermeasures.

I don't understand this family of attacks.

EHL

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


Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner Impersonation)

2011-08-18 Thread Eran Hammer-Lahav


 -Original Message-
 From: Niv Steingarten [mailto:nivst...@gmail.com]
 Sent: Thursday, August 18, 2011 11:08 AM
 To: Eran Hammer-Lahav
 Cc: Torsten Lodderstedt; oauth@ietf.org
 Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
 Impersonation)
 
 On Thu, Aug 18, 2011 at 20:31, Eran Hammer-Lahav e...@hueniverse.com
 wrote:
 
 
  -Original Message-
  From: Niv Steingarten [mailto:nivst...@gmail.com]
  Sent: Thursday, August 18, 2011 10:16 AM
  To: Eran Hammer-Lahav
  Cc: Torsten Lodderstedt; oauth@ietf.org
  Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
  Impersonation)
 
  Can you provide another example with the same level of detail as you
 provided below?
 
 The malicious client sends a request to the authorization endpoint with the
 appropriate parameters, and in return receives the markup of the web-page
 which should be displayed to the user in order to get consent. In addition,
 since the request is launched not via a sandboxed user-agent, the client also
 has access to any 'Set-Cookie'
 HTTP headers.
 
 Instead of displaying the page to the user, the client extracts the web-form
 data (including the hidden nonce/token) which would be submitted when
 'Allow' is clicked. It then forges the appropriate POST request with the
 cookies, form data and referrer, and dispatches it,

SCENE MISSING [1]

 to finally receive an access token/authorization code in the redirection.

You skipped the best part!

What do you mean by dispatches it? How is the resource owner tricked or 
abused to grant authorization unknowingly? I understand how your proposal 
fixes the first half, but not what kind of attack is happening in the second 
half.

EHL

[1] http://www.ibras.dk/montypython/episode34.htm

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


Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner Impersonation)

2011-08-18 Thread Eran Hammer-Lahav


 -Original Message-
 From: Niv Steingarten [mailto:nivst...@gmail.com]
 Sent: Thursday, August 18, 2011 12:12 PM
 To: Eran Hammer-Lahav
 Cc: Torsten Lodderstedt; oauth@ietf.org
 Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
 Impersonation)
 
 On Thu, Aug 18, 2011 at 21:17, Eran Hammer-Lahav e...@hueniverse.com
 wrote:
 
 
  -Original Message-
  From: Niv Steingarten [mailto:nivst...@gmail.com]
  Sent: Thursday, August 18, 2011 11:08 AM
  To: Eran Hammer-Lahav
  Cc: Torsten Lodderstedt; oauth@ietf.org
  Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
  Impersonation)
 
  On Thu, Aug 18, 2011 at 20:31, Eran Hammer-Lahav
  e...@hueniverse.com
  wrote:
  
  
   -Original Message-
   From: Niv Steingarten [mailto:nivst...@gmail.com]
   Sent: Thursday, August 18, 2011 10:16 AM
   To: Eran Hammer-Lahav
   Cc: Torsten Lodderstedt; oauth@ietf.org
   Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
   Impersonation)
  
   Can you provide another example with the same level of detail as
   you
  provided below?
 
  The malicious client sends a request to the authorization endpoint
  with the appropriate parameters, and in return receives the markup of
  the web-page which should be displayed to the user in order to get
  consent. In addition, since the request is launched not via a
  sandboxed user-agent, the client also has access to any 'Set-Cookie'
  HTTP headers.
 
  Instead of displaying the page to the user, the client extracts the
  web-form data (including the hidden nonce/token) which would be
  submitted when 'Allow' is clicked. It then forges the appropriate
  POST request with the cookies, form data and referrer, and dispatches
  it,
 
  SCENE MISSING [1]
 
  to finally receive an access token/authorization code in the redirection.
 
  You skipped the best part!
 
  What do you mean by dispatches it? How is the resource owner tricked
 or abused to grant authorization unknowingly? I understand how your
 proposal fixes the first half, but not what kind of attack is happening in 
 the
 second half.
 
 
 I might have accidentally skipped the part where the user is already logged in
 at the authorization endpoint, so no log-in is required but rather just
 allowing/denying access (correction: the first request is sent using an HTTP
 framework/WebKit, so no access to cookies). Once it extracts the data from
 the web-form, the client has all the information it needs in order to create 
 an
 HTTP request 

No - the attacker does not have access to the session cookie. It still needs to 
find a way to make a CSS call.

 and launch it using the same HTTP framework/WebKit,
 simulating the Allow button.

This is still just a CSRF attack.

In order to automate the approval action, they attacker has to get the 
user-agent (embedded or not) to make a cross site request which will include 
some session state (cookies or otherwise). If the authorization page is CSRF 
protected, they attacker will not be able to construct such a link.

The nature of the client does not matter. In either case, the client has to 
gain access somehow to the authorization server state stored in the browser.

EHL

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


Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner Impersonation)

2011-08-18 Thread Eran Hammer-Lahav
We know how to fix CSRF attacks on form submission which this is. The UI 
questions about more about legitimate client interaction and how informed a 
user should be.

EHL

From: William J. Mills [mailto:wmi...@yahoo-inc.com]
Sent: Thursday, August 18, 2011 12:27 PM
To: Niv Steingarten; Eran Hammer-Lahav
Cc: oauth@ietf.org
Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner 
Impersonation)

This is, in my opinion, another style of CSRF.  I the attacker present your 
browser (user agent) with a link, and your browser presents a credential 
automatically to the token endpoint, which automatically issues a token to be 
given back to me?  That's a classic CSRF, how to fix it is interesting.  I'm of 
the opinion that the user *should* be pesented with some UI at that point so 
they can make an informed choice about issuing a credential.  Not everyone 
agrees with me though (mostly business folks that want to avoid user 
interaction because it's too scary  and somehow informing the user what 
they are doign is a bad thing).

-bill


From: Niv Steingarten nivst...@gmail.commailto:nivst...@gmail.com
To: Eran Hammer-Lahav e...@hueniverse.commailto:e...@hueniverse.com
Cc: oauth@ietf.orgmailto:oauth@ietf.org 
oauth@ietf.orgmailto:oauth@ietf.org
Sent: Thursday, August 18, 2011 12:11 PM
Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner 
Impersonation)

On Thu, Aug 18, 2011 at 21:17, Eran Hammer-Lahav 
e...@hueniverse.commailto:e...@hueniverse.com wrote:


 -Original Message-
 From: Niv Steingarten [mailto:nivst...@gmail.commailto:nivst...@gmail.com]
 Sent: Thursday, August 18, 2011 11:08 AM
 To: Eran Hammer-Lahav
 Cc: Torsten Lodderstedt; oauth@ietf.orgmailto:oauth@ietf.org
 Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
 Impersonation)

 On Thu, Aug 18, 2011 at 20:31, Eran Hammer-Lahav 
 e...@hueniverse.commailto:e...@hueniverse.com
 wrote:
 
 
  -Original Message-
  From: Niv Steingarten 
  [mailto:nivst...@gmail.commailto:nivst...@gmail.com]
  Sent: Thursday, August 18, 2011 10:16 AM
  To: Eran Hammer-Lahav
  Cc: Torsten Lodderstedt; oauth@ietf.orgmailto:oauth@ietf.org
  Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
  Impersonation)
 
  Can you provide another example with the same level of detail as you
 provided below?

 The malicious client sends a request to the authorization endpoint with the
 appropriate parameters, and in return receives the markup of the web-page
 which should be displayed to the user in order to get consent. In addition,
 since the request is launched not via a sandboxed user-agent, the client also
 has access to any 'Set-Cookie'
 HTTP headers.

 Instead of displaying the page to the user, the client extracts the web-form
 data (including the hidden nonce/token) which would be submitted when
 'Allow' is clicked. It then forges the appropriate POST request with the
 cookies, form data and referrer, and dispatches it,

 SCENE MISSING [1]

 to finally receive an access token/authorization code in the redirection.

 You skipped the best part!

 What do you mean by dispatches it? How is the resource owner tricked or 
 abused to grant authorization unknowingly? I understand how your proposal 
 fixes the first half, but not what kind of attack is happening in the 
 second half.


I might have accidentally skipped the part where the user is already
logged in at the authorization endpoint, so no log-in is required but
rather just allowing/denying access (correction: the first request is
sent using an HTTP framework/WebKit, so no access to cookies). Once it
extracts the data from the web-form, the client has all the
information it needs in order to create an HTTP request and launch it
using the same HTTP framework/WebKit, simulating the Allow button.


 [1] http://www.ibras.dk/montypython/episode34.htm


+1 for more Monty Python references.

-- Niv
___
OAuth mailing list
OAuth@ietf.orgmailto: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] Draft 20 last call comment (Resource Owner Impersonation)

2011-08-18 Thread Eran Hammer-Lahav


 -Original Message-
 From: Niv Steingarten [mailto:nivst...@gmail.com]
 Sent: Thursday, August 18, 2011 1:04 PM
 To: Eran Hammer-Lahav
 Cc: Torsten Lodderstedt; oauth@ietf.org
 Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
 Impersonation)
 
 On Thu, Aug 18, 2011 at 22:19, Eran Hammer-Lahav e...@hueniverse.com
 wrote:
 
 
  -Original Message-
  From: Niv Steingarten [mailto:nivst...@gmail.com]
  Sent: Thursday, August 18, 2011 12:12 PM
  To: Eran Hammer-Lahav
  Cc: Torsten Lodderstedt; oauth@ietf.org
  Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
  Impersonation)
 
  On Thu, Aug 18, 2011 at 21:17, Eran Hammer-Lahav
  e...@hueniverse.com
  wrote:
  
  
   -Original Message-
   From: Niv Steingarten [mailto:nivst...@gmail.com]
   Sent: Thursday, August 18, 2011 11:08 AM
   To: Eran Hammer-Lahav
   Cc: Torsten Lodderstedt; oauth@ietf.org
   Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
   Impersonation)
  
   On Thu, Aug 18, 2011 at 20:31, Eran Hammer-Lahav
   e...@hueniverse.com
   wrote:
   
   
-Original Message-
From: Niv Steingarten [mailto:nivst...@gmail.com]
Sent: Thursday, August 18, 2011 10:16 AM
To: Eran Hammer-Lahav
Cc: Torsten Lodderstedt; oauth@ietf.org
Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource
Owner
Impersonation)
   
Can you provide another example with the same level of detail as
you
   provided below?
  
   The malicious client sends a request to the authorization endpoint
   with the appropriate parameters, and in return receives the markup
   of the web-page which should be displayed to the user in order to
   get consent. In addition, since the request is launched not via a
   sandboxed user-agent, the client also has access to any 'Set-Cookie'
   HTTP headers.
  
   Instead of displaying the page to the user, the client extracts
   the web-form data (including the hidden nonce/token) which would
   be submitted when 'Allow' is clicked. It then forges the
   appropriate POST request with the cookies, form data and referrer,
   and dispatches it,
  
   SCENE MISSING [1]
  
   to finally receive an access token/authorization code in the 
   redirection.
  
   You skipped the best part!
  
   What do you mean by dispatches it? How is the resource owner
   tricked
  or abused to grant authorization unknowingly? I understand how your
  proposal fixes the first half, but not what kind of attack is
  happening in the second half.
  
 
  I might have accidentally skipped the part where the user is already
  logged in at the authorization endpoint, so no log-in is required but
  rather just allowing/denying access (correction: the first request is
  sent using an HTTP framework/WebKit, so no access to cookies). Once
  it extracts the data from the web-form, the client has all the
  information it needs in order to create an HTTP request
 
  No - the attacker does not have access to the session cookie. It still needs
 to find a way to make a CSS call.
 
 
 That's what I said -- no access to cookies.

You only said that about the first request.

 But since both requests (the one
 requesting the auth endpoint and the one simulating the
 allow) are sent from the same user-agent, the cookies are handled by the
 user-agent itself. The client just POSTs the request with the appropriate
 parameters to the action endpoint of the form.

That's not exactly right.

This entire attack is based on:

1. The presence of some session cookie or other user-agent state to bypass 
active authentication, and
2. The ability of the malicious client to make CSS calls using #1.

Everything else is a red herring because the ability to automate this attack 
and make it more powerful is completely beside the point. If you deploy an 
effective CSRF protection, everything else is a non-issue.

This is why the client type does not matter when it comes to not using CORS. 
The authorization server MUST NOT allow CSS calls on the authorization endpoint 
because that's the actual attack you described - using local state (session 
cookie) to make a CSS call. If the client makes direct calls to the 
authorization endpoint, it cannot impersonate the resource owner.

  and launch it using the same HTTP framework/WebKit, simulating the
  Allow button.
 
  This is still just a CSRF attack.
 
 
 I think you may be right. I still believe this particular style of attack on 
 the
 authorization server is worth mentioning, be it in its own separate section or
 under the existing CSRF section (as you suggested).

This is not a style of attack but techniques to enhance other exploits, in this 
case, CSRF. If you lack CSRF protection, then yes, lack of resource owner 
forced interaction will make it easier to execute. But that's just a tiny speed 
bump considering the actual exploit.

I don't see any reason to include this new text based on this threat analysis.

However, this doesn't mean

Re: [OAUTH-WG] treatment of client_id for authentication and identification

2011-08-18 Thread Eran Hammer-Lahav


 -Original Message-
 From: Lu, Hui-Lan (Huilan) [mailto:huilan...@alcatel-lucent.com]
 Sent: Thursday, August 18, 2011 1:45 PM
 To: Eran Hammer-Lahav; Brian Campbell
 Cc: oauth
 Subject: RE: [OAUTH-WG] treatment of client_id for authentication and
 identification
 
 Eran Hammer-Lahav wrote:
  Added to 2.4.1:
 
  client_secret
  REQUIRED. The client secret. The client MAY omit the
  parameter if the client secret
  is an empty string.
 
 I would suggest rewording the above as follows:
 client_secret
   REQUIRED unless it is an empty string. The client secret.

unless its value is an empty string. Do people read this new text to mean 
OPTIONAL if not empty?

  Added to 3.2.1:
 
  A public client that was not issued a client password MAY use 
  the
  'client_id' request parameter to identify itself when sending
  requests to the token endpoint.
 
 It is difficult to parse the last sentence of 3.2.1: The security 
 ramifications of
 allowing unauthenticated access by public clients to the token endpoint
 MUST be considered, as well as the issuance of refresh tokens to public
 clients, their scope, and lifetime.
 
 I think it should be rewritten and reference relevant parts of security
 considerations.

Text?

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


Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner Impersonation)

2011-08-18 Thread Eran Hammer-Lahav
To reiterate Berry's earlier point, we are not going to cover everything in the 
v2 spec. We need to agree on new language for the CSRF section, and add the 
potential attacks on both endpoints. But beyond that, it will probably be best 
to add it to the threat model document - but I will leave that up to the 
editors of that document.

EHL

From: William J. Mills [mailto:wmi...@yahoo-inc.com]
Sent: Thursday, August 18, 2011 9:21 PM
To: Niv Steingarten
Cc: Eran Hammer-Lahav; oauth@ietf.org
Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner 
Impersonation)

While I agree in principal, I think there are real world use cases that make 
this more complicated.  If, for example, a user has previously approved access 
to a particular endpoint then we might be willing to re-issue credentials 
without user interaction.  I don't know how we capture this in the right way in 
the spec.


From: Niv Steingarten nivst...@gmail.commailto:nivst...@gmail.com
To: William J. Mills wmi...@yahoo-inc.commailto:wmi...@yahoo-inc.com
Cc: Eran Hammer-Lahav e...@hueniverse.commailto:e...@hueniverse.com; 
oauth@ietf.orgmailto:oauth@ietf.org oauth@ietf.orgmailto:oauth@ietf.org
Sent: Thursday, August 18, 2011 6:06 PM
Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner 
Impersonation)

I suppose you're talking about this:
http://www.ietf.org/mail-archive/web/oauth/current/msg07275.html

It is indeed more complete w.r.t. CSRF attacks on the client's
redirection URI, but it does not address CSRF attacks on the
authorization server.

I believe something along the lines of the text I proposed could be
combined in whichever text is eventually decided upon.

-- Niv


On Fri, Aug 19, 2011 at 02:46, William J. Mills 
wmi...@yahoo-inc.commailto:wmi...@yahoo-inc.com wrote:
 I proposed text that I think is more complete in a previous message...
 
 From: Niv Steingarten nivst...@gmail.commailto:nivst...@gmail.com
 To: Eran Hammer-Lahav e...@hueniverse.commailto:e...@hueniverse.com
 Cc: oauth@ietf.orgmailto:oauth@ietf.org 
 oauth@ietf.orgmailto:oauth@ietf.org
 Sent: Thursday, August 18, 2011 4:33 PM
 Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
 Impersonation)

 How about add something like this as the second paragraph in 10.12:

   The authorization server SHOULD employ measures to prevent CSRF
   attacks on the authorization endpoint. A non-guessable token SHOULD
   be included in requests and form submissions within the authorization
   server's internal authorization flow. This token MUST NOT be
   accessible by the client. In addition, the authorization server may
   make use of HTTP referrer headers in order to verify the origin of
   requests made during the authorization flow.

 In addition, I think that:

   The state request parameter SHOULD be used to mitigate against CSRF
   attacks, ...

 should be changed to:

   The state request parameter SHOULD be used to mitigate against CSRF
   attacks against the client's redirection URI, ...

 so that the fact that the 'state' parameter protects against CSRF
 attacks on the *client*, as opposed to CSRF on the *authorization
 server*, is made explicit.

 -- Niv


 On Fri, Aug 19, 2011 at 00:13, Eran Hammer-Lahav 
 e...@hueniverse.commailto:e...@hueniverse.com
 wrote:


 -Original Message-
 From: Niv Steingarten [mailto:nivst...@gmail.commailto:nivst...@gmail.com]
 Sent: Thursday, August 18, 2011 1:04 PM
 To: Eran Hammer-Lahav
 Cc: Torsten Lodderstedt; oauth@ietf.orgmailto:oauth@ietf.org
 Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
 Impersonation)

 On Thu, Aug 18, 2011 at 22:19, Eran Hammer-Lahav 
 e...@hueniverse.commailto:e...@hueniverse.com
 wrote:
 
 
  -Original Message-
  From: Niv Steingarten 
  [mailto:nivst...@gmail.commailto:nivst...@gmail.com]
  Sent: Thursday, August 18, 2011 12:12 PM
  To: Eran Hammer-Lahav
  Cc: Torsten Lodderstedt; oauth@ietf.orgmailto:oauth@ietf.org
  Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
  Impersonation)
 
  On Thu, Aug 18, 2011 at 21:17, Eran Hammer-Lahav
  e...@hueniverse.commailto:e...@hueniverse.com
  wrote:
  
  
   -Original Message-
   From: Niv Steingarten 
   [mailto:nivst...@gmail.commailto:nivst...@gmail.com]
   Sent: Thursday, August 18, 2011 11:08 AM
   To: Eran Hammer-Lahav
   Cc: Torsten Lodderstedt; oauth@ietf.orgmailto:oauth@ietf.org
   Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
   Impersonation)
  
   On Thu, Aug 18, 2011 at 20:31, Eran Hammer-Lahav
   e...@hueniverse.commailto:e...@hueniverse.com
   wrote:
   
   
-Original Message-
From: Niv Steingarten 
[mailto:nivst...@gmail.commailto:nivst...@gmail.com]
Sent: Thursday, August 18, 2011 10:16 AM
To: Eran Hammer-Lahav
Cc: Torsten Lodderstedt; oauth@ietf.orgmailto:oauth@ietf.org
Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource

[OAUTH-WG] Authorization Code Leakage feedback (Yaron Goland)

2011-08-17 Thread Eran Hammer-Lahav
 10.6. Authorization Code Leakage: Comment I fancy myself as being

 reasonably intelligent and I'm unclear what attack is actually being described

 here.



Yeah... I had to go back to -16 to be reminded of the section original title 
'session fixation attack' to figure out what this was about.



How about this:



10.6.  Authorization Code Redirection URI Manipulation



   When requesting authorization using the authorization code grant

   type, the client can specify a redirection URI via the redirect_uri

   parameter.  If an attacker can manipulate the value of the

   redirection URI, it can cause the authorization server to redirect

   the resource owner user-agent to a URI under the control of the

   attacker with the authorization code.



   An attacker can create an account at a legitimate client and initiate

   the authorization flow.  When the attacker is sent to the

   authorization server to grant access, the attacker grabs the

   authorization URI provided by the legitimate client, and replaces the

   client's redirection URI with a URI under the control of the

   attacker.  The attacker then tricks the victim into following the

   manipulated link to authorize access to the legitimate client.



   Once at the authorization server, the victim is prompted with a

   normal, valid request on behalf of a legitimate and familiar client,

   and authorizes the request.  The victim is then redirected to an

   endpoint under the control of the attacker with the authorization

   code.  The attacker completes the authorization flow by sending

   the authorization code to the client using the original redirection

   URI provided by the client.  The client exchanges the authorization

   code with an access token and links it to the attacker's client

  account which can now gain access to the protected resources

   authorized by the victim (via the client).



   In order to prevent such an attack, the authorization server MUST

   ensure that the redirection URI used to obtain the authorization

   code, is the same as the redirection URI provided when exchanging the

   authorization code for an access token.  The authorization server

   SHOULD require the client to register their redirection URI and if

   provided, MUST validate the redirection URI received in the

   authorization request against the registered value.



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


Re: [OAUTH-WG] Authorization Code Leakage feedback (Yaron Goland)

2011-08-17 Thread Eran Hammer-Lahav
Noticed this follow up question after I sent this:

 10.6. Authorization Code Leakage: Comment on The authorization server
 SHOULD require the client to register their redirection URI: Why is this a
 should?

Because comparing the redirect_uri value used between the two calls 
(authorization and token) along with client authentication is sufficient to 
avoid the attack described for confidential clients. For public clients it is a 
MUST.


How about this:

10.6.  Authorization Code Redirection URI Manipulation

   When requesting authorization using the authorization code grant
   type, the client can specify a redirection URI via the redirect_uri
   parameter.  If an attacker can manipulate the value of the
   redirection URI, it can cause the authorization server to redirect
   the resource owner user-agent to a URI under the control of the
   attacker with the authorization code.

   An attacker can create an account at a legitimate client and initiate
   the authorization flow.  When the attacker is sent to the
   authorization server to grant access, the attacker grabs the
   authorization URI provided by the legitimate client, and replaces the
   client's redirection URI with a URI under the control of the
   attacker.  The attacker then tricks the victim into following the
   manipulated link to authorize access to the legitimate client.

   Once at the authorization server, the victim is prompted with a
   normal, valid request on behalf of a legitimate and familiar client,
   and authorizes the request.  The victim is then redirected to an
   endpoint under the control of the attacker with the authorization
   code.  The attacker completes the authorization flow by sending
   the authorization code to the client using the original redirection
   URI provided by the client.  The client exchanges the authorization
   code with an access token and links it to the attacker's client
  account which can now gain access to the protected resources
   authorized by the victim (via the client).

   In order to prevent such an attack, the authorization server MUST
   ensure that the redirection URI used to obtain the authorization
   code, is the same as the redirection URI provided when exchanging the
   authorization code for an access token.  The authorization server
   MUST require public clients and SHOULD require confidential clients to
   register their redirection URI and if provided in the request, MUST
   validate the redirection URI received in the authorization request
   against the registered value.

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


  1   2   3   4   5   6   7   8   9   10   >