I\'ve got a node.js REST service running on mongoose and express. I\'m also using merse to get my routing set up.
What I\'d like to achieve now are the following ty
Forget about everyauth. This library is an overkill, imho. Implementing authentication is quite simple actually, follow the schema:
username and password to the server;username and password and checks in DB whether there is a user with that password. If there is no user, just respond with an error;req.session.regenerate and in the callback do req.session.userID = user.id. Express will automatically send the cookie to the user;req.session.userID. If it finds one, then store it in req, i.e. req.user = user;req.user variable is set. If it is, then we are authenticated. And you're done!ad 1+2) To make authentication safe, you should use some cryptography (and/or HTTPS). For example, the password should be held in DB in two parts: salt and hash. salt is generated randomly (at the time of registration) and hash = hash_it(pwd, salt), where hash_it is some hashing algorithm (for example: MD5 or SHA256).
Now client side authentication can be made in several steps (only if you can use JavaScript):
new_salt to the login page (or generate one in JavaScript, there is no need to hide generating algorithm);give me salt for user X and server responds with the salt stored in DB (the salt is public);pwd with salt and then hash the result again with new_salt, store it in variable hpwd;username, hpwd and new_salt to the server;pwd from DB for username, hashes pwd with new_salt and compares the result to hpwd (note: you do not store new_salt).This method is nice, since every time you log in a random (from the external point of view) data flows through net, even though the username and the password is the same.
This is important, because password leak is a serious thing. Not because someone can break your app's account (that's a minor damage, unless you're a bank - but then you wouldn't ask such questions :D ). Mostly because people tend to use the same passwords for multiple sites, including bank accounts.