Launchcode-auth is a set of Express routes that can help you quickly set up an authentication server supporting social authentication for Google, Facebook and Windows Live users, as well as users registering with an e-mail address and password. Launchcode-auth also includes a seed application and module for AngularJS projects that provides JWT-based authentication and makes it very quick to get an AngularJS-based application up and running with support for social and e-mail authentication.
What are we trying to accomplish?
- Make it very easy to get an AngularJS application up and running with social and e-mail authentication built in
- Make it extremely easy for your potential users to sign up to use your application
- Enable the association of multiple types of sign-on with a single account. For example, a user should be able to sign up for your service with their Facebook account, link their Google account and sign in with that or set up a password and then use their e-mail address and password to sign in.
Features of launchcode-auth include the following:
- Social authentication support for Google, Facebook and Microsoft WindowsLive accounts (via passport.js)
- E-mail & password authentication support
- Client/Server sessions maintained through JSON Web Tokens
- Stateless server (with the exception of handling callbacks from the social authentication providers)
- Normalization of accounts where e-mail address is the same - that is, creation of a new account via e-mail/password or social mechanism where the e-mail address is already in use will be detected and the user prompted to sign into their existing account.
- Linking between accounts using the same primary e-mail address
- Password changes and recovery handled through e-mail notifications using Mandrill
- User account info stored
Plans for the near future
- Add additional configuration options for data persistence so that MySQL, Postgres and other persistence layers can be used, in addition to the existing Firebase persistence.
Hey, why can't I use Twitter or Yahoo as authentication mechanisms with this when Passport.js supports them?
While our initial intent included support for these two networks as well, their APIs do not provide access to the user's e-mail address, leaving us without a key for linking accounts that belong to the same user. Disappointed that we would have to make the sign-up process more difficult for users signing up using Twitter or Yahoo! (by adding an extra step to collect and validate and e-mail address) we looked into the penetration of these two services in the realm of social authentication and found that they significantly trail not only Facebook and Google, but also WindowsLive, and thus the additional support wasn't warranted, at least in this early release.
A little more detail...
Twitter Unfortunately, Twitter does not provide access to e-mail addresses associated with the account and so accounts created via Twitter could not be linked with other authentication mechanisms without forcing through a more complicated sign-up process, so we've elected to leave it out. Yahoo Similar to Twitter, Yahoo! doesn't provide the user's e-mail address as a part of their information (unless the user grants your application full-write access to their profile!) and so we've left out support for this kind of authentication, again to ensure the sign-up process is as simple as possible.