Skip to content

[Feature]: Implement Refresh Token Rotation for Secure Session Management #286

Description

@AYUSH-P-SINGH

Feature/Project Proposal

Enhance the current JWT authentication system by introducing refresh token rotation and secure session management. The implementation should issue short-lived access tokens along with long-lived refresh tokens, rotate refresh tokens after each successful refresh request, and revoke invalid or reused tokens. This will improve authentication security while providing a smoother user experience through persistent sessions.

Problem Statement

The current authentication system generates a single JWT with a 7-day expiration and returns it to the client after login. There is no refresh token mechanism, token rotation, or session management, requiring users to log in again once the token expires. Additionally, if a long-lived JWT is compromised, it remains valid until expiration, increasing the risk of unauthorized access.

Proposed Solution

Implement refresh token rotation to improve authentication security and session management.

Suggested implementation:
Generate both a short-lived access token and a long-lived refresh token during login.
Store refresh tokens securely (preferably hashed) in the database.
Add a dedicated endpoint (e.g., POST /api/auth/refresh) to issue new access tokens.
Rotate the refresh token whenever it is used by invalidating the previous one and issuing a new one.
Add a logout endpoint that revokes the stored refresh token.
Reject expired, revoked, or reused refresh tokens.

Alternatives Considered

No response

Benefits

Improves overall authentication security.
Reduces the impact of stolen or leaked access tokens.
Enables seamless user sessions without frequent logins.
Aligns the authentication flow with modern JWT security best practices.
Provides a scalable foundation for supporting multiple user sessions and devices in the future.

Priority

Medium

Additional Context

The current implementation issues a single JWT with a 7-day expiry during login and does not expose a refresh endpoint or maintain refresh tokens. Adding refresh token rotation would make the authentication flow more secure while remaining backward compatible with the existing JWT-based architecture.

Checklist

  • I have searched existing issues and discussions before creating this request.
  • I am willing to work on this feature if it is approved.

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions