Hello all,

Totally right, we just deployed the change. The method now calls the callback with the request token and that token can be exchanged for the existing access token. I have been away from email getting the fix tested and deployed or I would have responded sooner. This fixes the major issue (token guessing) there are still a few side issues that we need to hash out. The main ones being:

• As a convenience we provide screen_name and user_id … these could be changed on a URL via a man-in-the-middle. An easy fix it to take away the convenience and go back to making people call verify_credentials. In all likelihood we'll end up having to do that.

• A man-in-the-middle could change any other URL parameters during the redirect back to the application. That URL information is not signed in any way.

• This all seems to be very close to what OpenID offers. I've been siding with Eran [1] but we may find compelling reasons to add OpenID support in the future. We simply don't have the man-power to review what's needed for OpenID and implement it right now.

Thanks;
  — Matt Sanford / @mzsanford

[1] - http://www.hueniverse.com/hueniverse/2009/04/twitter-connect.html

On Apr 17, 2009, at 10:58 AM, djMax wrote:


You're such a tease!  I'm assuming that it's going to change by you
returning a request token and us exchanging it for the previous access
token like usual...  I understand you're probably not going to respond
to that.

(as an aside, we've implemented this in dev with a fallback so that if
the authenticate fails or returns unusable results, we just try
authorize instead)

On Apr 17, 11:10 am, Matt Sanford <m...@twitter.com> wrote:
Hello again,

     Let me be more specific that my previous mails. This will be
changing. Let me emphasize that:

⚠ The new authenticate method will be changing in a way that breaks
the current behavior.

At this point it is only a matter of time until I can get the new
code reviewed and deployed. I would suggest people hold off on the
authenticate method for the moment. I'll send more details once the
code is reviewed and we're sure it won't be delayed for some reason.

Thanks;
   — Matt Sanford

On Apr 17, 2009, at 06:26 AM, djMax wrote:



I believe this flow is not secure (or not "as" secure) because that
URL that is "transmitted" via the browser is permanently reusable by
anyone to login to my service as that twitter user.  In the
authorization flow, I don't believe any such URL ever goes through the
browser.

So basically I think the Twitter folks need to change the last step in
the flow to be an exchange of a request token to the original access
token by the app on the backend...

On Apr 17, 8:01 am, Dossy Shiobara <do...@panoptic.com> wrote:
On 4/17/09 2:51 AM, Abraham Williams wrote:

They correct flow is:
1) get request token from twitter.
2) send user to twitter with oauth_token for the first time.

Send the user to Twitter how, though?  oauth/authorize?  How do you
know
if this is the user's first time or not?

3) user returns and app uses request token to get user access token
which get stored.

This is fine, unless the user returns with an access token and not
the
original request token.  This is what currently happens with
oauth/authenticate.

4) user come back to site to sign in and is not signed in.
5) site gets request token from twitter.
6) user is sent to twitter with request oauth_token and are
automatically redirected back to site.
7) access oauth_token is returned with user which can be matched
with
oauth_token_secret stored in the database.

This would work fine, assuming in step #2 you had some way of knowing
whether a Twitter user had never previously OAuth authorized your
app.

--
Dossy Shiobara              | do...@panoptic.com |http://dossy.org/
Panoptic Computer Network   |http://panoptic.com/
   "He realized the fastest way to change is to laugh at your own
     folly -- then you can let go and quickly move on." (p. 70)

Reply via email to