title: JWT authentication & refresh token implementation
body: <p>I am developing a REST application with its own authentication and authorization mechanism. I want to use JSON Web Tokens for authentication. Is the following a valid and safe implementation?</p>
  
  <ol>
  <li>A REST API will be developed to accept username and password and do the authentication. The HTTP method to be used is POST so that there is no caching. Also, there will be SSL for security at the time of transit</li>
  <li>At the time of authentication, two JWTs will be created - access token and refresh token. Refresh token will have longer validity. Both the tokens will be written in cookies, so that they are sent in every subsequent requests</li>
  <li>On every REST API call, the tokens will be retrieved from the HTTP header. If the access token is not expired, check the privileges of the user and allow access accordingly. If the access token is expired but the refresh token is valid, recreate new access token and refresh token with new expiry dates (do all necessary checks to ensure that the user rights to authenticate are not revoked) and sent back through Cookies</li>
  <li>Provide a logout REST API that will reset the cookie and hence subsequent API calls will be rejected until login is done.</li>
  </ol>
  
  <p>My understanding of refresh token here is:</p>
  
  <p>Due to the presence of refresh token, we can keep shorter validity period for access token and check frequently (at the expiry of access token) that the user is still authorized to login.</p>
  
  <p>Please correct me if I am wrong.</p>