[oauth] Re: RFC3986 vs. RFC2396 URL encoding.

2009-05-05 Thread Marc Worrell

David,

Back when I was writing the OAuth-PHP library I also bumped into this  
issue.
At least the OAuth spec clearly defines how to encode, and there are  
test cases supplied.

You can check:

http://www.marcworrell.com/article-2943-en.html

For a discussion about the implications of RFC3986 usage in different  
languages.

Greetings,

Marc


On 5 mei 2009, at 02:41, Zachary Voase wrote:


 Hi David,

 I found this to be an issue actually; in a shameless plug of my own
 OAuth client library for Python, ZOAuth [1], I found that functions
 like urllib.urlencode() were turning out URLs with '+' instead of the
 (expected) '%20'. This is due to the presence of two functions:
 urllib.quote() and urllib.quote_plus(); most of the urllib functions
 use the latter, which was giving me hell because I was getting
 signature errors from service providers and I couldn't understand why.
 I basically solved it by copying the most frequently used urllib
 functions straight from the stdlib, and rewriting them to use RFC3986
 encoding instead. Maybe you'd like to take a look at ZOAuth if this
 turns out to be an issue for you. /plug

 Regards,
 Zack

 [1]: http://github.com/disturbyte/zoauth/

 On May 4, 2:57 am, David W d...@botanicus.net wrote:
 Hi there,

 I see that OAuth 1.0 specifies RFC3986 URL encoding for parameters,
 but upon looking at the Python reference library I see that RFC2396
 (aka. urllib.quote) encoding is used. Is this in error?

 The set of reserved characters differs in these specifications.

 Thanks,

 David.
 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] OAuth linking problems

2009-05-05 Thread thomas

Dear list,

I wanted to ask if any of you have already experienced the following
problem: Configuring and make OAuth works fine and liboauth.so and
liboauth.la are smoothly installed e.g. in /usr/local/lib but the
compiler just won't link to it's methods, like in the following
example:

tzang...@tzangerl-desktop:~$ g++ `pkg-config --libs oauth` test.cpp
/tmp/ccR4RD4H.o: In function `main':
test.cpp:(.text+0x1e9): undefined reference to `oauth_sign_url(char
const*, char**, OAuthMethod, char const*, char const*, char const*,
char const*)'

where pkg-config returns the following:

tzang...@tzangerl-desktop:~$ pkg-config --libs oauth
-Wl,-Bsymbolic-functions -L/usr/local/lib -loauth -lm -lssl -lcurl

The libraries are all there:

tzang...@tzangerl-desktop:~$ ls -l /usr/local/lib/liboauth*
-rwxr-xr-x 1 root root 73574 2009-05-05 15:57 /usr/local/lib/
liboauth.a
-rwxr-xr-x 1 root root  1075 2009-05-05 15:57 /usr/local/lib/
liboauth.la
lrwxrwxrwx 1 root root17 2009-05-05 15:57 /usr/local/lib/
liboauth.so - liboauth.so.1.0.0
lrwxrwxrwx 1 root root17 2009-05-05 15:57 /usr/local/lib/
liboauth.so.1 - liboauth.so.1.0.0
-rwxr-xr-x 1 root root 67232 2009-05-05 15:57 /usr/local/lib/
liboauth.so.1.0.0

and the oauth_sign_url symbol is in the library:

nm /usr/local/lib/liboauth.so
...
2ed0 T oauth_sign_url
...

There aren't any libraries missing either, as ldd indicates. So maybe
I am just stumbling over an idiotic error here, which I fail to see
with my tunnel perspective or something is very strange. May anybody
have a hint or a pointer for me concerning what I might be missing
(wrong libtool version or any other compile-time-specific thing
maybe?)?


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Service Provider side

2009-05-05 Thread vikas kumar
Hi owenm,
I just wanna confirm what is the means of accessing protected resources?
Does it only mean to fetch the data from service provider? Actually i just
wanna ask can a consumer bce redirected to the member area pages in Serivice
provider just with AccessToken.


On Tue, May 5, 2009 at 1:16 AM, Owen Evans owenmcev...@gmail.com wrote:

 Hi Simone,
 1) Yes in my experience you should be storing, on the SP side the link
 between request token and consumer at the time when the request token is
 generated.

 2) this is up to you, all you're generating is a key to give access to
 some resource how that key is secured, and if it gives only partial access
 to the system should be dependant on what makes sense in your application. A
 lot of services have a way of registering which resources the consumer will
 need when registering for a consumer token. Google OAuth has ways of
 specifying which Systems you want to have access to.

 3) the SP needs to store as much information as is needed to create an
 access token that gives access to the correct user so either you
 pre-generate the access token and attach that to the user and the request
 token or you attach the user to the request token and generate an access
 token later (when the call to swap the request token for the access token
 is received). These implementation details are left to you as there's no way
 of telling you how your system could/should work. All you need to make sure
 is that when I, as a consumer, swap my request token for an access token I
 am given an access token that allows permission to get at the resources the
 user allowed me access to.

 Cheers
 Owen


 2009/5/4 Simone simonx...@hotmail.com


 Hi, I'm new in this group. I'm studing the OAuth protocol and there
 are some questions that I would make you in order to verify if I've
 well understood. I've read yet many post of this group about that
 questions, but I want join all togheter.

 I know that the Core 1.0 leave at the Service Provider the freedom of
 implement its role in the protocol, infact in the next questions I try
 to understand what hypothetically should happen.

 1) Service Provider side, what happens immediately after that the
 Consumer makes a request for an unauthorized Request Token? The
 Service Provider creates a local entry in its database where there is
 the bind between the Request Token and the Consumer? Because in the
 next step the Consumer redirects the User to login at the Service
 Provider and the Service Provider shows at the User that there is a
 specific Consumer that want access at the resources, but how knows
 what is this specific Consumer? Then I suppose that the previous local
 entry can be useful in this step, because the Service Provider can
 search in its database the entry for the Request Token and find the
 correspondent Consumer. It's correct or happens something else in this
 step?

 2) By default, after the User is redirected by the Consumer to the
 Service Provider, if the User authorize the Consumer then the User
 grants the access at all its resources? By default in sense that, if
 I don't wrong, the Service Provider can also implements a way for
 grant a limited access, for example an only read access.

 3) Service Provider side, what happens immediately after that the User
 grant access at the Consumer? The Service Provider creates a local
 entry in its database where there is the bind between the Request
 Token and the User, or between the User and the Consumer? Because when
 after the Consumer make a request for an Access Token, the Service
 Provider needs to knows what is the User involved, or not?


 Thanks to everybody :)




 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: OAuth linking problems

