Show HN: DailyCred: User Accounts as a Service
dailycred.com
dailycred.com
A word of caution on this as a business, though: this is going to be brutal. You're selling a service that every competent web developer can build. You can save them time -- but not a huge amount of time, especially compared to the prepackaged user registration apps that already exist for common web frameworks. And the customers that grow really big will have strategic reasons to want to move off of your service, in addition to any cost-saving reasons. Maybe over time you can grow into something like http://www.gigya.com/ , which powers registration & social/gamification components for mainly content sites. But to do that you'll need to find a market of people who aren't developers, for whom your thing is a real enabler, not just a time saver.
TL;DR: Unless you're building something technically complex enough that everyone realizes they can't come close to replicating it, don't build stuff for developers. We're stingy and we think we can do anything ourselves in a weekend.
Despite being chummy with the founders, I basically said something similar about http://pusher.com/ when it came out. D'oh.. and it's going like gangbusters. I was similarly pessimistic about Heroku too (managing a VPS is eassssy!) but.. no longer. People want to outsource boring infrastructure no matter how trivial it is to implement.
I'd argue that most of the folks that use Pusher don't do so in a way that's mission critical to their application (there are a few exceptions). If they did, they would scale up to a certain point where they'd want to get off of Pusher and on to a self-hosted push server.
That's precisely where Pusher fell off the horse for me, so our company created an open source streaming service, http://firehose.io/.
That said, would anybody be interested in a hosted version of Firehose? The "end-game" of a hosted service would always be to run the open source version of this service on your very own servers, and stop paying the middleman tax.
You say this as if it were a bad thing. I like outsourcing things that, in an emergency, I can easily replace.
What I hate is buying a service that has no competition (so I can't easily switch to a different vendor) and that would take hundreds of hours to duplicate (so I can't easily switch to my own implementation.)
This is true, but nobody ever does. Seems like most of the "Show HN" links we see here require Twitter and/or Facebook for login and offer nothing else.
An OAuth provider that's JUST an OAuth provider is pretty welcome to me.
As people are realizing that lot of these websites do not follow good security when it comes to user storage, slowly the trend might be to use standard third party systems. Agreed that most users do not know what bcrypt means. But most users do care if their passwords get hacked becuase it was easy to do so (clear text storage etc.).So yes, you can build a user system easily but can you make it trustworthy, secure ? So again, I think this idea probably sounds a little crazy in 2012 but you never know 5 years down the road.
I come from a SaaS background and agree with everything you've said. We do have a roadmap that we believe will overcome this challenge however. In the interest of launching early and often, we decided our MVP was to focus on being a white-labeled OAuth provider. But we do want a way for people to tip their toe in the water quickly and easily.
Also, something about schlep work and basing businesses on it that PG once said in an essay or another.
Its not about whether you can build it, of course you can. Its about choosing to build things that solve your core problem. Time is money, and your money is best spent on the original aspects of your idea that do not already exist.
I'm confused. Surely there is still a token or something for the authenticated session used on the original site. Wouldn't this leave the user's session open to hijacking if they didn't implement https on their site too?
I understand this may be less of a concern for some applications, but it seems bad practice to spread the idea that https is only important for an actual login step.
For example, this statement "Credentials are stored as salted hashes using bcrypt," means passwords are being passed to this provider, so you better trust them to not be snooping passwords all the time. Also, bcrypt is questionable http://www.unlimitednovelty.com/2012/03/dont-use-bcrypt.html Finally, it looks like your server is talking to them via SSL through a library https://github.com/hstove/omniauth-dailycred#ssl-error. If that's the case then when you try to do this with some SSL clients they don't validate the cert. Take Python's, where you have to do a backport http://pypi.python.org/pypi/backports.ssl_match_hostname/ to get that enabled.
I found these problems in just scanning through some links off that first page. Seems like this crowd would be able to pull up more, and definitely shouldn't just saying "Oh SSL, well then that whole thing is totally solid."
A lot of our friends have created startups that don't offer email and password, and just use Twitter or Facebook for user accounts. At our previous company, we found a large majority of users still prefer to use email and passwords. So, we decided to try and make email and passwords as easy to use as Facebook Connect.
Feedback is welcome!
Feedback: I couldn't find a pricing page nor a call to action button to (pay and) start using your service.
edit: I decided to take an another look and I found the pricing section scrolling to the bottom. Why not a link in the top nav bar?
While it's currently only in German, it already uses I18n and has a nice coverage in rspec and cucumber.
see https://github.com/rmoriz/piraten_login#readme and https://piratenlogin.de/
Already implemented (but not documented yet) is an XMPP push notification API that consumers can use to send notifications (using Blather, EventMachine, Redis PubSub, Foreman). Also several roles (scopes) are implemented to allow everything from "per-consumer-app-uid", "global uid" up to push messaging (for people interested in privacy)
An Omniauth plugin to implement PiratenLogin is available here (thanks to the awesome doorkeeper gem):
- how do you hash it? (you do, right?)
- how is it replicated? (zones? geo?)
- how is it backed up?
- who can access the data?
- which providers hold the data?
- what are your disaster recovery plans and guarantees?
- what's your backups retention policies?
... and similar things. There are either no technical details about the storage itself, or they're not easily available (couldn't find those answers)
- how do you hash it? (you do, right?)
In the frontpage: "Credentials are stored as salted hashes using bcrypt"
- which providers hold the data?
"DailyCred is securely hosted by Amazon AWS."
Someone else responded to some of your questions. Here is some more color: Only employees can view the data. Authenticated admins can view their own data (but not password hashes yet -- we want to use MFA for those requests to export). Passwords are never stored. We use the industry standard BCrypt (salted hash). We're using DynamoDB for storage. Our primary location is N. Virginia. We use MFA on AWS to secure everything (http://aws.amazon.com/mfa/). We backup several times a day and store backups in different regions on similarly secured S3 (uses the same MFA). We have tested the backup and migrated to another data center entirely (AWS Oregon). We are also 100% https, using hsts, and all of our cookies are HTTP Only and set to secure (http://en.wikipedia.org/wiki/HTTP_cookie#Secure_and_HttpOnly). I think this answers most of your questions. Happy to answer any followups as well.
Just because authentication itself is secured over SSL doesn't make the whole site secure enough. For some things, it might suffice, but it's not something you should publicly recommend IMHO.
It'd be curious to see how this will evolve and develop though, that's for sure.
We're building a complete export, and use BCrypt for password hash storage. This means you can migrate off our service at any time (unlike Facebook & Twitter).
.001*10000 = $10/month
Plus, it is unclear too. It says Traction package is for additional users, so my expectation is that it would be $9/Mo, not $10.
Thanks for the feedback all -- we're probably going to throw in a calculator for people who want a quick and easy answer about pricing for their service.
I like the pay as you go pricing model over flat rate. Reminds me of amazon.
When I'm signing in/up on a site that uses DailyCred, it should clearly say that it is using DailyCred.
I'm assuming that if I have an account with DailyCred, I can use the same account with other sites that use DailyCred.
Thanks for doing this, BTW. I was JUST working on an MVP and dreading writing the user auth part. I'd even been pricing SSL certs!
I love the built-in SSL. --My only real concern, and I'm sure reviewing the docs further will help me understand more, is how I mirror users on my app so that I don't have to query the REST API for user accounts.-- EDIT: Looks like it's automatic. Even cooler.
And we're following Facebook Connect's OAuth flow exactly -- so storage of the user locally on your service would be identical if you've already implemented FB OAuth.
The context isn't clear if this means my OAuth credentials or my Facebook profile information but you shouldn't invite the question that the app owns my Facebook data or that they can access it when I'm not online.
Even when they are using it as a simple authentication mechanism (The scenario that lots of "OAuth2 vs OpenID" posts, blogs and tutorials say is where you should be using OpenID )
Since this site is also using OAuth2 instead of OpenID can I ask for your reasoning?
My impression is that most people use OAuth-type authentication schemes not because they are worried about the complexities of user management, but rather that they want to gain access to the resources that those enable. In the case of Facebook and Twitter, authenticating with them provides access to new distribution channels, which is really the entire reason they are interesting in the first place.
I genuinely hope Dailycred takes off and be around for a long time to come.
Can we add custom data columns like "roles"?