Social Login Buttons Aren't Worth It (2012)
blog.mailchimp.com
blog.mailchimp.com
Our analytics show that many people on mobile and consumer websites do indeed want to use OAuth.
(I've been meaning to do a blog post on this topic...)
Using OAuth is fine and all... but it's not eliminating the customer from having to sign-in still... ie. they are still typing a username and password, just not into your system.
So what are the benefits (both perceived and actual)?
Most people do not log out of Facebook and Google on their devices, so they do not have to sign-in. They just click "Facebook" then "Approve." That's much easier than filling out your email and password -- particularly on a mobile device.
The problem however is that people easily forget what they used to login with, and when they try things like a password reset, we can't really reset their passwords if they used social logins. Or they might forget whether they used google or facebook to login...
So the main problem that I personally have with social logins is that they create fragmentation, and a simple login form becomes a memory-exercise for the user.
If a user forgets the method they used to sign up, we'll still return the right user record to your app.
Be careful implementing this, because it can be a security issue if you're not cautious.
They then try to enter email and password. When it rejects them, they try to reset the password, and get frustrated that the reset password does not work...
We relatively regularly answer support emails and just tell users "It looks like you used your google account to sign in last time, just hit the right button and you'll get in instantly"
I have multiple google accounts because I want separate google identities.
I don't want to merge them together because they're separate accounts for separate purposes, but that's a difficult position to keep because of how absurdly difficult it can be to deal with multiple google accounts. Even though Google supports multiple accounts, their base assumption is that people have exactly one Google account which is exactly one identity which incorporates all of one person.
I've been unable to accept calendar invites sent to my work account because Google Calendar insisted on opening to my personal account when I clicked the link; even if I opened my work calendar using the drop-down, and closed the other window, the link would only open to my personal calendar and then tell me 'you don't have access to this calendar'.
It feels as though the parent poster was asking for Google to understand that one person can have multiple accounts, rather than assuming a 1:1 mapping between the two and behaving as such.
Very few people are going to sign up or log into a business account using a personal facebook or twitter account, and few businesses are going to have a lot of people with direct access to their facebook page and twitter feeds.
"We can't locate your order under that email address. No, not that username either, keep guessing..."
We have found it's best to either not force customers into account creation at all, or make it super easy (ie. a checkbox "yes" and password prompt on the checkout page only).
I have a hotmail account I use for all my professional MS related needs that has become my business social sign-on account. In general, there's room for innovation here. Google really screwed the pooch when they decided Plus Circles were an internal organizational tool instead of a public facade.
This is an old pattern. The reason for it seems to have been forgotten: If you tell the user they got the user name wrong, you're leaking information. They can now try and guess valid account names. Of course, one could argue that this may not matter in their specific case, but it does in some.
The parable of chesterton's fence comes to mind: http://en.wikipedia.org/wiki/Wikipedia:Chesterton%27s_fence
edit: Ah, I really need to overcome that instinct of jumping to the comments whenever I notice something. Looks like they addressed this.
Regarding the probability of attack, people should monitor the number of different usernames attempted by a session/IP not just failed attempts against individual accounts. Otherwise it is very easy to try thousands of username combinations with a selected weak password.
"But after some further consideration, we decided that it was a false risk, as the username reminder form already tells you if a username exists"
Emails are more personal and might be easier to link back to personal information. Thus, confirming that there is an associated account with a given email is also a privacy leak, because maybe people don't want to reveal that they have an account on a specific website.
And as they say in the article, that information is already leaked by the password reset process: "No email by that name available".
But after some further consideration, we decided that it
was a false risk, as the username reminder form already
tells you if a username exists, and is not a significant
security risk for the bajilions of sites that have them.
Oh, damn i didn't realize bajilions of sites do this and yet are so secure. Next time, a better response i hope: "but instead we decided allow for error differentiation while also increasing the controls on the number of failed logins allowed and alerts to security staff in such cases."<pulls out brute force scripts>
PS. just never let anyone from marketing, design or management discuss your security publicly without review.
On a personal level, I use social sharing sign up and login buttons almost 80% of the time in place of regular buttons, and am very OK with doing that from a security perspective personally.
On the negative side, social logins contaminate your site with someone else's brand, and take away some of your control (what do you do if Facebook decides to ban the user).
As always, look at your users and their usage and try to make the decision that is best for your site. There is no absolute right or wrong here.
Funnily, I agree with the conclusion and I'm using mailchimp extensively.
Most sites I've seen accept email or username in the login field. I'm pretty sure that was the default behavior for Django last time I looked into it (years ago).
User/pass guessing by crackers can be solved with passphrases. Don't let registrants get by with a crackable password. Then remind us at the login screen that your site wants a passphrase (you can even flash me something that reminds me of the registration prompt if I forget my passphrase).
Very user-friendly, but not exactly secure. Each bit of information you volunteer to unauthorized user reduces the work the attacker has to do to gain access.
As for "how many expected" - limiting the password length is not exactly a good idea in any case.
MailChimp is a business site. Twitter and Facebook are personal mediums. There's a mismatch. As a manager, I wouldn't want my employees using personal mediums for business (I have no control), and conversely, as an employee, I don't want to be logged into Facebook from work, or share my Facebook information with businesses. I would never log in to MailChimp with either of those.
On the other hand, we use Google Apps for Business. I use that as a common login for everything that supports it. Most businesses use Google for business in some form (if nothing else, Google Docs or Youtube or similar), so even if not Google Apps, there's already some integration.
Single sign-on is much more secure than either managing 100 different passwords, or having 100 different businesses managing my password. It's much more convenient. It's just a clear win.
a) When you can't use an email in the username field.
b) When sites don't tell you which one between username and password is wrong (I don't care what security experts say, I would rather receive more spam, than be constantly frustrated by not knowing which one was wrong in every website I browse once in a blue moon).
c) When the username/password has imposed constraints like (must have lower, upper, number, special character, and the blood of a virgin).
d) When the site doesn't hint you about the username/password constraints that were imposed when you registered.
e) When I don't know which one of my N possible passwords I used (this one is my own fault, and this is the only issue I expect to have).
- when copy/paste is disabled via javascript
- when javascript is required for the form to work
For example if I use Mailgun, a reputable service with good infrastructure and a very high rate of delivery. That still doesn't prevent random b.s. around emails not being delivered immediately due to any number of issues. If the user is left waiting for even more than a matter of seconds, they're going to give up / get annoyed.
If I can guarantee instant email delivery, essentially, I'd probably jump to this auth method.
Also it's not always the case that a user has access to email when he's trying to log in to your app.
I love that comparison.
That's partly why I'm biased towards Google, since they have fairly neutral associations. People don't usually post anything embaressing to google, and so wouldnt be as threatened with a company wanting access to their Google account.
On the other hand, more options are more distractions. Email and password is so simple and well understood that it just works.
i set up a pinterest style pig sharing website for fun, and i really enjoyed it when i added the fb login option
Using something other that Twitter makes no sense for us.
In fact -- their findings match almost exactly what my company has discovered.