2009-05-05 Thread thomas

Sorry that I didn't mention that I was referring to the C-library of
oauth [1], which btw could be included on the list at [2]. But back to
the problem, just in case anybody happens to experience the same.
I made a beginner's mistake (well, but then again C++ has so many
quirks that I can live with that): Since liboauth is a C-library, the C
++ compiler needs to now that what follows now is C-code, once it
attempts to link the respective parts.

Hence, one has to tell the C++ compiler already at the time of
inclusion of the library definition, that what follows is C-code by
writing:

extern C {
 #include oauth.h
}

instead of just #include oauth.h.

Here goes another few wasted hours... :(

But thanks for providing that list and of-course, OAuth,
Thomas


[1] http://liboauth.sourceforge.net/
[2] http://oauth.net/code

On May 5, 4:37 pm, thomas thomas.zang...@freenet.de wrote:
 Dear list,

 I wanted to ask if any of you have already experienced the following
 problem: Configuring and make OAuth works fine and liboauth.so and
 liboauth.la are smoothly installed e.g. in /usr/local/lib but the
 compiler just won't link to it's methods, like in the following
 example:

 tzang...@tzangerl-desktop:~$ g++ `pkg-config --libs oauth` test.cpp
 /tmp/ccR4RD4H.o: In function `main':
 test.cpp:(.text+0x1e9): undefined reference to `oauth_sign_url(char
 const*, char**, OAuthMethod, char const*, char const*, char const*,
 char const*)'

 where pkg-config returns the following:

 tzang...@tzangerl-desktop:~$ pkg-config --libs oauth
 -Wl,-Bsymbolic-functions -L/usr/local/lib -loauth -lm -lssl -lcurl

 The libraries are all there:

 tzang...@tzangerl-desktop:~$ ls -l /usr/local/lib/liboauth*
 -rwxr-xr-x 1 root root 73574 2009-05-05 15:57 /usr/local/lib/
 liboauth.a
 -rwxr-xr-x 1 root root  1075 2009-05-05 15:57 /usr/local/lib/
 liboauth.la
 lrwxrwxrwx 1 root root    17 2009-05-05 15:57 /usr/local/lib/
 liboauth.so - liboauth.so.1.0.0
 lrwxrwxrwx 1 root root    17 2009-05-05 15:57 /usr/local/lib/
 liboauth.so.1 - liboauth.so.1.0.0
 -rwxr-xr-x 1 root root 67232 2009-05-05 15:57 /usr/local/lib/
 liboauth.so.1.0.0

 and the oauth_sign_url symbol is in the library:

 nm /usr/local/lib/liboauth.so
 ...
 2ed0 T oauth_sign_url
 ...

 There aren't any libraries missing either, as ldd indicates. So maybe
 I am just stumbling over an idiotic error here, which I fail to see
 with my tunnel perspective or something is very strange. May anybody
 have a hint or a pointer for me concerning what I might be missing
 (wrong libtool version or any other compile-time-specific thing
 maybe?)?

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Service Provider side

2009-05-05 Thread Manish Pandit



On May 5, 9:15 am, vikas kumar cybertechie.in...@gmail.com wrote:
 Hi owenm,
 I just wanna confirm what is the means of accessing protected resources?
 Does it only mean to fetch the data from service provider? Actually i just
 wanna ask can a consumer bce redirected to the member area pages in Serivice
 provider just with AccessToken.


It depends on your design, but one way I could think of is front-
ending your protected resources (by URL pattern) with a servlet
filter, which will do OAuth assertions before letting the request hit
the protected resources or member pages. This filter will use access
token as per the spec to ensure that the request is valid if I
understand your question correctly..

-cheers,
Manish
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] OAuth Core 1.0 Rev A, Draft 2

2009-05-05 Thread Eran Hammer-Lahav

Please review:

http://oauth.googlecode.com/svn/spec/core/1.0a/drafts/2/oauth-core-1_0a.html

Change log:

http://code.google.com/p/oauth/source/diff?spec=svn993old=992r=993format=unidiffpath=%2Fspec%2Fcore%2F1.0a%2Foauth-core-1_0a.xml

The changes are minimal:

1. Define 'oob' as out-of-band
2. Clarify that 'oob' is for any out-of-band configuration, not delivery of 
verification code
3. Minor language tweak
4. Correct reference to first step
5. Clarify that verification code should be displayed when no callback is 
configured, not just via the oauth_callback parameter

Deadline for feedback is still May 8th. If you provided feedback to draft 1 
which was not incorporated and still believe it should, please let me know. If 
no changes are needed by Friday, I will promote this to an implementer draft at 
which point developers will be encouraged to change their code. If no changes 
are identified by developers, we will declare this draft final 5/25.

EHL

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Clickjacking OAuth

2009-05-05 Thread Stephen Sclafani

On May 4, 9:14 pm, Josh Roesslein wrote:

 A simple way to block this attack would be to force the user to login each
 time before displaying the approval page (even if there is a SP session
 cookie). This way the attacker
 can not load the approval page in a frame. They would need the password to
 do so. This does impact the user experience a bit, but does solve the issue
 100% unless I over looked something.

That is a solution that I considered but dismissed because of the
inconvenience. However after giving it some more thought the
inconvenience is not that great. And given that the other solutions
are not perfect, it is one that service providers should consider. I
updated the Protection section of my blog post to include it.

Stephen Sclafani
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: OAuth linking problems

2009-05-05 Thread robin

Hi Thomas,

Sorry, I could not reply earlier.
Great that you found and posted the solution, already.

let me know if you encounter more issues..
robin


