I wanted to email the list to start gathering some feedback on how we
can improve the OAuth workflow. As we have discussed in the past,
Basic Auth is going to be deprecated at some point in the future for
OAuth and we want to make sure we improve the experience to meet
everyone's needs. I am interested in capturing feedback for both the
web and desktop workflows.
1. What can be improved about the web workflow?
2. What can be improved about the desktop workflow?
3. What other models of distributed auth do you think we could learn
from and what specifically about them?
4. What could we improve around the materials for integrating OAuth
into your application?
We really appreciate your feedback.
Best, Ryan
I think the biggest improvement that can be made is not making the assumption
people are in a web browser environment. Yes, there are workarounds, but they
are kludgey by definition.
If nothing else, the login pages need to be made as *basic* as possible so
that devices such as basic mobile browsers can access them. For example, you
can't sign in to Twitter with Lynx. That sounds dumb, but if Lynx can sign
in, then *anything* can. That's not a problem with OAuth per se, that's a
problem with Twitter's UX. If you can swing that, I bet a lot of problems
can then be easily worked around.
--
------------------------------------ personal: http://www.cameronkaiser.com/ --
Cameron Kaiser * Floodgap Systems * www.floodgap.com * cka...@floodgap.com
-- Greek tailor shop: "Euripedes?" "Yes -- Eumenides?" ------------------------
On Mon, Oct 12, 2009 at 1:01 PM, Ryan Sarver <rsa...@twitter.com> wrote:
>
> 1. What can be improved about the web workflow?
The desktop OAuth flow is pretty good, but the mobile device OAuth
flow is terribly painful. Since Twitter is very mobile focused, having
smooth OAuth flows on as many mobile devices as possible is a win-win
for devs and Twitter. This issue has a lot of interest from other devs
as well:
http://code.google.com/p/twitter-api/issues/detail?id=395 (I
completely forgot that I submitted that issue).
I know there are many mobile app developers that want to stay as far
away from OAuth as possible at the moment. Many are still begging for
Basic Auth source app keys citing that "mobile OAuth provides
unacceptable UX for my app."
> 2. What can be improved about the desktop workflow?
n/a (for me)
> 3. What other models of distributed auth do you think we could learn
> from and what specifically about them?
I am happy to see username/password Basic Auth go away, but I would be
sad to see all methods of Basic Auth unavailable. Lots of other APIs
have "api keys" that users can use to allow access to an api on their
behalf (FriendFeed, Prowl, TweetHook, and some others come to mind
immediately). Each user gets an API Key which allows manipulation of
some aspects of their accounts, but as much as knowing the actual
account password combo. This has a couple of advantages of Basic Auth
and OAuth:
a) If an app starts acting up, the user can revoke/change their
account API key and just update the services that are still relevant
to them to continue working. This isn't quite as nice as "per app"
revokation that OAuth provides, but less "painful" from a user
point-of-view as changing their account login password.
b) Basic Auth is still possible. This means that simple use-cases like
command-line curls, cron jobs, embedded systems, web-browser-less
systems, etc can still interact with the API without having to jump
through the OAuth hoops.
I would suggest that "API Key Auth" should be required to use HTTPS
and disable HTTP access.
my 2 cents,
-Chad
"Each user gets an API Key which allows manipulation of
some aspects of their accounts, but *NOT* as much as knowing the actual
account password combo."
-chad
1. What can be improved about the web workflow?
2. What can be improved about the desktop workflow?
3. What other models of distributed auth do you think we could learn
from and what specifically about them?
4. What could we improve around the materials for integrating OAuth
into your application?
Twitter already has something similar (one-click login):
http://apiwiki.twitter.com/Sign-in-with-Twitter
Some devs like this for the simplicity, some don't because it will
automatically use the "already logged in account" w/o giving the
option to use another account. Whereas most facebook users probably
have only one account, I would guess that a larger percentage of
Twitter users (while still a small percentage) are managing multiple
accounts.
-Chad
Twitter already has something similar (one-click login):
http://apiwiki.twitter.com/Sign-in-with-Twitter
Some devs like this for the simplicity, some don't because it will
automatically use the "already logged in account" w/o giving the
option to use another account. Whereas most facebook users probably
have only one account, I would guess that a larger percentage of
Twitter users (while still a small percentage) are managing multiple
accounts.
-Chad
1. What can be improved about the web workflow?
2. What can be improved about the desktop workflow?
3. What other models of distributed auth do you think we could learn
from and what specifically about them?
4. What could we improve around the materials for integrating OAuth
into your application?
+1.
--
------------------------------------ personal: http://www.cameronkaiser.com/ --
Cameron Kaiser * Floodgap Systems * www.floodgap.com * cka...@floodgap.com
-- Po-Ching Lives! ------------------------------------------------------------
By rebranding the twitter oauth page it gets to a point where you may
as well just ask their user/pass on your own site, and never have them
leave your site/app.
I don't look at oauth as real time over the wire security, though it
helps in that area. I look at it as user education with the goal to
get users to understand not to cross polinate user/pass data to other
sites.
It would come down to users understanding to look at the URL,
something many just do not understand enough to do.
I do not understand all the details of oauth at this point. What I do
know is I've learned when I auth an app I should be looking for a
distinct look and feel at a specific URL.
If that look and feel changes, red flags are raised on my part. I'd
look to the URL, but wonder if I was not being tricked from
TWITTER.COM TO TWlTTER.COM. (those look identical to me, lowercase L
looks a lot like an uppercase I.
From my perspective, oauth needs to go after the OS vendors.
Integration with their underlying systems and API's is the only way
this will gain widespread use that is as secure as it can be for an
end user.
Right now, integration is not tight enough for a user to even
understand what they are gaining from this procedure. I can find 5
Twitter sites right now that ask for me to store a login and pass into
my account, they are not using oauth, and could do what they want with
my account. This just proves users are not understanding this.
Heck, twitters own account settings ask for raw login and password
data to gmail, yahoo, and I believe aol, last I looked.
--
Scott
Iphone says hello.
* On many mobile platforms--even some of the newest ones--copy & paste is
unavailable, and/or users simply do not know how to do it.
* A 7-digit PIN is too long for most users to remember long enough to switch
apps and type it in. I tested 10 people when there was a 6-digit PIN and 6
of them could not remember the PIN long enough to type it in. Only 2 of 10
people tried to write the PIN down before closing the browser the first
time. That means they had to repeat the authorization process. 3 of the 10
people gave up and handed the phone back to me before completing the OAuth
sign-in pricess.
* *All* the users I tested described the OAuth-related parts as the worst
part of my app.
* It is very tempting to embed a browser control into the app and then use
that browser control to allow the user to do the OAuth flow, because often
it isn't easy for users to switch between the standalone web browser and the
Twitter app. However, any app that does this can act as a keylogger and grab
the user's username and password. So, OAuth isn't adding significant
security in this situation.
* OAuth doesn't work well when the user has multiple devices running the
same Twitter client. For example, Nokia smartphone owners often have
multiple Nokia smartphones (often a "work phone" and a "play phone"). If
they install the app on two phones, then whenever they log in on one phone,
they get logged off of the other phone. This wouldn't be so bad, but see
above: these users then have to go through the most-hated part of the
experience all over again. The only way I have found to overcome this:
create a bunch of different "apps," one for each model Nokia releases. But,
this is a poor solution because (a) all apps have to have a unique name, and
(b) I read here that Twitter may limit the number of apps that a developer
can register. Note that the people who review mobile twitter apps are the
ones most likely to have this problem, which sucks, because usually we want
to optimize their experience so they write good reviews. Ideally, there
would be a way for a single app to have multiple tokens at once.
Please feel free to contact me directly if you want any more detailed
feedback.
Regards,
Brian
Letting a mobile/desktop app grab an OAuth token using the user’s username/password is still helpful because then they can store the token instead of the username/password, which is a big deal when there’s no really secure way to store it. Also, if your mobile phone/laptop gets stolen, you can still log in via the Twitter website and revoke access from the apps installed on your phone/laptop. If the app just used basic auth then the only way to revoke access would be to change your password. But, whoever stole your phone/laptop could have changed your password first (if the app was using Basic auth), and you’re locked out of your account.
So, a way to log in with basic auth and grab a OAuth token would can still be useful.
It is even more likely that a malicious app would direct you to a phishing site during the OAuth flow and you wouldn’t even notice since many mobile browsers do not show you the URL and do not implement any anti-phishing UI whatsoever.
In fact, on some phones (especially ones a few years old), you will not even get a warning if the TLS certificate doesn’t match the domain to which you connected. So, you could see the “all secure” and still be getting phished.
Regards,
Brian
This has been brought up before on the oauth mailing list, but a lot
of security folks cringe at the idea. I feel there is not
much of a security loss here since the application running on the
user's computer can already do harm.
I'd like to hear from the Twitter API team on their thoughts of this
idea. It might not be part of the spec, but OAuth
is pretty open to service providers extending it.
Josh
--
Josh