To avoid having the user to login every time his session expires, I want to implement a token based authentication system.
My scheme works like this:
- Send the user login (send name + password) via
$.ajax()to ahttpsURI - Create a token via
$token = bin2hex(openssl_random_pseudo_bytes(16)); - Save
$token,useridand date in a database (only accessible by SSL) - Echo the
$tokenanduseridto the client - Save the
$tokenanduseridin html localStorage on the client - When doing an
$.ajax()from client always senduseridand$tokenas POST - Serverside, match the provided
$tokenand see if it is still valid (date not expired). - If it's alright, continue to deliver the requested material
Can you analyze my scheme?
Many people advise against implementing custom authentication processes, as they are often vulnerable to attacks. This makes me suspect that my approach may also have flaws. Can you reveal these flaws to me?