On May 5, 6:57 pm, thomas thomas.zang...@freenet.de wrote:
 Sorry that I didn't mention that I was referring to the C-library of
 oauth [1], which btw could be included on the list at [2]. But back to
 the problem, just in case anybody happens to experience the same.
 I made a beginner's mistake (well, but then again C++ has so many
 quirks that I can live with that): Since liboauth is a C-library, the C
 ++ compiler needs to now that what follows now is C-code, once it
 attempts to link the respective parts.

 Hence, one has to tell the C++ compiler already at the time of
 inclusion of the library definition, that what follows is C-code by
 writing:

 extern C {
  #include oauth.h

 }

 instead of just #include oauth.h.

 Here goes another few wasted hours... :(

 But thanks for providing that list and of-course, OAuth,
 Thomas

 [1]http://liboauth.sourceforge.net/
 [2]http://oauth.net/code

 On May 5, 4:37 pm, thomas thomas.zang...@freenet.de wrote:

  Dear list,

  I wanted to ask if any of you have already experienced the following
  problem: Configuring and make OAuth works fine and liboauth.so and
  liboauth.la are smoothly installed e.g. in /usr/local/lib but the
  compiler just won't link to it's methods, like in the following
  example:

  tzang...@tzangerl-desktop:~$ g++ `pkg-config --libs oauth` test.cpp
  /tmp/ccR4RD4H.o: In function `main':
  test.cpp:(.text+0x1e9): undefined reference to `oauth_sign_url(char
  const*, char**, OAuthMethod, char const*, char const*, char const*,
  char const*)'

  where pkg-config returns the following:

  tzang...@tzangerl-desktop:~$ pkg-config --libs oauth
  -Wl,-Bsymbolic-functions -L/usr/local/lib -loauth -lm -lssl -lcurl

  The libraries are all there:

  tzang...@tzangerl-desktop:~$ ls -l /usr/local/lib/liboauth*
  -rwxr-xr-x 1 root root 73574 2009-05-05 15:57 /usr/local/lib/
  liboauth.a
  -rwxr-xr-x 1 root root  1075 2009-05-05 15:57 /usr/local/lib/
  liboauth.la
  lrwxrwxrwx 1 root root    17 2009-05-05 15:57 /usr/local/lib/
  liboauth.so - liboauth.so.1.0.0
  lrwxrwxrwx 1 root root    17 2009-05-05 15:57 /usr/local/lib/
  liboauth.so.1 - liboauth.so.1.0.0
  -rwxr-xr-x 1 root root 67232 2009-05-05 15:57 /usr/local/lib/
  liboauth.so.1.0.0

  and the oauth_sign_url symbol is in the library:

  nm /usr/local/lib/liboauth.so
  ...
  2ed0 T oauth_sign_url
  ...

  There aren't any libraries missing either, as ldd indicates. So maybe
  I am just stumbling over an idiotic error here, which I fail to see
  with my tunnel perspective or something is very strange. May anybody
  have a hint or a pointer for me concerning what I might be missing
  (wrong libtool version or any other compile-time-specific thing
  maybe?)?


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: OAuth Core 1.0 Rev A, Draft 2

2009-05-05 Thread Dirk Balfanz
On Tue, May 5, 2009 at 1:20 PM, Eran Hammer-Lahav e...@hueniverse.comwrote:


 Please review:


 http://oauth.googlecode.com/svn/spec/core/1.0a/drafts/2/oauth-core-1_0a.html

 Change log:


 http://code.google.com/p/oauth/source/diff?spec=svn993old=992r=993format=unidiffpath=%2Fspec%2Fcore%2F1.0a%2Foauth-core-1_0a.xml

 The changes are minimal:

 1. Define 'oob' as out-of-band
 2. Clarify that 'oob' is for any out-of-band configuration, not delivery of
 verification code
 3. Minor language tweak
 4. Correct reference to first step
 5. Clarify that verification code should be displayed when no callback is
 configured, not just via the oauth_callback parameter

 Deadline for feedback is still May 8th. If you provided feedback to draft 1
 which was not incorporated and still believe it should, please let me know.


In Section 6.3.2, there is still language that assumes that the SP has two
verification codes at that point:

   - The verification code received from the Consumer is identical to the
   verification code provided to the User via the redirection or manually.

I believe that presupposes/dictates a particular implementation, which is
not what we should be doing in the spec.

Proposed change: The verification code matches the Request Token.

Dirk.

If no changes are needed by Friday, I will promote this to an implementer
 draft at which point developers will be encouraged to change their code. If
 no changes are identified by developers, we will declare this draft final
 5/25.

 EHL

 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: OAuth Core 1.0 Rev A, Draft 2

2009-05-05 Thread Brian Eaton

Line 837:

to indicates
s.b.
to indicate

Section 6.2:

Consumers that need to maintain compatibility with both 1.0 and 1.0a
service providers are going to send oauth_callback on this step.  We
should be explicit about how to handle backwards compatibility here or
we are going to end up with incompatible implementations.
Specifically:
  - if the consumer sent the oauth_callback on the RT step, the
oauth_callback on the authorization URL should be ignored.
  - if the consumer did not send the oauth_callback on the RT step,
the oauth_callback may be accepted if the SP wants to be compatible
with OAuth 1.0

Alternatively, we should give consumers a way to detect SP version, by
having the SP return oauth_callback_accepted=1 in the request token
response.  I think this might be a better answer.

6.2.3

non-guessable should be unguessable

If the value of the oauth_callback parameter provided by the Consumer
in the Consumer Obtains a Request Token (Consumer Obtains a Request
Token) step was not oob (case sensitive), or a callback URL has been
established by other means the Service Provider uses it to constructs
an HTTP GET request, and directs the User's web browser to that URL
with the following parameters added:
...

I know what you mean, and I'm having a lot of trouble parsing this
sentence.  Can you break this into smaller pieces?

If no callback URL was provided, the Service Provider MUST display
the value of the verification code to the User and instruct the User
to manually inform the Consumer that authorization has completed and
provide the Consumer with the verification code.

Same here, this sentence has too many clauses for easy comprehension.


Appendix A.2: this does not demonstrate how to avoid an XSRF attack on
the callback URL.  Maybe add xsrf=some-gibberish here?



On Tue, May 5, 2009 at 1:20 PM, Eran Hammer-Lahav e...@hueniverse.com wrote:

 Please review:

 http://oauth.googlecode.com/svn/spec/core/1.0a/drafts/2/oauth-core-1_0a.html

 Change log:

 http://code.google.com/p/oauth/source/diff?spec=svn993old=992r=993format=unidiffpath=%2Fspec%2Fcore%2F1.0a%2Foauth-core-1_0a.xml

 The changes are minimal:

 1. Define 'oob' as out-of-band
 2. Clarify that 'oob' is for any out-of-band configuration, not delivery of 
 verification code
 3. Minor language tweak
 4. Correct reference to first step
 5. Clarify that verification code should be displayed when no callback is 
 configured, not just via the oauth_callback parameter

 Deadline for feedback is still May 8th. If you provided feedback to draft 1 
 which was not incorporated and still believe it should, please let me know. 
 If no changes are needed by Friday, I will promote this to an implementer 
 draft at which point developers will be encouraged to change their code. If 
 no changes are identified by developers, we will declare this draft final 
 5/25.

 EHL

 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Confirm callback when getting access token

2009-05-05 Thread Manger, James H
I would like to suggest a slightly different solution for the OAuth session 
fixation bug.



The Consumer App includes the Callback URI when obtaining an Access Token, 
instead of including the Callback URI when obtaining a Request Token.



The Service Provider checks that the Callback URI in the request for an Access 
Token matches the Callback URI to which the authorizing user was redirected.



The significant advantage of this approach is that the Consumer App knows the 
Request Token and Secret before they specify the Callback URI so they can 
encode state into the callback and operate in a stateless manner – which is 
important for scalability.



An advantage of this approach for the Service Provider is that there is no 
extra state that has to be maintained between the Request Token and 
Authorization steps so the SP’s Request Token format should not need to change 
to maintain stateless operation.



I believe Consumer Apps can operate in a stateless manner with OAuth Core 1.0 
so it would be a significant disadvantage to break this ability in a security 
fix. My guess is that it would require very substantial changes to a Consumer 
App’s architecture if it had to switch from a stateless to a statefull mode to 
support a security fix.



The Callback URI still appears in the authorization step, but changing it does 
not help an attacker since that would cause the subsequent request to obtain an 
Access Token to fail.







6.1.1. Consumer obtains a Request Token – UNCHANGED from 1.0



6.1.2. Service Provider issues an unauthorized Request Token – UNCHANGED from 
1.0



6.2.1. Consumer directs the User to the Service Provider – UNCHANGED from 1.0



6.2.2. Service Provider authenticated the User and obtains consent – change 
warning text in some situations



6.2.3. Service Provider directs the user back to the Consumer – insert 
“verifier” into callback, or display “verifier”



6.3.1. Consumer requests an Access Token – CHANGED to include Callback URI



6.3.2. Service Provider grants an Access Token – UNCHANGED from 1.0 at the 
protocol layer, but the SP performs an extra check (that the Callback URI 
matches) before responding







The OAuth wiki (http://wiki.oauth.net/OAuth-Session-Fixation-Advisory) compares 
proposed solutions with 10 questions. 9 answers for this proposal (callback 
with access token request) are the same as the “signed callback URLs” (callback 
with request token request) solution. The only difference is supporting a 
smooth upgrade path from 1.0 to the fixed protocol. This proposal can certainly 
support a smooth upgrade path, but it cannot use the presence of oauth_callback 
when obtaining a Request Token to indicate support for the new version. Any 
other indication would do. A different Request Token URI is one option.







James Manger

james.h.man...@team.telstra.commailto:james.h.man...@team.telstra.com

Identity and security team — Chief Technology Office — Telstra




--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Confirm callback when getting access token

2009-05-05 Thread Breno de Medeiros


 The Consumer App includes the Callback URI when obtaining an Access Token,
 instead of including the Callback URI when obtaining a Request Token.

 The Service Provider checks that the Callback URI in the request for an
 Access Token matches the Callback URI to which the authorizing user was
 redirected.

 The significant advantage of this approach is that the Consumer App knows
 the Request Token and Secret before they specify the Callback URI so they
 can encode state into the callback and operate in a stateless manner – which
 is important for scalability.

The request token can be stored in a cookie or some other parameter
that provides XSRF protection vis-a-vis the callback URL. This allows
the consumer to remain stateless by doing the right thing.


 An advantage of this approach for the Service Provider is that there is no
 extra state that has to be maintained between the Request Token and
 Authorization steps so the SP’s Request Token format should not need to
 change to maintain stateless operation.


This does not have to change. The SP can encode the callback URL in
the request token itself.



 I believe Consumer Apps can operate in a stateless manner with OAuth Core
 1.0 so it would be a significant disadvantage to break this ability in a
 security fix. My guess is that it would require very substantial changes to
 a Consumer App’s architecture if it had to switch from a stateless to a
 statefull mode to support a security fix.

There is no need for such radical changes as described above.




 The Callback URI still appears in the authorization step, but changing it
 does not help an attacker since that would cause the subsequent request to
 obtain an Access Token to fail.

Possibly. But we would have to think carefully about that.








 6.1.1. Consumer obtains a Request Token – UNCHANGED from 1.0



 6.1.2. Service Provider issues an unauthorized Request Token – UNCHANGED
 from 1.0



 6.2.1. Consumer directs the User to the Service Provider – UNCHANGED from
 1.0



 6.2.2. Service Provider authenticated the User and obtains consent – change
 warning text in some situations



 6.2.3. Service Provider directs the user back to the Consumer – insert
 “verifier” into callback, or display “verifier”



 6.3.1. Consumer requests an Access Token – CHANGED to include Callback URI



 6.3.2. Service Provider grants an Access Token – UNCHANGED from 1.0 at the
 protocol layer, but the SP performs an extra check (that the Callback URI
 matches) before responding







 The OAuth wiki (http://wiki.oauth.net/OAuth-Session-Fixation-Advisory)
 compares proposed solutions with 10 questions. 9 answers for this proposal
 (callback with access token request) are the same as the “signed callback
 URLs” (callback with request token request) solution. The only difference is
 supporting a smooth upgrade path from 1.0 to the fixed protocol. This
 proposal can certainly support a smooth upgrade path, but it cannot use the
 presence of oauth_callback when obtaining a Request Token to indicate
 support for the new version. Any other indication would do. A different
 Request Token URI is one option.







 James Manger

 james.h.man...@team.telstra.com

 Identity and security team — Chief Technology Office — Telstra



 




-- 
--Breno

+1 (650) 214-1007 desk
+1 (408) 212-0135 (Grand Central)
MTV-41-3 : 383-A
PST (GMT-8) / PDT(GMT-7)

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Confirm callback when getting access token

2009-05-05 Thread Owen Evans
Doesn't really solve the problem:
(malicious) User A gets the Authorisation URL from an application that
has received a request token.
User A replaces call-back parameter with malicious or spoof site instead of
original call-back
User A tricks User B (Innocent) into logging into SP with
incorrect call-back parameter.
User B is sent to malicious site which save the verification code.
User A gets verification code from malicious site and uses it to redirect to
original consumer application
User A now has access to User B's resources.

O

2009/5/6 Manger, James H james.h.man...@team.telstra.com

  I would like to suggest a slightly different solution for the OAuth
 session fixation bug.



 The Consumer App includes the Callback URI when obtaining an Access Token,
 instead of including the Callback URI when obtaining a Request Token.



 The Service Provider checks that the Callback URI in the request for an
 Access Token matches the Callback URI to which the authorizing user was
 redirected.



 The significant advantage of this approach is that the Consumer App knows
 the Request Token and Secret before they specify the Callback URI so they
 can encode state into the callback and operate in a stateless manner – which
 is important for scalability.



 An advantage of this approach for the Service Provider is that there is no
 extra state that has to be maintained between the Request Token and
 Authorization steps so the SP’s Request Token format should not need to
 change to maintain stateless operation.



 I believe Consumer Apps can operate in a stateless manner with OAuth Core
 1.0 so it would be a significant disadvantage to break this ability in a
 security fix. My guess is that it would require very substantial changes to
 a Consumer App’s architecture if it had to switch from a stateless to a
 statefull mode to support a security fix.



 The Callback URI still appears in the authorization step, but changing it
 does not help an attacker since that would cause the subsequent request to
 obtain an Access Token to fail.







 6.1.1. Consumer obtains a Request Token – UNCHANGED from 1.0



 6.1.2. Service Provider issues an unauthorized Request Token – UNCHANGED
 from 1.0



 6.2.1. Consumer directs the User to the Service Provider – UNCHANGED from
 1.0



 6.2.2. Service Provider authenticated the User and obtains consent – change
 warning text in some situations



 6.2.3. Service Provider directs the user back to the Consumer – insert
 “verifier” into callback, or display “verifier”



 6.3.1. Consumer requests an Access Token – CHANGED to include Callback URI



 6.3.2. Service Provider grants an Access Token – UNCHANGED from 1.0 at the
 protocol layer, but the SP performs an extra check (that the Callback URI
 matches) before responding







 The OAuth wiki (http://wiki.oauth.net/OAuth-Session-Fixation-Advisory)
 compares proposed solutions with 10 questions. 9 answers for this proposal
 (callback with access token request) are the same as the “signed callback
 URLs” (callback with request token request) solution. The only difference is
 supporting a smooth upgrade path from 1.0 to the fixed protocol. This
 proposal can certainly support a smooth upgrade path, but it cannot use the
 presence of oauth_callback when obtaining a Request Token to indicate
 support for the new version. Any other indication would do. A different
 Request Token URI is one option.







 *James Manger*

 james.h.man...@team.telstra.com

 Identity and security team — Chief Technology Office — Telstra



 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Confirm callback when getting access token

2009-05-05 Thread Brian Eaton

The attack fails.

On Tue, May 5, 2009 at 6:08 PM, Owen Evans owenmcev...@gmail.com wrote:
 Doesn't really solve the problem:
 (malicious) User A gets the Authorisation URL from an application that
 has received a request token.
 User A replaces call-back parameter with malicious or spoof site instead of
 original call-back
 User A tricks User B (Innocent) into logging into SP with
 incorrect call-back parameter.

At this point the SP saves the malicious callback URL associated with
the approved request token.

 User B is sent to malicious site which save the verification code.
 User A gets verification code from malicious site and uses it to redirect to
 original consumer application

Original consumer sends the correct callback URL along with their
access token request.

SP compares callback from approval step with callback from access
token step.  They don't match, so the access token request fails.

I'm not convinced James' proposal is secure, but the attack Owen
described doesn't work.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Confirm callback when getting access token

2009-05-05 Thread Manger, James H
I think it does solve the problem, Owen.



The SP redirects B to the malicious callback – and remembers that this 
malicious callback is associated with this request token  verifier.

When the consumer asks for an access token the consumer will include the 
original callback. The SP notices that the two callbacks are different and 
rejects the access token request.



James Manger
james.h.man...@team.telstra.commailto:james.h.man...@team.telstra.com
Identity and security team — Chief Technology Office — Telstra

  _

From: oauth@googlegroups.com [mailto:oa...@googlegroups.com] On Behalf Of Owen 
Evans
Sent: Wednesday, 6 May 2009 11:09 AM
To: oauth@googlegroups.com
Subject: [oauth] Re: Confirm callback when getting access token



Doesn't really solve the problem:



(malicious) User A gets the Authorisation URL from an application that has 
received a request token.

User A replaces call-back parameter with malicious or spoof site instead of 
original call-back

User A tricks User B (Innocent) into logging into SP with incorrect call-back 
parameter.

User B is sent to malicious site which save the verification code.

User A gets verification code from malicious site and uses it to redirect to 
original consumer application

User A now has access to User B's resources.



O


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Confirm callback when getting access token

2009-05-05 Thread Owen Evans
true... must be in an after lunch stupor.
O

2009/5/6 Manger, James H james.h.man...@team.telstra.com

  I think it does solve the problem, Owen.



 The SP redirects B to the malicious callback – and remembers that this
 malicious callback is associated with this request token  verifier.

 When the consumer asks for an access token the consumer will include the
 original callback. The SP notices that the two callbacks are different and
 rejects the access token request.



 *James Manger*
 james.h.man...@team.telstra.com
 Identity and security team — Chief Technology Office — Telstra
   --

 *From:* oauth@googlegroups.com [mailto:oa...@googlegroups.com] *On Behalf
 Of *Owen Evans
 *Sent:* Wednesday, 6 May 2009 11:09 AM
 *To:* oauth@googlegroups.com
 *Subject:* [oauth] Re: Confirm callback when getting access token



 Doesn't really solve the problem:



 (malicious) User A gets the Authorisation URL from an application that
 has received a request token.

 User A replaces call-back parameter with malicious or spoof site instead of
 original call-back

 User A tricks User B (Innocent) into logging into SP with
 incorrect call-back parameter.

 User B is sent to malicious site which save the verification code.

 User A gets verification code from malicious site and uses it to redirect
 to original consumer application

 User A now has access to User B's resources.



 O

 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Confirm callback when getting access token

2009-05-05 Thread Breno de Medeiros

James, you made the best argument (in my view) of why we should stick
with the existing proposal, namely that the easiest way to preserve
statelessness is to implement a measure that results in XSRF
protection side effects.

On Tue, May 5, 2009 at 6:21 PM, Owen Evans owenmcev...@gmail.com wrote:
 true... must be in an after lunch stupor.
 O

 2009/5/6 Manger, James H james.h.man...@team.telstra.com

 I think it does solve the problem, Owen.



 The SP redirects B to the malicious callback – and remembers that this
 malicious callback is associated with this request token  verifier.

 When the consumer asks for an access token the consumer will include the
 original callback. The SP notices that the two callbacks are different and
 rejects the access token request.



 James Manger
 james.h.man...@team.telstra.com
 Identity and security team — Chief Technology Office — Telstra

 

 From: oauth@googlegroups.com [mailto:oa...@googlegroups.com] On Behalf Of
 Owen Evans
 Sent: Wednesday, 6 May 2009 11:09 AM
 To: oauth@googlegroups.com
 Subject: [oauth] Re: Confirm callback when getting access token



 Doesn't really solve the problem:



 (malicious) User A gets the Authorisation URL from an application that
 has received a request token.

 User A replaces call-back parameter with malicious or spoof site instead
 of original call-back

 User A tricks User B (Innocent) into logging into SP with
 incorrect call-back parameter.

 User B is sent to malicious site which save the verification code.

 User A gets verification code from malicious site and uses it to redirect
 to original consumer application

 User A now has access to User B's resources.



 O



 




-- 
--Breno

+1 (650) 214-1007 desk
+1 (408) 212-0135 (Grand Central)
MTV-41-3 : 383-A
PST (GMT-8) / PDT(GMT-7)

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Confirm callback when getting access token

2009-05-05 Thread Brian Eaton

AFAICT there is no difference in the amount of state consumers need to
maintain between OAuth 1.0, the signed callback proposal, and the
approval URL verification proposal.  There may be some good reason to
prefer either signed callbacks or approval URL verification, but I
don't think consumer state is such a reason.

Unless I'm missing something pretty major: is it true that consumers
need to maintain more state for the signed callback proposal?  Why?

On Tue, May 5, 2009 at 6:26 PM, Breno de Medeiros br...@google.com wrote:

 James, you made the best argument (in my view) of why we should stick
 with the existing proposal, namely that the easiest way to preserve
 statelessness is to implement a measure that results in XSRF
 protection side effects.

 On Tue, May 5, 2009 at 6:21 PM, Owen Evans owenmcev...@gmail.com wrote:
 true... must be in an after lunch stupor.
 O

 2009/5/6 Manger, James H james.h.man...@team.telstra.com

 I think it does solve the problem, Owen.



 The SP redirects B to the malicious callback – and remembers that this
 malicious callback is associated with this request token  verifier.

 When the consumer asks for an access token the consumer will include the
 original callback. The SP notices that the two callbacks are different and
 rejects the access token request.



 James Manger
 james.h.man...@team.telstra.com
 Identity and security team — Chief Technology Office — Telstra

 

 From: oauth@googlegroups.com [mailto:oa...@googlegroups.com] On Behalf Of
 Owen Evans
 Sent: Wednesday, 6 May 2009 11:09 AM
 To: oauth@googlegroups.com
 Subject: [oauth] Re: Confirm callback when getting access token



 Doesn't really solve the problem:



 (malicious) User A gets the Authorisation URL from an application that
 has received a request token.

 User A replaces call-back parameter with malicious or spoof site instead
 of original call-back

 User A tricks User B (Innocent) into logging into SP with
 incorrect call-back parameter.

 User B is sent to malicious site which save the verification code.

 User A gets verification code from malicious site and uses it to redirect
 to original consumer application

 User A now has access to User B's resources.



 O



 




 --
 --Breno

 +1 (650) 214-1007 desk
 +1 (408) 212-0135 (Grand Central)
 MTV-41-3 : 383-A
 PST (GMT-8) / PDT(GMT-7)

 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Confirm callback when getting access token

2009-05-05 Thread Breno de Medeiros
Good point. This alternate solution is less backward compatible.

On May 5, 2009 7:15 PM, Josh Roesslein jroessl...@gmail.com wrote:

One issue that arises is now the SP has no way to tell if we are using 1.0
old flow or the new flow.The SP will not know which one is being used until
the consumer asks for the access token. So how will we know if the callback
should use the old flow's format or the new flow w/ verifier?

We would either have to increment the wire version OR the SP would have to
use different end points for the two flows.

example: http://www.test.com/oauth/1.0a OR 1.0/request

On Tue, May 5, 2009 at 9:06 PM, Manger, James H 
james.h.man...@team.telstra.com wrote:   [I sa...

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Confirm callback when getting access token

2009-05-05 Thread Josh Roesslein
One way around the issue of incrementing oauth_version is for the SP to see
it as a minimum required version for this endpoint rather than enforcing
one version requirement across all endpoints. By allowing for different
minimum required versions for each endpoints, we can maintain backward
compatibility while
still being able to increment the oauth_version. The SP can decide which
oauth version to support for each endpoint.
For the session fixation fix SPs can continue allowing 1.0 versions on
resource requests since we are not chaging this part of the spec. Two legged
consumers would not be broken and the SP can tell which flow is being used
when it might not be obvious.

I was going suggest this in a seperate thread, but since this idea is
blocked on this issue, I thought it would be relevent to suggest here.

On Tue, May 5, 2009 at 9:29 PM, Breno de Medeiros br...@google.com wrote:

 Good point. This alternate solution is less backward compatible.

 On May 5, 2009 7:15 PM, Josh Roesslein jroessl...@gmail.com wrote:

 One issue that arises is now the SP has no way to tell if we are using 1.0
 old flow or the new flow.The SP will not know which one is being used until
 the consumer asks for the access token. So how will we know if the callback
 should use the old flow's format or the new flow w/ verifier?

 We would either have to increment the wire version OR the SP would have to
 use different end points for the two flows.

 example: http://www.test.com/oauth/1.0a OR 1.0/request

  On Tue, May 5, 2009 at 9:06 PM, Manger, James H 
 james.h.man...@team.telstra.com wrote:   [I sa...


 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Confirm callback when getting access token

2009-05-05 Thread Brian Eaton

On Tue, May 5, 2009 at 7:15 PM, Josh Roesslein jroessl...@gmail.com wrote:
 We would either have to increment the wire version OR the SP would have to
 use different end points for the two flows.

WTF?  No.

Just pass *one* extra bit of data in the request token step do you
support callback tokens? and get back *one* extra bit of data in the
request token response yes.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Confirm callback when getting access token

2009-05-05 Thread Manish Pandit



On May 5, 9:08 pm, Brian Eaton bea...@google.com wrote:
 On Tue, May 5, 2009 at 7:15 PM, Josh Roesslein jroessl...@gmail.com wrote:
  We would either have to increment the wire version OR the SP would have to
  use different end points for the two flows.

 WTF?  No.

 Just pass *one* extra bit of data in the request token step do you
 support callback tokens? and get back *one* extra bit of data in the
 request token response yes.

I'd agree. If the consumer gets back a HTTP 401 with missing required
field for callback_url on the get_request_token call, he *must*
understand that the provider supports the updated spec *only*. I do
not see why would anyone stick to supporting the old version at this
point - plus, the old spec implementation has to be EOL'd sooner or
later anyway.

-cheers,
Manish
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Confirm callback when getting access token

2009-05-05 Thread Brian Eaton

On Tue, May 5, 2009 at 5:54 PM, Manger, James H
james.h.man...@team.telstra.com wrote:
 The Consumer App includes the Callback URI when obtaining an Access Token,
 instead of including the Callback URI when obtaining a Request Token.

 The Service Provider checks that the Callback URI in the request for an
 Access Token matches the Callback URI to which the authorizing user was 
 redirected.

One interesting aspect of this proposal is that it requires consumers
to reconstruct the exact callback URL used by the service provider.
This is certainly possible, but it can be tricky.

For example:
- what if there is an SSL accelerator that terminates the HTTPS
channel and forwards HTTP?
- what if the consumer is load balanced in such a way that the host
header changes or the port changes?
- what if the consumer uses software that automatically redirects
users to include additional query parameters?
- what if the consumer uses high-level web app development tools that
abstract away notions of URLs and parameters?

It's possible to cope with all of those things, but it requires
different code in different environments.  It takes us farther away
from protocols and libraries that just work.

OpenID RPs are required to verify that the URL in the authn response
matches the receiving URL, but the requirements there are less strict.
 The RP is able to ignore things like protocol or port or query if
they know they are irrelevant (or tricky) in the RPs environment.  We
wouldn't have that flexibility with OAuth, because the consumer has to
to send the URL to the SP for verification.  if the consumer screws it
up, the protocol fails.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Confirm callback when getting access token

2009-05-05 Thread Manish Pandit


 I'd agree. If the consumer gets back a HTTP 401 with missing required
 field for callback_url on the get_request_token call, he *must*

Oops I meant HTTP 400..

-cheers,
Manish
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Confirm callback when getting access token

2009-05-05 Thread Manger, James H
[Breno said]
 The request token can be stored in a cookie or some other parameter
 that provides XSRF protection vis-a-vis the callback URL. This allows
 the consumer to remain stateless by doing the right thing.

 James, you made the best argument (in my view) of why we should stick with
 the existing proposal, namely that the easiest way to preserve
 statelessness is to implement a measure that results in XSRF protection
 side effects.


This is a curious side-effect -- but not a great basis for protocol design. 
Only consumer apps that take the effort to be stateless get CSRF protection. It 
requires clients to support cookies. It assumes other CSRF defences cannot be 
sufficient (eg using Referer or Origin HTTP headers).


I would prefer to fix OAuth security issue 2009-1 without unnecessarily 
preventing state-management options that previously worked, and without 
requiring cookies where they were not previously necessary.


Separately, we should write advice for all OAuth consumers about implementing 
CSRF defences. I assume the issue is Login CSRF -- where a victim is logged 
in to the consumer as the attacker [in OAuth, a victim is using a consumer 
that is accessing a service provider on behalf of an attacker].


 My guess is that it would require very substantial changes to
 a Consumer App’s architecture if it had to switch from a stateless to a
 statefull mode to support a security fix.

 There is no need for such radical changes as described above.

Are you sure that the alternative ways to implement statelessness (other than 
encoding state into the callback) are viable in all situations, and will remain 
so in the future?
Even if that was true, do we have to force consumers to switch how they 
implement statelessness?


--
CSRF = XSRF = cross-site request forgery

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Clickjacking OAuth

2009-05-05 Thread Allen Tom
Yahoo always requires the user to enter their password (even if the user 
is already signed into Yahoo) before issuing persistent credentials. The 
intent is to verify that the user is actually sitting in front of the 
computer before issuing a persistent credential, to protect against the 
case where the attacker is trying to backdoor a victim's account, when 
the victim left their computer unattended, or forgot to logout.

A nice side effect of requiring password verifcation is that a potential 
clickjacker would need to phish the user before clickjacking the OAuth 
permissions screen...

Allen

Josh Roesslein wrote:
 A simple way to block this attack would be to force the user to login 
 each time before displaying the approval page (even if there is a SP 
 session cookie). This way the attacker
 can not load the approval page in a frame. They would need the 
 password to do so. This does impact the user experience a bit, but 
 does solve the issue 100% unless I over looked something.

 On Mon, May 4, 2009 at 7:43 PM, Stephen Sclafani ssclaf...@gmail.com 
 mailto:ssclaf...@gmail.com wrote:


 Allen,

 You are correct about the security attribute being able to disable
 frame busting scripts in IE. IE8 supports a X-Frame-Options HTTP
 response header which can be used by a developer to deny their
 approval page from rendering in a frame. However IE8 is not currently
 widely used. Even requiring that javascript be enabled is not a
 perfect solution. In my conversation with Google's security team they
 informed me that they were going to add frame busting javascript
 (which they have done) and possibly add the X-Frame-Options header. I
 think that this is the best a service provider can hope to do at this
 point. There really is no 100% solution.

 Stephen Sclafani

 On May 4, 4:15 pm, Allen Tom a...@yahoo-inc.com
 mailto:a...@yahoo-inc.com wrote:
  Hi Stephen,
 
  Thanks for pointing this out. It might not be sufficient to
 deploy only
  Framebusting JS on the approval screens, as the attacker can
 disable JS
  for the iframe in IE by setting the security attribute to
 restricted
 
  http://msdn.microsoft.com/en-us/library/ms534622(VS.85).aspx
 http://msdn.microsoft.com/en-us/library/ms534622%28VS.85%29.aspx
 
  SPs may need to deploy Framebusting JS AND require that JS is
 enabled
  for users to approve the Access Token, otherwise the attacker could
  embed the approval screen in an iframe with JS disabled.
 
  Allen
 
  Stephen Sclafani wrote:
   There has been much discussion over the session fixation
 vulnerability
   since it was announced publicly. There is another issue that
 is not
   unique to OAuth but one that I believe poses an equal if not more
   serious threat to service providers. That issue is clickjacking.
 
   For those unfamiliar with clickjacking, it is when a visitor
 to a web
   page is tricked into clicking on an element that they believe
 to be
   harmless when in reality they are clicking on an element on a
   different website that exposes protected data or grants an
 attacker
   access. A malicious consumer developer can use a clickjacking
 attack
   against a vulnerable service provider's approval page to trick
 users
   into granting their application access.
 
   Current service providers have been notified. Google, Yahoo and
   Twitter have already deployed protection. I have written a
 blog post
   that goes into greater detail on the threat which can be read
 here:
 
  http://stephensclafani.com/2009/05/04/clickjacking-oauth/
 
   Stephen Sclafani



 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Confirm callback when getting access token

2009-05-05 Thread Manger, James H
Brian,

A consumer app will have a function to create a callback URI as a string given 
a few parameters (request token  secret, other state).
It simply calls this function twice: once before sending the user to the 
authorization URI; and once before obtaining an access token.

A consumer does not have to reconstruct the scheme/host/port/path-prefix 
components solely based on the user's request to the callback.

I would guess the callback URI (or at least a template for a callback URI, with 
a few placeholders for specific items) would be a configuration parameter to 
most OAuth libraries -- precisely to allow a person to provide the right 
address when there are SSL accelerators, load balancers, auto-redirects, DNS 
tricks etc that the library cannot see. The same configured callback URI 
template is used at both steps.

It is possible these issues could occasionally trip-up a consumer, but that is 
not a good reason to sacrifice more fundamental architectural options (eg state 
management).


James Manger
james.h.man...@team.telstra.com
Identity and security team — Chief Technology Office — Telstra

-Original Message-
From: oauth@googlegroups.com [mailto:oa...@googlegroups.com] On Behalf Of Brian 
Eaton
Sent: Wednesday, 6 May 2009 2:29 PM
To: oauth@googlegroups.com
Subject: [oauth] Re: Confirm callback when getting access token


On Tue, May 5, 2009 at 5:54 PM, Manger, James H
james.h.man...@team.telstra.com wrote:
 The Consumer App includes the Callback URI when obtaining an Access Token,
 instead of including the Callback URI when obtaining a Request Token.

 The Service Provider checks that the Callback URI in the request for an
 Access Token matches the Callback URI to which the authorizing user was 
 redirected.

One interesting aspect of this proposal is that it requires consumers
to reconstruct the exact callback URL used by the service provider.
This is certainly possible, but it can be tricky.

For example:
- what if there is an SSL accelerator that terminates the HTTPS
channel and forwards HTTP?
- what if the consumer is load balanced in such a way that the host
header changes or the port changes?
- what if the consumer uses software that automatically redirects
users to include additional query parameters?
- what if the consumer uses high-level web app development tools that
abstract away notions of URLs and parameters?

It's possible to cope with all of those things, but it requires
different code in different environments.  It takes us farther away
from protocols and libraries that just work.

OpenID RPs are required to verify that the URL in the authn response
matches the receiving URL, but the requirements there are less strict.
 The RP is able to ignore things like protocol or port or query if
they know they are irrelevant (or tricky) in the RPs environment.  We
wouldn't have that flexibility with OAuth, because the consumer has to
to send the URL to the SP for verification.  if the consumer screws it
up, the protocol fails.



--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---



[oauth] Re: Clickjacking OAuth

2009-05-05 Thread Stephen Sclafani

I thought about this solution some more and one issue that came to
mind, which is actually noted in the OAuth spec, is that by
conditioning users to enter their credentials each time they are
redirected from a Consumer site you run the risk of increasing the
potential of phishing attacks. Something to consider.

Stephen Sclafani

On May 6, 12:45 am, Allen Tom a...@yahoo-inc.com wrote:
 Yahoo always requires the user to enter their password (even if the user
 is already signed into Yahoo) before issuing persistent credentials. The
 intent is to verify that the user is actually sitting in front of the
 computer before issuing a persistent credential, to protect against the
 case where the attacker is trying to backdoor a victim's account, when
 the victim left their computer unattended, or forgot to logout.

 A nice side effect of requiring password verifcation is that a potential
 clickjacker would need to phish the user before clickjacking the OAuth
 permissions screen...

 Allen

 Josh Roesslein wrote:
  A simple way to block this attack would be to force the user to login
  each time before displaying the approval page (even if there is a SP
  session cookie). This way the attacker
  can not load the approval page in a frame. They would need the
  password to do so. This does impact the user experience a bit, but
  does solve the issue 100% unless I over looked something.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
OAuth group.
To post to this group, send email to oauth@googlegroups.com
To unsubscribe from this group, send email to oauth+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~--~~~~--~~--~--~---